Skip to content
Snippets Groups Projects
Commit 36ccddd1 authored by Mattia Mancini's avatar Mattia Mancini
Browse files

OSB-28: speed up latest observation controller and removed unuseful filtering of the data

parent 514acf7a
No related branches found
No related tags found
2 merge requests!89Monitoring maintenance Epic branch merge,!1Resolve OSB-13 "Monitoringmaintenance "
......@@ -331,7 +331,7 @@ class ControllerLatestObservations(APIView):
return Response(status=status.HTTP_406_NOT_ACCEPTABLE,
data='Please specify both the start and the end date: %s' % (e,))
rtsm_observation_entities = RTSMObservation.objects.order_by('-start_datetime').filter(
rtsm_observation_entities = RTSMObservation.objects.filter(
start_datetime__gte=self.from_date)
for group in self.station_group:
if group is not 'A':
......@@ -342,7 +342,7 @@ class ControllerLatestObservations(APIView):
for rtsm_observation_entity in rtsm_observation_entities.values('observation_id',
'start_datetime',
'end_datetime'). \
distinct():
distinct().order_by('-observation_id'):
observation_payload = OrderedDict()
observation_payload['observation_id'] = rtsm_observation_entity['observation_id']
......@@ -351,18 +351,16 @@ class ControllerLatestObservations(APIView):
rtsm_list = RTSMObservation.objects.filter(
start_datetime__gte=self.from_date,
observation_id=rtsm_observation_entity['observation_id']). \
order_by('-start_datetime')
observation_id=rtsm_observation_entity['observation_id'])
unique_modes = [item['errors__mode'] for item in rtsm_list.values('errors__mode').distinct()]
observation_payload['mode'] = unique_modes
observation_payload['total_component_errors'] = 0
station_list = rtsm_list.values('station').distinct()
station_involved_list = list()
for station in station_list:
rtsm_entry_per_station = rtsm_list.filter(station__pk=station['station']).first()
for rtsm_entry_per_station in rtsm_list.order_by('station__name'):
station_summary = OrderedDict()
station_summary['station_name'] = rtsm_entry_per_station.station.name
......@@ -376,9 +374,6 @@ class ControllerLatestObservations(APIView):
observation_payload['total_component_errors'] += station_summary['n_errors']
station_involved_list = sorted(station_involved_list,
key=lambda rtsm_per_station: rtsm_per_station['n_errors'],
reverse=True)
observation_payload['station_involved'] = station_involved_list
response_payload.append(observation_payload)
......@@ -388,8 +383,7 @@ class ControllerLatestObservations(APIView):
lambda station_entry:
len(station_entry['total_component_errors']) > 0,
response_payload)
response_payload = sorted(response_payload, key=lambda item: item['total_component_errors'],
reverse=True)
return Response(status=status.HTTP_200_OK, data=response_payload)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment