From ada72c24f889aacbdef82b99265a16964da3ca32 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 2 Apr 2020 16:27:29 +0100 Subject: [PATCH] feat: Export activity attendance Resolves #23 --- export/serializers/activities.py | 33 +++++++++++++++++++++++++---- export/templates/export/export.html | 9 ++++++++ export/urls.py | 4 ++++ export/views/activities.py | 5 +++++ 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/export/serializers/activities.py b/export/serializers/activities.py index a2069cd..db91387 100644 --- a/export/serializers/activities.py +++ b/export/serializers/activities.py @@ -3,6 +3,7 @@ from rest_framework import serializers from activities import models from . import base +from . import people as people_serializers class ActivityTypeSerializer(serializers.ModelSerializer): @@ -45,8 +46,32 @@ class ActivitySerializer(base.FlattenedModelSerializer): class Meta: model = models.Activity fields = [ - 'name', - 'series', - 'type', - 'medium', + 'pk', + 'name', + 'series', + 'type', + 'medium', ] + + +class SimpleActivitySerializer(serializers.ModelSerializer): + class Meta: + model = models.Activity + fields = [ + 'pk', + 'name', + ] + + +class ActivityAttendanceSerializer(base.FlattenedModelSerializer): + activity = SimpleActivitySerializer() + person = people_serializers.SimplePersonSerializer() + + class Meta: + model = models.Activity.attendance_list.through + fields = [ + 'pk', + 'activity', + 'person', + ] + diff --git a/export/templates/export/export.html b/export/templates/export/export.html index e4aa7f0..47ce026 100644 --- a/export/templates/export/export.html +++ b/export/templates/export/export.html @@ -45,6 +45,15 @@ href="{% url 'export:activity' %}">Export + + + Activity Attendance + + + Export + + diff --git a/export/urls.py b/export/urls.py index 7f99467..c56fca5 100644 --- a/export/urls.py +++ b/export/urls.py @@ -21,4 +21,8 @@ urlpatterns = [ path('export/activities', views.activities.ActivityExportView.as_view(), name='activity'), + + path('export/activity-attendance', + views.activities.ActivityAttendanceExportView.as_view(), + name='activity-attendance'), ] diff --git a/export/views/activities.py b/export/views/activities.py index 8a74f78..c61ee20 100644 --- a/export/views/activities.py +++ b/export/views/activities.py @@ -7,3 +7,8 @@ from activities import models class ActivityExportView(base.CsvExportView): model = models.Activity serializer_class = serializers.activities.ActivitySerializer + + +class ActivityAttendanceExportView(base.CsvExportView): + model = models.Activity.attendance_list.through + serializer_class = serializers.activities.ActivityAttendanceSerializer