From 49d28e5295db6132ba977f23f43e6341272e93d7 Mon Sep 17 00:00:00 2001 From: Alexandr Abramov Date: Wed, 27 Sep 2023 00:10:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D1=83=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B4=D0=B0=D0=B2=D1=86?= =?UTF-8?q?=D0=BE=D0=B2,=20=D0=B2=D1=8B=D0=BD=D0=B5=D1=81=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D0=BF=D0=B0=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D0=B5=D0=B9=20=D0=B2=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_user/serializers.py | 14 ++++++-------- custom_user/validators.py | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 custom_user/validators.py diff --git a/custom_user/serializers.py b/custom_user/serializers.py index 6ae04b4..df2997b 100644 --- a/custom_user/serializers.py +++ b/custom_user/serializers.py @@ -1,5 +1,6 @@ from rest_framework import serializers from custom_user.models import CustomUser +from custom_user.validators import PasswordValidation class CustomersListSerializer(serializers.ModelSerializer): @@ -28,6 +29,7 @@ class VisitorSerializer(serializers.ModelSerializer): class Meta: model = CustomUser fields = ('first_name', 'last_name', 'patronymic', 'email', 'password', 'password_confirmation', ) + validators = [PasswordValidation()] def create(self, validated_data): """ @@ -38,13 +40,6 @@ def create(self, validated_data): """ password_confirmation = validated_data.pop('password_confirmation', None) - - if password_confirmation is None: - raise serializers.ValidationError("Поле 'password_confirmation' обязательно") - - if validated_data.get('password') != password_confirmation: - raise serializers.ValidationError("Пароль и его подтверждение не совпадают") - new_common_user = CustomUser.objects.create_user(**validated_data) return new_common_user @@ -60,11 +55,14 @@ class SellerSerializer(serializers.ModelSerializer): shop_name = serializers.CharField() product_images = serializers.ImageField(required=False) + password_confirmation = serializers.CharField(write_only=True) class Meta: model = CustomUser - fields = ('shop_name', 'product_images', 'email', ) + fields = ('shop_name', 'product_images', 'email', 'password', 'password_confirmation', ) + validators = [PasswordValidation()] def create(self, validated_data): + password_confirmation = validated_data.pop('password_confirmation', None) new_seller = CustomUser.objects.create_user(**validated_data) return new_seller diff --git a/custom_user/validators.py b/custom_user/validators.py new file mode 100644 index 0000000..777369e --- /dev/null +++ b/custom_user/validators.py @@ -0,0 +1,14 @@ +from rest_framework.validators import ValidationError + + +class PasswordValidation: + + def __call__(self, data: dict): + password_confirmation = data.pop('password_confirmation', None) + checking_password = data.get('password') + + if password_confirmation is None: + raise ValidationError("Поле 'password_confirmation' обязательно") + + if checking_password != password_confirmation: + raise ValidationError("Пароль и его подтверждение не совпадают")