From 995c62b509242d5ae75f8c7a19840ff0f1832d44 Mon Sep 17 00:00:00 2001 From: RohanJnr Date: Thu, 8 Oct 2020 12:24:05 +0530 Subject: catch IntegrityError and raise ValidationError during user creation. --- pydis_site/apps/api/serializers.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'pydis_site/apps/api/serializers.py') diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py index 98d58e97..a36bf72f 100644 --- a/pydis_site/apps/api/serializers.py +++ b/pydis_site/apps/api/serializers.py @@ -1,5 +1,6 @@ """Converters from Django models to data interchange formats and back.""" from django.db.models.query import QuerySet +from django.db.utils import IntegrityError from rest_framework.exceptions import NotFound from rest_framework.serializers import ( IntegerField, @@ -320,6 +321,13 @@ class UserSerializer(ModelSerializer): depth = 1 list_serializer_class = UserListSerializer + def create(self, validated_data: dict) -> User: + """Override create method to catch IntegrityError.""" + try: + return super().create(validated_data) + except IntegrityError: + raise ValidationError({"ID": "User with ID already present."}) + class NominationSerializer(ModelSerializer): """A class providing (de-)serialization of `Nomination` instances.""" -- cgit v1.2.3