Hide keyboard shortcuts

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 

4 

5from summary_group.serializers import get_projects_summary 

6from report.models import Report 

7from report.serializers import ReportSerializer 

8 

9from .models import Project 

10from .serializers import ProjectSerializer 

11 

12 

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) 

25 

26 

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) 

39 

40 

41class ProjectSummaryViewSet(viewsets.ViewSet): 

42 """ 

43 Project's report viewset 

44 """ 

45 

46 def list(self, request, version): 

47 summary = get_projects_summary(Project.objects.all()) 

48 return response.Response(summary) 

49 

50 

51class ProjectSummaryTrendViewSet(viewsets.ViewSet): 

52 """ 

53 Project's report viewset 

54 """ 

55 

56 def list(self, request, version): 

57 summary = get_projects_summary(Project.objects.all(), group_by_date=True) 

58 return response.Response(summary)