From 28f508eafb1a82e81ebb7ac2e0f3bd5ac73cb727 Mon Sep 17 00:00:00 2001
From: rlacko <rlacko@sch.bme.hu>
Date: Mon, 17 Feb 2020 22:08:43 +0100
Subject: [PATCH] get summary of bits

---
 src/account/serializers.py | 12 ------------
 src/account/urls.py        | 12 ++++++++++--
 src/account/views.py       | 10 ++++++++++
 3 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/src/account/serializers.py b/src/account/serializers.py
index 852ea40..0fc09ce 100644
--- a/src/account/serializers.py
+++ b/src/account/serializers.py
@@ -127,31 +127,19 @@ class ProfileSerializer_Staff(serializers.ModelSerializer):
 
 
 class MonitoringSerializer(serializers.ModelSerializer):
-    full_name = serializers.SerializerMethodField()
-    email = serializers.SerializerMethodField()
     bits = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Profile
         read_only_fields = (
             'id',
-            'full_name',
-            'email',
             'bits',
         )
         fields = (
             'id',
-            'full_name',
-            'email',
             'bits',
         )
 
-    def get_full_name(self, obj):
-        return obj.full_name
-
-    def get_email(self, obj):
-        return obj.user.email
-
     def get_bits(self, obj):
         if obj.homework_bits is None:
             return obj.events_visited
diff --git a/src/account/urls.py b/src/account/urls.py
index b46b198..07e85fd 100644
--- a/src/account/urls.py
+++ b/src/account/urls.py
@@ -3,7 +3,15 @@ from . import views
 
 router = routers.DefaultRouter()
 
-router.register(r'profiles', views.ProfileViewSet, base_name='profile')
-router.register(r'monitoring/profiles', views.MonitorinViewSet, base_name='monitoring')
+router.register(
+    r'profiles',
+    views.ProfileViewSet,
+    base_name='profile'
+)
+router.register(
+    r'monitoring/profiles',
+    views.MonitorinViewSet,
+    base_name='monitoring'
+)
 
 urlpatterns = router.urls
diff --git a/src/account/views.py b/src/account/views.py
index b579b83..d3fe6df 100644
--- a/src/account/views.py
+++ b/src/account/views.py
@@ -5,6 +5,8 @@ from rest_framework.decorators import action
 from common.permissions import IsSafeOrPatch
 from rest_framework_api_key.permissions import HasAPIKey
 
+from django.db.models import Sum
+
 from . import models
 from . import serializers
 
@@ -16,6 +18,14 @@ class MonitorinViewSet(viewsets.ModelViewSet):
     def get_queryset(self):
         return models.Profile.objects.filter(role='Student')
 
+    @action(detail=False)
+    def totalbits(self, request):
+        profiles = models.Profile.objects.filter(role='Student')
+        bits = map(lambda item: serializers.MonitoringSerializer(item).data['bits'], profiles)
+        return Response({
+            'sum': sum(bits)
+        })
+
 
 class ProfileViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.ProfileSerializer_User
-- 
GitLab