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