From 36ccddd1b1dfac76ee8dd7b69a916d713de0349e Mon Sep 17 00:00:00 2001 From: Mattia Mancini <mancini@astron.nl> Date: Wed, 17 Oct 2018 17:01:29 +0000 Subject: [PATCH] OSB-28: speed up latest observation controller and removed unuseful filtering of the data --- .../monitoringdb/views/controllers.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py b/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py index 772eda36357..08008cc6689 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py @@ -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) -- GitLab