From 659b0f6c9b94be754466817259a233793e46077f Mon Sep 17 00:00:00 2001 From: Tore Brede <Tore.Brede@uib.no> Date: Fri, 27 Aug 2021 16:43:54 +0200 Subject: [PATCH] GREG-27: Adding more information in person listing --- greg/api/serializers/person.py | 63 +++++++++++++++------- greg/migrations/0002_auto_20210827_1437.py | 24 +++++++++ greg/models.py | 4 +- 3 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 greg/migrations/0002_auto_20210827_1437.py diff --git a/greg/api/serializers/person.py b/greg/api/serializers/person.py index 5a408eaf..720972d7 100644 --- a/greg/api/serializers/person.py +++ b/greg/api/serializers/person.py @@ -1,24 +1,6 @@ from rest_framework import serializers -from greg.models import Person, PersonRole, Role, PersonIdentity - - -class PersonSerializer(serializers.ModelSerializer): - class Meta: - model = Person - fields = [ - "id", - "first_name", - "last_name", - "date_of_birth", - "email", - "mobile_phone", - "email_verified_date", - "mobile_phone", - "mobile_phone_verified_date", - "registration_completed_date", - "token", - ] +from greg.models import Person, PersonRole, Role, PersonIdentity, PersonConsent, Consent class PersonRoleSerializer(serializers.ModelSerializer): @@ -57,3 +39,46 @@ class PersonIdentitySerializer(serializers.ModelSerializer): .filter(value__like=value) .exists() ) + + +class ConsentSerializerBrief(serializers.ModelSerializer): + class Meta: + model = Consent + fields = [ + "type", + "valid_from", + "user_allowed_to_change", + ] + + +class PersonConsentSerializerBrief(serializers.ModelSerializer): + consent = ConsentSerializerBrief(read_only=True) + + class Meta: + model = PersonConsent + fields = ["consent", "consent_given_at"] + + +class PersonSerializer(serializers.ModelSerializer): + identities = PersonIdentitySerializer(many=True, read_only=True) + person_roles = PersonRoleSerializer(many=True, read_only=True) + person_consent = PersonConsentSerializerBrief(many=True, read_only=True) + + class Meta: + model = Person + fields = [ + "id", + "first_name", + "last_name", + "date_of_birth", + "email", + "mobile_phone", + "email_verified_date", + "mobile_phone", + "mobile_phone_verified_date", + "registration_completed_date", + "token", + "identities", + "person_roles", + "person_consent", + ] diff --git a/greg/migrations/0002_auto_20210827_1437.py b/greg/migrations/0002_auto_20210827_1437.py new file mode 100644 index 00000000..db4be564 --- /dev/null +++ b/greg/migrations/0002_auto_20210827_1437.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.5 on 2021-08-27 14:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('greg', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='personconsent', + name='consent', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='person_consent', to='greg.consent'), + ), + migrations.AlterField( + model_name='personconsent', + name='person', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='person_consent', to='greg.person'), + ), + ] diff --git a/greg/models.py b/greg/models.py index c614dc3e..2571bba1 100644 --- a/greg/models.py +++ b/greg/models.py @@ -273,10 +273,10 @@ class PersonConsent(BaseModel): """ person = models.ForeignKey( - "Person", on_delete=models.CASCADE, related_name="link_person_consent" + "Person", on_delete=models.CASCADE, related_name="person_consent" ) consent = models.ForeignKey( - "Consent", on_delete=models.PROTECT, related_name="link_person_consent" + "Consent", on_delete=models.PROTECT, related_name="person_consent" ) # If the date is blank it means the person has not given consent yet consent_given_at = models.DateField(null=True) -- GitLab