From 2bd77400284c0a0c13a0e5d5e349b0a93faeb9eb Mon Sep 17 00:00:00 2001
From: Mattia Mancini <mancini@astron.nl>
Date: Tue, 29 May 2018 07:45:49 +0000
Subject: [PATCH] Story SW-300: fixing urls and deploying script

---
 .../monitoringdb/models/__init__.py           |  8 +++++
 .../monitoringdb/models/componenterror.py     |  6 ++--
 .../monitoringdb/views/station_test_views.py  | 30 +++++++++++++------
 3 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/LCU/Maintenance/DBInterface/monitoringdb/models/__init__.py b/LCU/Maintenance/DBInterface/monitoringdb/models/__init__.py
index e69de29bb2d..ee04345452a 100644
--- a/LCU/Maintenance/DBInterface/monitoringdb/models/__init__.py
+++ b/LCU/Maintenance/DBInterface/monitoringdb/models/__init__.py
@@ -0,0 +1,8 @@
+from .componenterror import *
+from .hbacomponenterror import *
+from .lbacomponenterror import *
+from .rcucomponenterror import *
+from .rspcomponenterror import *
+from .tbbcomponenterror import *
+from .spucomponenterror import *
+from .stationtest import *
diff --git a/LCU/Maintenance/DBInterface/monitoringdb/models/componenterror.py b/LCU/Maintenance/DBInterface/monitoringdb/models/componenterror.py
index fa1dc2ef931..95561ec135d 100644
--- a/LCU/Maintenance/DBInterface/monitoringdb/models/componenterror.py
+++ b/LCU/Maintenance/DBInterface/monitoringdb/models/componenterror.py
@@ -4,17 +4,15 @@ from polymorphic.models import PolymorphicModel
 from .stationtest import StationTest
 from .fixed_types import COMPONENT_TYPES, ERROR_TYPES
 
-
 NOISE_ERROR_TYPE = (('H', 'HIGH'), ('L', 'LOW'))
 
 
 class ComponentError(PolymorphicModel):
-
     id = models.AutoField(primary_key=True)
 
     component_id = models.IntegerField()
     component_type = models.CharField(max_length=6, choices=COMPONENT_TYPES)
     error_type = models.CharField(max_length=15, choices=ERROR_TYPES)
     parent = models.ForeignKey(StationTest,
-                                     related_name='all_errors',
-                                     on_delete=models.CASCADE)
\ No newline at end of file
+                               related_name='all_errors',
+                               on_delete=models.CASCADE)
diff --git a/LCU/Maintenance/DBInterface/monitoringdb/views/station_test_views.py b/LCU/Maintenance/DBInterface/monitoringdb/views/station_test_views.py
index 1b7f2479bba..42aac70f563 100644
--- a/LCU/Maintenance/DBInterface/monitoringdb/views/station_test_views.py
+++ b/LCU/Maintenance/DBInterface/monitoringdb/views/station_test_views.py
@@ -2,23 +2,32 @@ from .common import *
 from ..models.stationtest import StationTest
 from ..models.componenterror import ComponentError
 from ..models.tileerror import TileError
-from rest_framework.filters import SearchFilter
-
 from ..serializers.stationtest import StationTestSerializer
 from ..serializers.componenterrors_generic import ComponentErrorPolymorphicSerializer
-from ..serializers.tileerror import TileErrorPolymorphicSerializer
 
+from ..serializers.tileerror import TileErrorPolymorphicSerializer
+from rest_framework.serializers import Serializer
 from ..station_test_raw_parser import parse_raw_station_test
-
-
+import rest_framework.serializers as serializers
 from ..exceptions import ItemAlreadyExists
 
+import django.db.models.aggregates as aggregates
+
 logger = logging.getLogger('views')
 
 
-class ComponentErrorSummaryViewSet(viewsets.ModelViewSet):
-    queryset = ComponentError.objects.all()
-    serializer_class = ComponentErrorPolymorphicSerializer
+class ComponentErrorCountSummarySerializer(Serializer):
+    parent__station_name = serializers.CharField()
+    error_type = serializers.CharField()
+    component_type = serializers.CharField()
+    count = serializers.IntegerField()
+
+
+class ComponentErrorCountSummaryViewSet(viewsets.ModelViewSet):
+    queryset = ComponentError.objects.all().\
+        values('error_type', 'component_type', 'parent__station_name').\
+        annotate(count=aggregates.Count('error_type')).order_by('count')
+    serializer_class = ComponentErrorCountSummarySerializer
 
     def get_queryset(self):
         """
@@ -33,7 +42,10 @@ class ComponentErrorSummaryViewSet(viewsets.ModelViewSet):
             if key in RESERVED_FILTER_NAME:
                 continue
             queryset = queryset.filter(**{key: param})
-        return queryset
+            logger.info(queryset.values('parent__station_name','error_type', 'component_type'))
+        return queryset.\
+                values('error_type', 'component_type', 'parent__station_name').\
+                annotate(count=aggregates.Count('error_type')).order_by('count')
 
 # Create your views here.
 class StationTestViewSet(viewsets.ModelViewSet):
-- 
GitLab