fix: update export views to match model changes

Resolves #72
This commit is contained in:
James Graham
2021-02-08 14:58:32 +00:00
parent a141b93644
commit c102cbf091
5 changed files with 66 additions and 20 deletions

View File

@@ -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 = [

View File

@@ -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