From 473d46a16a23b5bc41a9f368b69e79188a2cad16 Mon Sep 17 00:00:00 2001 From: Mattia Mancini <mancini@astron.nl> Date: Mon, 12 Nov 2018 14:34:35 +0000 Subject: [PATCH] OSB-32: changed query parameter name, and configured the controller to reply correctly to request --- .../monitoringdb/views/controllers.py | 72 ++++++++++--------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py b/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py index d2b679db504..dc4b0bd734f 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/views/controllers.py @@ -124,7 +124,7 @@ class ControllerStationOverview(ValidableReadOnlyView): errors_only = 'true' n_station_tests = 4 n_rtsm = 4 - errors_type = [] + error_types = [] fields = [ coreapi.Field( @@ -160,7 +160,7 @@ class ControllerStationOverview(ValidableReadOnlyView): description='displays or not only the station with more than one error') ), coreapi.Field( - "errors_type", + "error_types", required=False, location='query', type=parse_array, @@ -193,8 +193,8 @@ class ControllerStationOverview(ValidableReadOnlyView): station_test_payload = OrderedDict() component_errors = station_test.component_errors selected_component_errors = component_errors - if(self.errors_type): - selected_component_errors = component_errors.filter(type__in=self.errors_type) + if(self.error_types): + selected_component_errors = component_errors.filter(type__in=self.error_types) station_test_payload[ 'total_component_errors'] = selected_component_errors.count() station_test_payload['start_datetime'] = station_test.start_datetime @@ -229,13 +229,14 @@ class ControllerStationOverview(ValidableReadOnlyView): unique_modes = [item['mode'] for item in rtsm.errors_summary.values('mode').distinct()] rtsm_payload['mode'] = unique_modes - rtsm_payload['total_component_errors'] = rtsm.errors_summary.count() - - errors_summary = OrderedDict() selected_rtsm_errors = rtsm.errors_summary - if(self.errors_type): - selected_rtsm_errors = rtsm.errors_summary.filter(error_type__in=self.errors_type) + if(self.error_types): + selected_rtsm_errors = rtsm.errors_summary.filter(error_type__in=self.error_types) + + rtsm_payload['total_component_errors'] = selected_rtsm_errors.count() + + errors_summary = OrderedDict() errors_summary_query = selected_rtsm_errors.values('error_type').annotate( total=Count('error_type')) @@ -262,7 +263,7 @@ class ControllerStationTestsSummary(ValidableReadOnlyView): station_group = 'A' errors_only = 'true' lookback_time = 7 - errors_type = [] + error_types = [] fields = [ coreapi.Field( @@ -289,7 +290,7 @@ class ControllerStationTestsSummary(ValidableReadOnlyView): minimum=1) ), coreapi.Field( - "errors_type", + "error_types", required=False, location='query', type=parse_array, @@ -315,19 +316,19 @@ class ControllerStationTestsSummary(ValidableReadOnlyView): for station_test in station_test_list: station_test_payload = OrderedDict() - component_errors = station_test.component_errors station_test_payload['station_name'] = station_test.station.name selected_component_errors = station_test.component_errors - if(self.errors_type): - selected_component_errors.filter(type__in=self.errors_type) + if(self.error_types): + selected_component_errors = selected_component_errors.filter(type__in=self.error_types) + station_test_payload[ - 'total_component_errors'] = station_test.component_errors.count() + 'total_component_errors'] = selected_component_errors.count() station_test_payload['date'] = station_test.start_datetime.strftime('%Y-%m-%d') station_test_payload['start_datetime'] = station_test.start_datetime station_test_payload['end_datetime'] = station_test.end_datetime station_test_payload['checks'] = station_test.checks - component_errors_summary = component_errors. \ + component_errors_summary = selected_component_errors. \ values('component__type', 'type').annotate( total=Count('type')).order_by('-total') component_errors_summary_dict = OrderedDict() @@ -359,7 +360,7 @@ class ControllerLatestObservations(ValidableReadOnlyView): station_group = 'A' errors_only = 'true' - errors_type = [] + error_types = [] fields = [ coreapi.Field( @@ -386,7 +387,7 @@ class ControllerLatestObservations(ValidableReadOnlyView): description='select rtsm from date (ex. YYYY-MM-DD)') ), coreapi.Field( - "errors_type", + "error_types", required=False, location='query', type=parse_array, @@ -417,8 +418,8 @@ class ControllerLatestObservations(ValidableReadOnlyView): .annotate(total=Count('errors_summary__error_type')) \ .order_by('observation_id', 'station__name') - if self.errors_type: - errors_summary = errors_summary.filter(errors_summary__error_type__in=self.errors_type) + if self.error_types: + errors_summary = errors_summary.filter(errors_summary__error_type__in=self.error_types) response = dict() for error_summary in errors_summary: @@ -467,7 +468,7 @@ class ControllerStationTestStatistics(ValidableReadOnlyView): description = "Statistical summary of both or either the station test and RTSM" station_group = 'A' test_type = 'B' - errors_type = [] + error_types = [] fields = [ coreapi.Field( @@ -510,7 +511,7 @@ class ControllerStationTestStatistics(ValidableReadOnlyView): description='averaging interval in days') ), coreapi.Field( - "errors_type", + "error_types", required=False, location='query', type=parse_array, @@ -530,9 +531,9 @@ class ControllerStationTestStatistics(ValidableReadOnlyView): component_errors = component_errors.filter(station_test__station__type=station_group) rtsm_summary_errors = rtsm_summary_errors.filter( observation__station__type=station_group) - if self.errors_type: - component_errors = component_errors.filter(type__in=self.errors_type) - rtsm_summary_errors = rtsm_summary_errors.filter(error_type__in=self.errors_type) + if self.error_types: + component_errors = component_errors.filter(type__in=self.error_types) + rtsm_summary_errors = rtsm_summary_errors.filter(error_type__in=self.error_types) station_test_results = [] rtsm_results = [] @@ -584,9 +585,9 @@ class ControllerStationTestStatistics(ValidableReadOnlyView): rtsm_summary_errors = rtsm_summary_errors.filter( observation__station__type=station_group) - if self.errors_type: - component_errors = component_errors.filter(type__in=self.errors_type) - rtsm_summary_errors = rtsm_summary_errors.filter(error_type__in=self.errors_type) + if self.error_types: + component_errors = component_errors.filter(type__in=self.error_types) + rtsm_summary_errors = rtsm_summary_errors.filter(error_type__in=self.error_types) if test_type in ['S', 'B']: station_test_results = component_errors. \ @@ -667,6 +668,7 @@ class ControllerAllComponentErrorTypes(ValidableReadOnlyView): data = [item['type'] for item in ComponentError.objects.values('type').distinct()] return Response(status=status.HTTP_200_OK, data=data) + class ControllerStationComponentErrors(ValidableReadOnlyView): description = "Provides a summary per station of the component errors" # required parameters @@ -675,7 +677,7 @@ class ControllerStationComponentErrors(ValidableReadOnlyView): to_date = None # optional parameters test_type = 'B' - errors_type = [] + error_types = [] fields = [ coreapi.Field( @@ -707,7 +709,7 @@ class ControllerStationComponentErrors(ValidableReadOnlyView): ) ), coreapi.Field( - "errors_type", + "error_types", required=False, location='query', type=parse_array, @@ -726,7 +728,7 @@ class ControllerStationComponentErrors(ValidableReadOnlyView): .filter(start_datetime__gte=self.from_date, end_datetime__lte=self.to_date) - failing_component_types = station_tests.distinct('component_errors__component__type').values_list('component_errors__component__type') + failing_component_types = station_tests.distinct('component_errors__component__type').exclude(component_errors__component__type__isnull=True).values_list('component_errors__component__type') for failing_component_type in failing_component_types: failing_component_type = failing_component_type[0] @@ -743,8 +745,8 @@ class ControllerStationComponentErrors(ValidableReadOnlyView): test_summary['component_errors'] = component_errors_dict component_errors = station_test.component_errors\ .filter(component__type=failing_component_type) - if self.errors_type: - component_errors = component_errors.filter(type__in=self.errors_type) + if self.error_types: + component_errors = component_errors.filter(type__in=self.error_types) for component_error in component_errors: component_id = component_error.component.component_id @@ -855,8 +857,8 @@ class ControllerStationComponentErrors(ValidableReadOnlyView): 'stop_frequency', 'percentage', 'error_type', 'count', 'rcu') - if self.errors_type: - component_errors = component_errors.filter(error_type__in=self.errors_type) + if self.error_types: + component_errors = component_errors.filter(error_type__in=self.error_types) for component_error in component_errors: component_id = component_error['rcu'] details = dict(percentage = component_error['percentage'], -- GitLab