diff --git a/export/serializers/activities.py b/export/serializers/activities.py index 3a46e0d..49e151c 100644 --- a/export/serializers/activities.py +++ b/export/serializers/activities.py @@ -27,7 +27,7 @@ class ActivityMediumSerializer(serializers.ModelSerializer): class ActivitySeriesSerializer(serializers.ModelSerializer): type = ActivityTypeSerializer() medium = ActivityMediumSerializer() - + class Meta: model = models.ActivitySeries fields = [ @@ -52,8 +52,8 @@ class ActivitySerializer(base.FlattenedModelSerializer): 'type', 'medium', ] - - + + class SimpleActivitySerializer(serializers.ModelSerializer): class Meta: model = models.Activity @@ -65,8 +65,8 @@ class SimpleActivitySerializer(serializers.ModelSerializer): class ActivityAttendanceSerializer(base.FlattenedModelSerializer): activity = SimpleActivitySerializer() - person = people_serializers.SimplePersonSerializer() - + person = people_serializers.PersonSerializer() + class Meta: model = models.Activity.attendance_list.through fields = [ diff --git a/export/serializers/people.py b/export/serializers/people.py index 872761b..5b7dd43 100644 --- a/export/serializers/people.py +++ b/export/serializers/people.py @@ -7,16 +7,6 @@ from people import models from . import base -class SimplePersonSerializer(serializers.ModelSerializer): - class Meta: - model = models.Person - fields = [ - 'id', - # Name is excluded from exports - # See https://github.com/Southampton-RSG/breccia-mapper/issues/35 - ] - - class PersonSerializer(base.FlattenedModelSerializer): class Meta: model = models.Person @@ -24,18 +14,57 @@ class PersonSerializer(base.FlattenedModelSerializer): 'id', # Name is excluded from exports # See https://github.com/Southampton-RSG/breccia-mapper/issues/35 - 'gender', - 'age_group', + ] + + +class PersonAnswerSetSerializer(base.FlattenedModelSerializer): + person = PersonSerializer() + + class Meta: + model = models.PersonAnswerSet + fields = [ + 'id', + 'person', + 'timestamp', + 'replaced_timestamp', 'nationality', 'country_of_residence', 'organisation', 'organisation_started_date', + 'job_title', + 'disciplines', + 'themes', + 'latitude', + 'longitude', ] + @property + def column_headers(self) -> typing.List[str]: + headers = super().column_headers + + # Add questions to columns + for question in models.PersonQuestion.objects.all(): + headers.append(underscore(question.slug)) + + return headers + + def to_representation(self, instance): + rep = super().to_representation(instance) + + try: + # Add relationship question answers to data + for answer in instance.question_answers.all(): + rep[underscore(answer.question.slug)] = underscore(answer.slug) + + except AttributeError: + pass + + return rep + class RelationshipSerializer(base.FlattenedModelSerializer): - source = SimplePersonSerializer() - target = SimplePersonSerializer() + source = PersonSerializer() + target = PersonSerializer() class Meta: model = models.Relationship diff --git a/export/templates/export/export.html b/export/templates/export/export.html index 28a04f6..9151025 100644 --- a/export/templates/export/export.html +++ b/export/templates/export/export.html @@ -30,6 +30,15 @@ +