From be861ce2bed399e0db07cf4c72d409d715863f48 Mon Sep 17 00:00:00 2001 From: Tirth Date: Sat, 28 Oct 2023 22:35:04 +0530 Subject: [PATCH 1/2] Normalization of roll number done --- backend/accounts/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/accounts/models.py b/backend/accounts/models.py index 20f3851..dfd243f 100644 --- a/backend/accounts/models.py +++ b/backend/accounts/models.py @@ -11,6 +11,9 @@ class UserManager(BaseUserManager): use_in_migrations = True + def normalize_roll_number(self, roll_number): + return roll_number.upper() + def _create_user(self, roll_number, email, password, **extra_fields): """ Create and save a user with the given roll number, email, and password. @@ -18,6 +21,7 @@ def _create_user(self, roll_number, email, password, **extra_fields): if not roll_number: raise ValueError("The given roll number must be set") email = self.normalize_email(email) + roll_number = self.normalize_roll_number(roll_number) user = self.model(roll_number=roll_number, email=email, **extra_fields) user.password = make_password(password) user.save(using=self._db) From bb897b5401bcbabc54030086015a587fd37eadc3 Mon Sep 17 00:00:00 2001 From: Tirth Date: Sun, 29 Oct 2023 01:35:34 +0530 Subject: [PATCH 2/2] Fixed the bug by adding a check function in serializers.py --- backend/accounts/serializers.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/backend/accounts/serializers.py b/backend/accounts/serializers.py index 3f9e80c..79a996a 100644 --- a/backend/accounts/serializers.py +++ b/backend/accounts/serializers.py @@ -20,6 +20,15 @@ def validate_password(self, password): return password + + def validate_roll_number(self, roll_number): + + if not is_valid_roll_number(roll_number): + raise serializers.ValidationError("Invalid roll number format") + + return roll_number + + def create(self, validated_data): """ Override the create mehtod with objects.create_user, @@ -34,3 +43,9 @@ class UserAutoCompleteSerializer(serializers.ModelSerializer): class Meta: model = User fields = ["id", "roll_number", "name"] + + + +def is_valid_roll_number(roll_number): + allowed_prefixes = ['18', '19', '20', '21', '22', '23'] + return len(roll_number) >= 7 and roll_number[:2] in allowed_prefixes \ No newline at end of file