Skip to content
Snippets Groups Projects
Verified Commit d25eb108 authored by Jan Maximilian Michal's avatar Jan Maximilian Michal
Browse files

A very simple base for an endpoint that displays basic stats

parent 7b014e65
No related branches found
No related tags found
1 merge request!65A very simple base for an endpoint that displays basic stats
Pipeline #
......@@ -133,7 +133,7 @@ class SubmissionType(models.Model):
Case(
When(
Q(submissions__feedback__isnull=False) &
Q(submissions__feedback__status=Feedback.ACCEPTED),
Q(submissions__feedback__is_final=True),
then=Value(1)), output_field=IntegerField(),
)
)
......
......@@ -17,6 +17,7 @@ router.register('tutor', views.TutorApiViewSet, base_name='tutor')
router.register('subscription', views.SubscriptionApiViewSet,
base_name='subscription')
router.register('assignment', views.AssignmentApiViewSet)
router.register('statistics', views.StatisticsEndpoint, base_name='statistics')
# regular views that are not viewsets
regular_views_urlpatterns = [
......
......@@ -4,6 +4,7 @@ user to be authenticated and most are only accessible by one user group """
import logging
from django.conf import settings
from django.db.models import Avg
from rest_framework import generics, mixins, viewsets
from rest_framework.decorators import api_view
from rest_framework.response import Response
......@@ -84,6 +85,25 @@ class SubmissionTypeApiView(viewsets.ReadOnlyModelViewSet):
serializer_class = SubmissionTypeSerializer
class StatisticsEndpoint(viewsets.ViewSet):
def list(self, request, *args, **kwargs):
return Response({
'submissions_per_type':
models.SubmissionType.objects.first().submissions.count(),
'submissions_per_student':
models.SubmissionType.objects.count(),
'current_mean_score':
models.Feedback.objects.aggregate(avg=Avg('score')).get('avg', 0),
'submission_type_progress':
models.SubmissionType.get_annotated_feedback_count().values(
'feedback_count', 'pk', 'percentage')
})
class SubmissionViewSet(viewsets.ReadOnlyModelViewSet):
permission_classes = (IsTutorOrReviewer, )
serializer_class = SubmissionNoTypeSerializer
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment