From 8f494e1be57d92757e2f099b13978c9659af4d84 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 2 Apr 2020 15:42:48 +0100 Subject: [PATCH 1/2] fix: Use underscores in export column headers Resolves #30 --- export/serializers/people.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/export/serializers/people.py b/export/serializers/people.py index baed3bb..8c84ccb 100644 --- a/export/serializers/people.py +++ b/export/serializers/people.py @@ -48,7 +48,7 @@ class RelationshipSerializer(base.FlattenedModelSerializer): # Add relationship questions to columns for question in models.RelationshipQuestion.objects.all(): - headers.append(question.slug) + headers.append(question.slug.replace('-', '_')) return headers @@ -58,7 +58,7 @@ class RelationshipSerializer(base.FlattenedModelSerializer): try: # Add relationship question answers to data for answer in instance.current_answers.question_answers.all(): - rep[answer.question.slug] = answer.slug + rep[answer.question.slug.replace('-', '_')] = answer.slug.replace('-', '_') except AttributeError: pass From ada72c24f889aacbdef82b99265a16964da3ca32 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 2 Apr 2020 16:27:29 +0100 Subject: [PATCH 2/2] 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