aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api
diff options
context:
space:
mode:
authorGravatar RohanJnr <[email protected]>2020-10-08 12:24:05 +0530
committerGravatar RohanJnr <[email protected]>2020-10-08 12:24:05 +0530
commit995c62b509242d5ae75f8c7a19840ff0f1832d44 (patch)
tree66e5bfbb95547bb5e090857582bab1c3007c1eaf /pydis_site/apps/api
parentupdate documentation (diff)
catch IntegrityError and raise ValidationError during user creation.
Diffstat (limited to 'pydis_site/apps/api')
-rw-r--r--pydis_site/apps/api/serializers.py8
1 files changed, 8 insertions, 0 deletions
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."""