From 0571b4273fff7c14c91d949fa2dc295f8757740e Mon Sep 17 00:00:00 2001 From: Jonas Braathen <jonas.braathen@usit.uio.no> Date: Fri, 11 Mar 2022 01:15:02 +0100 Subject: [PATCH] Move IdentityDuplicateError --- .../api/serializers/IdentityDuplicateError.py | 21 ------------------- gregui/api/serializers/guest.py | 6 ++++-- gregui/api/serializers/identity.py | 20 +++++++++++++++++- gregui/api/serializers/invitation.py | 2 +- gregui/api/views/person.py | 7 +++++-- 5 files changed, 29 insertions(+), 27 deletions(-) delete mode 100644 gregui/api/serializers/IdentityDuplicateError.py diff --git a/gregui/api/serializers/IdentityDuplicateError.py b/gregui/api/serializers/IdentityDuplicateError.py deleted file mode 100644 index 7b32db68..00000000 --- a/gregui/api/serializers/IdentityDuplicateError.py +++ /dev/null @@ -1,21 +0,0 @@ -from rest_framework.exceptions import APIException -from rest_framework import status - -from greg.models import Identity - - -class IdentityDuplicateError(APIException): - """ - Used to signal the there is already an identity registered with the same value - for the type given as input parameter. - """ - - status_code = status.HTTP_400_BAD_REQUEST - default_detail = "Validation error" - _type: Identity.IdentityType - - def __init__(self, identity_type: Identity.IdentityType, code: str): - super().__init__() - self._type = identity_type - self.code = code - self.detail = {"code": code, "message": "Duplicate identity"} diff --git a/gregui/api/serializers/guest.py b/gregui/api/serializers/guest.py index c6ceab32..4161b2ff 100644 --- a/gregui/api/serializers/guest.py +++ b/gregui/api/serializers/guest.py @@ -16,8 +16,10 @@ from greg.models import ( InvitationLink, ) from greg.utils import is_identity_duplicate -from gregui.api.serializers.IdentityDuplicateError import IdentityDuplicateError -from gregui.api.serializers.identity import PartialIdentitySerializer +from gregui.api.serializers.identity import ( + PartialIdentitySerializer, + IdentityDuplicateError, +) from gregui.api.serializers.role import ExtendedRoleSerializer from gregui.validation import ( validate_phone_number, diff --git a/gregui/api/serializers/identity.py b/gregui/api/serializers/identity.py index 44412cbe..6189d620 100644 --- a/gregui/api/serializers/identity.py +++ b/gregui/api/serializers/identity.py @@ -1,12 +1,30 @@ from django.conf import settings from django.utils import timezone from rest_framework import serializers -from rest_framework.exceptions import ValidationError +from rest_framework import status +from rest_framework.exceptions import APIException, ValidationError from greg.models import Identity from gregui.models import GregUserProfile +class IdentityDuplicateError(APIException): + """ + Used to signal the there is already an identity registered with the same value + for the type given as input parameter. + """ + + status_code = status.HTTP_400_BAD_REQUEST + default_detail = "Validation error" + _type: Identity.IdentityType + + def __init__(self, identity_type: Identity.IdentityType, code: str): + super().__init__() + self._type = identity_type + self.code = code + self.detail = {"code": code, "message": "Duplicate identity"} + + class IdentitySerializer(serializers.ModelSerializer): """Serializer for the Identity model with validation of various fields""" diff --git a/gregui/api/serializers/invitation.py b/gregui/api/serializers/invitation.py index 601694dd..1673de9b 100644 --- a/gregui/api/serializers/invitation.py +++ b/gregui/api/serializers/invitation.py @@ -7,7 +7,7 @@ from rest_framework import serializers from greg.models import Invitation, InvitationLink, Person, Role, Identity from greg.utils import is_identity_duplicate -from gregui.api.serializers.IdentityDuplicateError import IdentityDuplicateError +from gregui.api.serializers.identity import IdentityDuplicateError from gregui.api.serializers.role import InviteRoleSerializerUi from gregui.models import GregUserProfile diff --git a/gregui/api/views/person.py b/gregui/api/views/person.py index 32f027bf..1d349203 100644 --- a/gregui/api/views/person.py +++ b/gregui/api/views/person.py @@ -10,8 +10,11 @@ from greg.models import Identity, Person from greg.permissions import IsSponsor from greg.utils import is_identity_duplicate from gregui import validation -from gregui.api.serializers.IdentityDuplicateError import IdentityDuplicateError -from gregui.api.serializers.guest import GuestSerializer, create_identity_or_update +from gregui.api.serializers.guest import ( + GuestSerializer, + create_identity_or_update, +) +from gregui.api.serializers.identity import IdentityDuplicateError from gregui.models import GregUserProfile -- GitLab