From 15aab2eb33ec5f756eb04733cb0211afdfc7cd2c Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 1 Apr 2020 16:48:23 +0100 Subject: [PATCH] feat: Add Activity export See #27 See #29 Resolves #24 --- export/serializers/__init__.py | 1 + export/serializers/activities.py | 52 +++++++++++++++++++++++++++++ export/templates/export/export.html | 9 +++++ export/urls.py | 4 +++ export/views/__init__.py | 1 + export/views/activities.py | 9 +++++ 6 files changed, 76 insertions(+) create mode 100644 export/serializers/activities.py create mode 100644 export/views/activities.py diff --git a/export/serializers/__init__.py b/export/serializers/__init__.py index 5f4be95..104caf6 100644 --- a/export/serializers/__init__.py +++ b/export/serializers/__init__.py @@ -1,3 +1,4 @@ from . import ( + activities, people ) diff --git a/export/serializers/activities.py b/export/serializers/activities.py new file mode 100644 index 0000000..a2069cd --- /dev/null +++ b/export/serializers/activities.py @@ -0,0 +1,52 @@ +from rest_framework import serializers + +from activities import models + +from . import base + + +class ActivityTypeSerializer(serializers.ModelSerializer): + class Meta: + model = models.ActivityType + fields = [ + 'pk', + 'name', + ] + + +class ActivityMediumSerializer(serializers.ModelSerializer): + class Meta: + model = models.ActivityMedium + fields = [ + 'pk', + 'name', + ] + + +class ActivitySeriesSerializer(serializers.ModelSerializer): + type = ActivityTypeSerializer() + medium = ActivityMediumSerializer() + + class Meta: + model = models.ActivitySeries + fields = [ + 'pk', + 'name', + 'type', + 'medium', + ] + + +class ActivitySerializer(base.FlattenedModelSerializer): + series = ActivitySeriesSerializer() + type = ActivityTypeSerializer() + medium = ActivityMediumSerializer() + + class Meta: + model = models.Activity + fields = [ + 'name', + 'series', + 'type', + 'medium', + ] diff --git a/export/templates/export/export.html b/export/templates/export/export.html index d8741e9..e4aa7f0 100644 --- a/export/templates/export/export.html +++ b/export/templates/export/export.html @@ -36,6 +36,15 @@ href="{% url 'export:relationship' %}">Export + + + Activities + + + Export + + diff --git a/export/urls.py b/export/urls.py index c991724..7f99467 100644 --- a/export/urls.py +++ b/export/urls.py @@ -17,4 +17,8 @@ urlpatterns = [ path('export/relationships', views.people.RelationshipExportView.as_view(), name='relationship'), + + path('export/activities', + views.activities.ActivityExportView.as_view(), + name='activity'), ] diff --git a/export/views/__init__.py b/export/views/__init__.py index 5efd3f7..da2cdd2 100644 --- a/export/views/__init__.py +++ b/export/views/__init__.py @@ -1,5 +1,6 @@ from .base import ExportListView from . import ( + activities, people ) diff --git a/export/views/activities.py b/export/views/activities.py new file mode 100644 index 0000000..8a74f78 --- /dev/null +++ b/export/views/activities.py @@ -0,0 +1,9 @@ +from . import base +from .. import serializers + +from activities import models + + +class ActivityExportView(base.CsvExportView): + model = models.Activity + serializer_class = serializers.activities.ActivitySerializer