diff --git a/greg/models.py b/greg/models.py index 5b15a17210d2f4555816032cfe9f852810eabe85..7149144d31a91c5b239acaa522f432c4fae9ffd2 100644 --- a/greg/models.py +++ b/greg/models.py @@ -119,10 +119,7 @@ class Person(BaseModel): @staticmethod def get_verified_identities_query(): return Q( - identities__type__in=[ - Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER, - Identity.IdentityType.PASSPORT_NUMBER, - ], + identities__type__in=settings.ALLOWED_VERIFIED_ID_TYPES, identities__verified_at__isnull=False, identities__verified_at__lte=timezone.now(), ) @@ -155,10 +152,7 @@ class Person(BaseModel): """ return ( self.identities.filter( - type__in=[ - Identity.IdentityType.NORWEGIAN_NATIONAL_ID_NUMBER, - Identity.IdentityType.PASSPORT_NUMBER, - ], + type__in=settings.ALLOWED_VERIFIED_ID_TYPES, verified_at__isnull=False, verified_at__lte=timezone.now(), ).count() diff --git a/greg/tests/models/test_person.py b/greg/tests/models/test_person.py index 31d8aeadf974b5643941143ab38a9044b16f9459..84e3a3d0f920715aa5bff8bbbd311905cf4db3f5 100644 --- a/greg/tests/models/test_person.py +++ b/greg/tests/models/test_person.py @@ -3,6 +3,7 @@ from functools import partial import pytest from django.utils import timezone +from django.test import override_settings from greg.models import ( Consent, @@ -80,6 +81,22 @@ def unverified_passport() -> Identity: return Identity(type=Identity.IdentityType.PASSPORT_NUMBER) +@pytest.fixture +def migration_id() -> Identity: + return Identity( + type=Identity.IdentityType.MIGRATION_ID, + verified_at=_a_year_ago, + ) + + +@pytest.fixture +def national_id_card() -> Identity: + return Identity( + type=Identity.IdentityType.NATIONAL_ID_CARD_NUMBER, + verified_at=_a_year_ago, + ) + + @pytest.fixture def future_identity() -> Identity: return Identity( @@ -180,6 +197,32 @@ def test_is_verified_mixed_verified_and_unverified_identities( assert person.is_verified +@pytest.mark.django_db +def test_is_verified_extra_id_types( + person, + person_foo, + person_bar, + national_id_card, + verified_national_id_number, + migration_id, +): + person.identities.add(migration_id, bulk=False) + person_foo.identities.add(national_id_card, bulk=False) + person_bar.identities.add(verified_national_id_number, bulk=False) + with override_settings( + ALLOWED_VERIFIED_ID_TYPES=[ + "migration_id", + "national_id_card_number", + ] + ): + assert person.is_verified + assert person_foo.is_verified + assert not person_bar.is_verified + assert not person.is_verified + assert not person_foo.is_verified + assert person_bar.is_verified + + @pytest.mark.django_db def test_is_verified_in_future(person, future_identity): person.identities.add(future_identity, bulk=False) diff --git a/gregsite/settings/base.py b/gregsite/settings/base.py index b951a8966f09d298870ba3832d9afc0b806d0792..d808104c92da95eae9cdf54097e6b66e5cdd715e 100644 --- a/gregsite/settings/base.py +++ b/gregsite/settings/base.py @@ -356,3 +356,6 @@ IGA_CLIENT = { } ALLOW_SO_NUMBERS = False + +# Which id-types need to be verified for a guest to appear under "Confirmed guests" +ALLOWED_VERIFIED_ID_TYPES = ["norwegian_national_id_number", "passport_number"]