diff --git a/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py b/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py index c634c9f5ade5caa3b101ed98d9bb9731e11e914c..8632e83b704d1df71eeaed3c1839ed3572f4bc12 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py @@ -19,10 +19,26 @@ class RTSMObservation(models.Model): samples = models.IntegerField(default=None, null=True) +class RTSMErrorSummary(models.Model): + rcu = models.SmallIntegerField(default=None, null=True) + mode = models.SmallIntegerField(default=None, null=True) + observation = models.ForeignKey(RTSMObservation, related_name='errors_summary', on_delete=models.CASCADE) + + error_type = models.CharField(max_length=10) + start_frequency = models.FloatField(default=None, null=True) + stop_frequency = models.FloatField(default=None, null=True) + time = models.DateTimeField() + + class Meta: + managed = False + db_table = 'monitoringdb_rtsmerror' + + class RTSMError(models.Model): rcu = models.SmallIntegerField(default=None, null=True) mode = models.SmallIntegerField(default=None, null=True) observation = models.ForeignKey(RTSMObservation, related_name='errors', on_delete=models.CASCADE) + error_type = models.CharField(max_length=10) start_frequency = models.FloatField(default=None, null=True) stop_frequency = models.FloatField(default=None, null=True) @@ -30,3 +46,20 @@ class RTSMError(models.Model): bad_spectrum = ArrayField(models.FloatField()) average_spectrum = ArrayField(models.FloatField()) + def __str__(self): + return self.__unicode__() + + def __repr__(self): + return self.__unicode__() + + def __unicode__(self): + return '%s - MODE %d, FROM %f MHz TO %f MHz RCU=(%d): %s' % (self.time, + self.mode, + self.start_frequency, + self.stop_frequency, + self.rcu, + self.error_type,) + + class Meta: + managed = True + db_table = 'monitoringdb_rtsmerror' diff --git a/LCU/Maintenance/DBInterface/monitoringdb/serializers/rtsm.py b/LCU/Maintenance/DBInterface/monitoringdb/serializers/rtsm.py index d86e41a65de7666f6499d82dce6a2ec97d2b84a0..749d9b03c20ba59b78963846655562bd4f566ad6 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/serializers/rtsm.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/serializers/rtsm.py @@ -19,14 +19,18 @@ class RTSMErrorSerializer(serializers.ModelSerializer): class RTSMErrorSummarySerializer(serializers.ModelSerializer): samples = serializers.IntegerField(source='observation.samples', read_only=True) + start_time = serializers.DateTimeField(source='observation.start_time', read_only=True) + end_time = serializers.DateTimeField(source='observation.start_time', read_only=True) + observation_id = serializers.IntegerField(source='observation.observation_id', read_only=True) + id = serializers.IntegerField() class Meta: - model = RTSMError - exclude = ['average_spectrum', 'bad_spectrum'] + model = RTSMErrorSummary + fields = '__all__' class RTSMObservationSerializer(serializers.ModelSerializer): - errors = RTSMErrorSummarySerializer(many=True) + errors_summary = RTSMErrorSummarySerializer(many=True) class Meta: model = RTSMObservation diff --git a/LCU/Maintenance/DBInterface/monitoringdb/urls.py b/LCU/Maintenance/DBInterface/monitoringdb/urls.py index dc7315516f2d52340f3c97743ac81158fbeb8da0..cde62e231b50a19a488ba3d83a595939f05a103c 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/urls.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/urls.py @@ -12,8 +12,8 @@ station_test_router.register(r'^', StationTestViewSet) rtsm_router = routers.DefaultRouter() #RTSM -rtsm_router.register(r'^errors_detailed', RTSMErrorsDetailedViewSet) -rtsm_router.register(r'^errors', RTSMErrorsViewSet) +rtsm_router.register(r'^/errors_detailed', RTSMErrorsDetailedViewSet) +rtsm_router.register(r'^/errors', RTSMErrorsViewSet) rtsm_router.register(r'^', RTSMObservationViewSet) diff --git a/LCU/Maintenance/DBInterface/monitoringdb/views/rtsm_views.py b/LCU/Maintenance/DBInterface/monitoringdb/views/rtsm_views.py index cdeb154c254f87a12f6d0f5b9702ea68a8cada78..a5d3b02743df68b3c909102871e8d7fdaf0fe12a 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/views/rtsm_views.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/views/rtsm_views.py @@ -5,6 +5,7 @@ from ..rtsm_test_raw_parser import parse_rtsm_test logger = logging.getLogger('views') + class RTSMErrorsDetailedViewSet(viewsets.ModelViewSet): queryset = RTSMError.objects.all() serializer_class = RTSMErrorSerializer @@ -23,7 +24,7 @@ class RTSMErrorsViewSet(viewsets.ModelViewSet): serializer_class = RTSMErrorSummarySerializer def get_queryset(self): - queryset = RTSMError.objects.all() + queryset = RTSMError.objects.defer('average_spectrum', 'bad_spectrum').all() for key, param in self.request.query_params.items(): if key in RESERVED_FILTER_NAME: continue @@ -31,9 +32,8 @@ class RTSMErrorsViewSet(viewsets.ModelViewSet): return queryset - class RTSMObservationViewSet(viewsets.ModelViewSet): - queryset = RTSMObservation.objects.all() + queryset = RTSMObservation.objects.select_related('errors').defer('errors__average_spectrum', 'errors__bad_spectrum').all() serializer_class = RTSMObservationSerializer def get_queryset(self): diff --git a/LCU/Maintenance/MDB_tools/cli/probe_mdb.py b/LCU/Maintenance/MDB_tools/cli/probe_mdb.py index 147e82cdcd9443ada9be41add0e9bf9c4a95f169..91cab9071a00669876acf241499b12c2bbe91360 100755 --- a/LCU/Maintenance/MDB_tools/cli/probe_mdb.py +++ b/LCU/Maintenance/MDB_tools/cli/probe_mdb.py @@ -56,7 +56,7 @@ def perform_query(query_string, address, next_url=None): response = requests.get(full_address) logging.info('response acknowledged: status code is %s', response.status_code) if response.status_code == 200: - parsed_content = json.loads(response.content) + parsed_content = response.json() extracted_content = parsed_content['results'] next_url = parsed_content['next'] @@ -324,7 +324,7 @@ def print_out_rtsm_summary(rtsm_results): 'component_id', 'error_type', 'start_frequency', 'stop_frequency', 'mode', 'percentage'] - sorted_rtsm = rtsm_sort_errors(rtsm_result['errors']) + sorted_rtsm = rtsm_sort_errors(rtsm_result['errors_summary']) rtsm_errors = Counter() for error in sorted_rtsm: rcu_id = error['rcu'] @@ -364,7 +364,7 @@ def print_out_rtsm(rtsm_results): for rtsm_result in rtsm_results: obs_id = rtsm_result['observation_id'] station_name = rtsm_result['station_name'] - for error in rtsm_sort_errors(rtsm_result['errors']): + for error in rtsm_sort_errors(rtsm_result['errors_summary']): rcu_id = error['rcu'] start_frequency = error['start_frequency'] stop_frequency = error['stop_frequency']