Coverage for apps/project/views.py : 100%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from django.db.models import Prefetch
2from django.shortcuts import get_object_or_404
3from rest_framework import viewsets, response
5from summary_group.serializers import get_projects_summary
6from report.models import Report
7from report.serializers import ReportSerializer
9from .models import Project
10from .serializers import ProjectSerializer
13class ProjectViewSet(viewsets.ViewSet):
14 """
15 # TODO: Use viewset (Also refactor)
16 A simple ViewSet for listing or retrieving projects.
17 """
18 def list(self, request, version):
19 queryset = Project.objects.prefetch_related(
20 Prefetch('reports', queryset=Report.objects.order_by('-id')),
21 'district', 'municipalities',
22 ).all()
23 serializer = ProjectSerializer(queryset, many=True)
24 return response.Response(serializer.data)
27class ProjectReportViewSet(viewsets.ViewSet):
28 """
29 Project's report viewset
30 """
31 def retrieve(self, request, version, pk=None):
32 queryset = Project.objects.all()
33 project = get_object_or_404(queryset, pk=pk)
34 serializer = ReportSerializer(
35 project.recent_report,
36 context={'request': request}
37 )
38 return response.Response(serializer.data)
41class ProjectSummaryViewSet(viewsets.ViewSet):
42 """
43 Project's report viewset
44 """
46 def list(self, request, version):
47 summary = get_projects_summary(Project.objects.all())
48 return response.Response(summary)
51class ProjectSummaryTrendViewSet(viewsets.ViewSet):
52 """
53 Project's report viewset
54 """
56 def list(self, request, version):
57 summary = get_projects_summary(Project.objects.all(), group_by_date=True)
58 return response.Response(summary)