diff --git a/greg/api/serializers/person.py b/greg/api/serializers/person.py index 5a408eaf5b2f7958e2d9d8e00858ee69cb5c83dd..720972d75296594cc6438df985d29276efe04638 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 0000000000000000000000000000000000000000..db4be5644728b585677111dd9a127c568fd6df4e --- /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 c614dc3ef52eecead28e1f624582462a258f3d84..2571bba1084c9198397ddd87a303321076cbd5bb 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)