예제 #1
0
class RepositorySerializer(ModelSerializer):
    pulp_href = DetailIdentityField(
        view_name_pattern=r"repositories(-.*/.*)-detail")
    versions_href = RepositoryVersionsIdentityFromRepositoryField()
    latest_version_href = LatestVersionField()
    name = serializers.CharField(
        help_text=_("A unique name for this repository."),
        validators=[UniqueValidator(queryset=models.Repository.objects.all())],
    )
    description = serializers.CharField(
        help_text=_("An optional description."),
        required=False,
        allow_null=True)
    remote = DetailRelatedField(
        view_name_pattern=r"remotes(-.*/.*)-detail",
        queryset=models.Remote.objects.all(),
        required=False,
        allow_null=True,
    )

    def validate_remote(self, value):
        if value and type(value) not in self.Meta.model.REMOTE_TYPES:
            raise serializers.ValidationError(
                detail=_("Type for Remote '{}' does not match Repository."
                         ).format(value.name))

        return value

    class Meta:
        model = models.Repository
        fields = ModelSerializer.Meta.fields + (
            "versions_href",
            "latest_version_href",
            "name",
            "description",
            "remote",
        )
예제 #2
0
class UserSerializer(serializers.ModelSerializer):
    """Serializer for the User model."""

    email = serializers.EmailField(
        required=True,
        max_length=150,
        allow_blank=False,
        validators=[
            validate_email,
            UniqueValidator(queryset=User.objects.all())
        ])

    class Meta:
        """Metadata for the serializer."""

        model = User
        fields = ('uuid', 'username', 'email', 'password')
        extra_kwargs = {
            'password': {
                'write_only': True,
                'required': False,
                'style': {
                    'input_type': 'password'
                },
                'max_length': 128,
                'allow_null': False
            }
        }

    @transaction.atomic
    def create(self, validated_data):
        """Create a user from validated data."""
        user = _create_user(username=validated_data.get('username'),
                            email=validated_data.get('email'),
                            password=validated_data.get('password'))

        return user
예제 #3
0
class UserSerializer(serializers.ModelSerializer):
    first_name = serializers.CharField()
    last_name = serializers.CharField(write_only=True)
    email = serializers.EmailField(validators=[
        UniqueValidator(User.objects.all(), _("User already registered."))
    ])
    role = serializers.CharField()
    phone_number = serializers.CharField(max_length=128, required=False)
    password = serializers.CharField(write_only=True)

    def create(self, validated_data):
        role = validated_data.pop('role', 'employee')
        password = validated_data.pop('password', None)
        if not password:
            raise ValidationError({'password': _("This is a required field.")})
        user = super().create(validated_data)
        user.role = role
        user.set_password(password)
        user.save()
        return user

    def update(self, instance, validated_data):
        role = validated_data.pop('role', 'employee')
        password = validated_data.pop('password', None)
        user = super().update(instance, validated_data)
        if password:
            user.set_password(password)
            user.save()

        if role:
            user.role = role
        return user

    class Meta:
        model = User
        fields = ('id', 'first_name', 'phone_number', 'last_name', 'role',
                  'email', 'is_active', 'password')
예제 #4
0
파일: serializers.py 프로젝트: zhyr/Django
class UserRegSerializer(serializers.ModelSerializer):
    '''
    用户注册
    '''
    #验证用户名是否存在
    username = serializers.CharField(label="用户名",
                                     help_text="用户名",
                                     required=True,
                                     allow_blank=False,
                                     validators=[
                                         UniqueValidator(
                                             queryset=User.objects.all(),
                                             message="用户已经存在")
                                     ])
    # 输入密码的时候不显示明文
    password = serializers.CharField(style={'input_type': 'password'},
                                     label=True,
                                     write_only=True)

    # 密码加密保存
    def create(self, validated_data):
        user = super(UserRegSerializer,
                     self).create(validated_data=validated_data)
        user.set_password(validated_data["password"])
        user.save()
        return user

        # 所有字段。attrs是字段验证合法之后返回的总的dict
    def validate(self, attrs):
        #前端没有传mobile值到后端,这里添加进来
        attrs["mobile"] = attrs["username"]
        #code是自己添加得,数据库中并没有这个字段,验证完就删除掉
        return attrs

    class Meta:
        model = User
        fields = ('username', 'mobile', 'password')
예제 #5
0
class UserSerializer(serializers.ModelSerializer):
    account = serializers.HyperlinkedRelatedField(
        required=False,
        read_only=True,
        view_name='Account-detail',
    )

    email = serializers.EmailField(
        # This requires the email to be submitted
        # since the default dosn't require one.
        allow_blank=False,
        validators=[UniqueValidator(queryset=User.objects.all())])

    password = serializers.CharField(
        # This protects the password from ever being
        # returned over a request.
        write_only=True, )

    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'password', 'account')
        read_only_fields = ('account', )

    def create(self, validated_data):
        # Automatically populate all the data into their
        # matching fields.
        user = User.objects.create(**validated_data)

        # This step will use the provided .set_password
        # method to hash and store the user password.
        user.set_password(validated_data['password'])
        user.save()

        # In this step we create the corresponding
        # account profile for this user.
        Account.objects.create(user=user)
        return user
예제 #6
0
class AccountSerializer(serializers.ModelSerializer):
    username = serializers.CharField(required=True,
                                     validators=[UniqueValidator(queryset=Account.objects.all())])
    password = serializers.CharField(min_length=8,
                                     write_only=True,
                                     required=True)

    class Meta:
        model = Account
        fields = ['id', 'username', 'password', 'followed_genres', 'followed_artists']

    def create(self, validated_data):
        username = validated_data.get('username', None)
        password = validated_data.get('password', None)
        if username and password:
            user_account = Account.objects.create_user(username=username)
            user_account.set_password(password)
            user_account.save()
        else:
            raise serializers.ValidationError('A username and password is required to sign up')
        return user_account

    def update(self, instance, validated_data):
        password = validated_data.get('password', None)
        if password:
            instance.set_password(password)

        followed_genres = validated_data.get('followed_genres', [])
        if followed_genres:
            instance.followed_genres.set(followed_genres)

        followed_artists = validated_data.get('followed_artists', [])
        if followed_artists:
            instance.followed_artists.set(followed_artists)

        instance.save()
        return instance
예제 #7
0
class UserSignUpSerializer(serializers.Serializer):
    email = serializers.EmailField(
        validators=[UniqueValidator(queryset=User.objects.all())])
    password = serializers.CharField(validators=[validate_password])
    username = serializers.CharField()
    full_name = serializers.CharField()
    phone_number = serializers.IntegerField(validators=[phone_number_check])
    address = serializers.CharField(required=False)
    city = serializers.CharField(required=False)
    state = serializers.CharField(required=False)
    country = serializers.CharField(required=False)
    pincode = serializers.CharField(validators=[validate_pincode])

    def validate(self, attrs):
        password = attrs.get('password')
        if password:
            obj = password_check(password)
            if obj:
                return attrs

            else:
                return False

    def create(self, validated_data):
        user = User()
        user.email = validated_data.get('email')
        user.password = make_password(validated_data.get('password'))
        user.username = validated_data.get('username')
        user.full_name = validated_data.get('full_name')
        user.phone = validated_data.get('phone_number')
        user.address = validated_data.get('address')
        user.city = validated_data.get('city')
        user.state = validated_data.get('state')
        user.country = validated_data.get('country')
        user.pincode = validated_data.get('pincode')
        user.save()
        return user
예제 #8
0
class SignupSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(
        required=True,
        validators=[UniqueValidator(queryset=User.objects.all())]
    )

    password = serializers.CharField(
        write_only=True, required=True, validators=[validate_password])
    password2 = serializers.CharField(write_only=True, required=True)

    class Meta:
        model = User
        fields = ('username', 'email', 'password',
                  'password2', 'first_name', 'last_name')
        write_only_fields = ('password',)
        extra_kwargs = {
            'first_name': {'required': False},
            'last_name': {'required': False}
        }

    def validate(self, attrs):
        if attrs['password'] != attrs['password2']:
            raise serializers.ValidationError(
                {'password': '******'})
        return attrs

    def create(self, validated_data):
        user = User.objects.create(
            username=validated_data['username'],
            email=validated_data['email'],
            first_name=validated_data['first_name'],
            last_name=validated_data['last_name']
        )
        user.set_password(validated_data['password'])
        user.save()

        return user
예제 #9
0
class UserRegSerializer(serializers.ModelSerializer):
    code = serializers.CharField(max_length=4, min_length=4, label="验证码", write_only=True,
                                 required=True,
                                 error_messages={
                                     'required': "请输入验证码",
                                     'blank': "请输入验证码",
                                     'max_length': "验证码格式错误",
                                     'min_length': "验证码格式错误",
                                 })
    username = serializers.CharField(max_length=20, label="用户名",
                                     validators=[UniqueValidator(queryset=User.objects.all(), message="用户名已使用")],
                                     required=True, allow_blank=False)
    password = serializers.CharField(required=True, style={'input_type': 'password'}, label='密码',write_only=True)

    # style = {'input_type': 'password'} 前端就会直接把密码 给 挡住

    def validated_code(self, code):
        # initial_data 前端form 传送过来的数据都放在这里面 我们就直接使用  debug
        verify_record = VerifyCode.objects.filter(mobile=self.initial_data['username']).order_by('-add_time')
        if verify_record:
            last_records = verify_record[0]  # 获取最后一条  最新的
            five_mintes_ago = datetime.now() - timedelta(minutes=5)
            if five_mintes_ago > last_records.add_time:
                raise serializers.ValidationError("验证码过期")
            if last_records.code != code:
                raise serializers.ValidationError("验证码错误")
        else:
            raise serializers.ValidationError("验证码错误")

    def validate(self, attrs):
        attrs['mobile'] = attrs['username']
        del attrs['code']
        return attrs

    class Meta:
        model = User
        fields = ["username", "mobile", 'code', 'password']
예제 #10
0
class InterfaceModelSerializer(serializers.ModelSerializer):
    name = serializers.CharField(
        label='接口名称',
        max_length=200,
        min_length=6,
        help_text='接口名称',
        # validators中的验证器会全部执行,如果抛异常,则不执行单字段验证器和联合字段验证器
        validators=[
            UniqueValidator(queryset=Interfaces.objects.all(),
                            message='接口名称不可重复')
        ],
        error_messages={
            'max_length': '长度不超过200字节',
            'min_length': '长度不小于6字节',
        })
    project_id = serializers.PrimaryKeyRelatedField(
        label="Project ID", queryset=Projects.objects.all())
    project = serializers.StringRelatedField(label='所属项目')

    class Meta:
        model = Interfaces
        # fields = "__all__"
        fields = ("id", "project", "project_id", "name", "tester", "desc",
                  "create_time")
        # exclude = ("is_delete", "update_time")
        read_only_fields = ("create_time", )

    def create(self, validated_data):
        project = validated_data.pop("project_id")
        validated_data["project"] = project
        return Interfaces.objects.create(**validated_data)

    def update(self, instance, validated_data):
        if 'project_id' in validated_data:
            project = validated_data.pop("project_id")
            validated_data["project"] = project
        return super().update(instance, validated_data)
예제 #11
0
class ProjectSerializer(serializers.ModelSerializer):

    add_time = serializers.DateTimeField(format="%Y-%m-%d",
                                         read_only=True,
                                         default='')
    owner = serializers.CharField(label="创建者",
                                  help_text="创建者",
                                  read_only=True,
                                  default='测试创建人')
    name = serializers.CharField(label="项目名",
                                 help_text="项目名",
                                 required=True,
                                 validators=[
                                     UniqueValidator(
                                         queryset=Project.objects.all(),
                                         message="用户已经存在")
                                 ])
    detail = serializers.CharField(label="项目简述",
                                   help_text="项目简述",
                                   required=False)

    # def create(self, validated_data):
    #     pass

    # def validate_name(self, name):
    #     if len(name) <1:
    #         raise serializers.ValidationError('名字过短')
    #     return name
    #
    # def validate(self, attrs):
    #     attrs['order_sn'] = generate_order_sn()
    #     del attrs['test'] # 删除在model中没有的字段
    #     return attrs

    class Meta:
        model = Project
        fields = '__all__'
예제 #12
0
class CollectionSerializer(serializers.ModelSerializer):
    """
    Common serializer for all Collection actions
    """

    mission = AsymetricRelatedField.from_serializer(MissionSerializer,
                                                    kwargs={'required': True})
    title = serializers.CharField(required=True)
    alt_title = serializers.CharField(allow_blank=True)
    description = serializers.CharField(allow_blank=True)
    recording_context = serializers.CharField(allow_blank=True)
    recorded_from_year = serializers.CharField(allow_blank=True,
                                               required=False)
    recorded_to_year = serializers.CharField(allow_blank=True, required=False)
    year_published = serializers.IntegerField(allow_null=True, required=False)
    location_details = serializers.CharField(allow_blank=True)
    cultural_area = serializers.CharField(allow_blank=True)
    language = serializers.CharField(allow_blank=True)
    # publisher_collection = serializers.CharField(required=False)
    booklet_author = serializers.CharField(allow_blank=True)
    metadata_author = serializers.CharField(allow_blank=True)
    code = serializers.CharField(
        required=True,
        validators=[UniqueValidator(queryset=CollectionModel.objects.all())])
    code_partner = serializers.CharField(allow_blank=True)
    booklet_description = serializers.CharField(allow_blank=True)
    comment = serializers.CharField(allow_blank=True)
    media_type = AsymetricRelatedField.from_serializer(
        MediaTypeSerializer, kwargs={'required': False})
    physical_items_num = serializers.IntegerField(required=False)
    auto_period_access = serializers.BooleanField(required=False)
    legal_rights = AsymetricRelatedField.from_serializer(
        LegalRightsSerializer, kwargs={'required': False})

    class Meta:
        model = CollectionModel
        fields = '__all__'
예제 #13
0
class RegisterSerializer(serializers.Serializer):
    email = serializers.EmailField(
        required=True,
        validators=[UniqueValidator(queryset=User.objects.all())])

    password = serializers.CharField(write_only=True,
                                     required=True,
                                     validators=[validate_password])
    password2 = serializers.CharField(write_only=True, required=True)
    user_type = serializers.CharField(allow_null=True, allow_blank=True)
    name = serializers.CharField()

    def validate(self, attrs):
        if attrs['password'] != attrs['password2']:
            raise serializers.ValidationError(
                {"password": "******"})

        return attrs

    def create(self, validated_data):
        user_type = validated_data['user_type']
        user = User.objects.create(
            name=validated_data['name'],
            email=validated_data['email'],
        )

        user.set_password(validated_data['password'])
        user.save()
        if user_type:
            # fetch details of the group selected
            try:
                group_instance = Group.objects.get(name=user_type)
            except Exception as e:
                raise serializers.ValidationError("Group does not exist")
            user.groups.add(group_instance)

        return user
예제 #14
0
class UserCreateSerializer(serializers.ModelSerializer):
    username = serializers.CharField(
        max_length=None,
        min_length=4,
        allow_blank=False,
        trim_whitespace=True,
        validators=[UniqueValidator(queryset=User.objects.all())])
    password = serializers.CharField(max_length=None,
                                     min_length=6,
                                     allow_blank=False,
                                     trim_whitespace=True)
    confirm_password = serializers.SerializerMethodField()

    class Meta:
        model = User
        fields = ('id', 'username', 'password', 'confirm_password')

    def create(self, validated_data):
        user = User(**validated_data)
        user.set_password(validated_data['password'])
        user.save()
        return user

    def update(self, instance, validated_data):
        instance.username = validated_data.get('username', instance.username)
        if validated_data.get('password'):
            instance.set_password(validated_data['password'])
        instance.save()
        return instance

    def validate(self, data):
        if self.initial_data.get('password') and (
                self.initial_data.get('password') !=
                self.initial_data.get('confirm_password')):
            raise serializers.ValidationError(
                {'password': '******'})
        return data
예제 #15
0
파일: content.py 프로젝트: wbclark/pulpcore
    def validate(self, data):
        """
        Validate file by size and by all checksums provided.

        Args:
            data (:class:`django.http.QueryDict`): QueryDict mapping Artifact model fields to their
                values

        Raises:
            :class:`rest_framework.exceptions.ValidationError`: When the expected file size or any
                of the checksums don't match their actual values.
        """
        super().validate(data)

        if 'size' in data:
            if data['file'].size != int(data['size']):
                raise serializers.ValidationError(_("The size did not match actual size of file."))
        else:
            data['size'] = data['file'].size

        for algorithm in hashlib.algorithms_guaranteed:
            if algorithm in models.Artifact.DIGEST_FIELDS:
                digest = data['file'].hashers[algorithm].hexdigest()

                if algorithm in data and digest != data[algorithm]:
                    raise serializers.ValidationError(_("The %s checksum did not match.")
                                                      % algorithm)
                else:
                    data[algorithm] = digest
                if algorithm in UNIQUE_ALGORITHMS:
                    validator = UniqueValidator(models.Artifact.objects.all(),
                                                message=_("{0} checksum must be "
                                                          "unique.").format(algorithm))
                    validator.field_name = algorithm
                    validator.instance = None
                    validator(digest)
        return data
예제 #16
0
class UserRegisterSerializer(RegisterSerializer):
    first_name = serializers.CharField(required=True)
    last_name = serializers.CharField(required=True)
    phone_number = PhoneNumberField(
        required=True,
        write_only=True,
        validators=[
            UniqueValidator(models.Profile.objects.all(),
                            message=_("Phone number already exist."))
        ],
    )
    accept_terms = serializers.BooleanField(required=True, write_only=True)

    def validate_email(self, email):
        email = get_adapter().clean_email(email)
        if allauth_settings.UNIQUE_EMAIL:
            if email and email_address_exists(email):
                raise serializers.ValidationError(
                    _("E-mail address is taken."))
        return email

    def validate(self, data):
        if data["password1"] != data["password2"]:
            raise serializers.ValidationError(
                _("The two password fields didn't match."))
        return data

    def create_profile_data(self, user):
        user.first_name = self.validated_data.get("first_name", "")
        user.last_name = self.validated_data.get("last_name", "")
        user.save()
        user.profile.phone_number = self.validated_data.get("phone_number")
        user.profile.accept_terms = self.validated_data.get("accept_terms")
        user.profile.save()

    def custom_signup(self, request, user):
        self.create_profile_data(user)
예제 #17
0
    class Meta:
        model = SiteUser
        fields = (
            'id',
            'email',
            'email_verified',
            'is_superuser',
            'is_active',
            'date_joined',
            'first_name',
            'last_name',
            'organization',
            'provides_stock',
            'needs_stock',
            'street_1',
            'street_2',
            'city',
            'county',
            'state',
            'zip',
            'phone',
        )

        read_only_fields = (
            'id',
            'email_verified',
            'is_superuser',
            'is_active',
            'date_joined',
        )

        extra_kwargs = {
            'email': {
                'validators':
                [UniqueValidator(queryset=SiteUser.objects.all())],
            }
        }
예제 #18
0
class ProductSerializer(serializers.ModelSerializer):
    """Class representing the vendor serializer"""

    vendor_id = serializers.PrimaryKeyRelatedField(
        queryset=Vendor.objects.all(),
        source='vendor',
        error_messages={
            "does_not_exist": "Vendor with the id '{pk_value}' does not exist."
        })

    title = serializers.CharField(
        max_length=255,
        validators=[
            UniqueValidator(
                queryset=Product.objects.filter(deleted=False).all(),
                message=MESSAGES['DUPLICATES'].format('Product',
                                                      'product title'))
        ])

    class Meta:
        """Meta"""

        model = Product

        fields = [
            'id', 'title', 'price', 'description', 'availability', 'images',
            'vendor_id', 'created_at', 'updated_at'
        ]
        read_only_fields = READ_ONLY_FIELDS
        extra_kwargs = {
            "price": {
                "error_messages": {
                    "invalid":
                    "'{value}' Value must include the Kobo denomination."
                }
            }
        }
예제 #19
0
class UsuarioCrearActualizarSerializer(ModelSerializer):
    email = serializers.EmailField(validators=[
        UniqueValidator(
            queryset=User.objects.all(),
            message="Ya existe un usuario con este correo",
        )
    ])

    #email2 = EmailField(label = 'Confirm Email')
    class Meta:
        model = User
        fields = ['username', 'first_name', 'email', 'password']

    def create(self, validated_data):
        username = validated_data['username']
        first_name = validated_data['first_name']
        email = validated_data['email']
        password = validated_data['password']
        user_obj = User(username=username, email=email, first_name=first_name)

        user_obj.set_password(password)
        user_obj.save()

        return validated_data
예제 #20
0
class DirectoryLayoutSerializer(serializers.ModelSerializer):
    name = serializers.CharField(
        max_length=50,
        validators=[
            UniqueValidator(
                queryset=DirectoryLayout.objects.all(),
                message=('DUPLICATE_LAYOUT_NAME')
            )
        ]
    )

    def create(self, validated_data):
        dir_layout = DirectoryLayout(**validated_data)
        dir_layout = self.__create_update(dir_layout)
        return dir_layout

    def update(self, dir_layout, validated_data):
        dir_layout.name = validated_data.get('name', dir_layout.name)
        dir_layout.description = validated_data.get('description', dir_layout.description)
        dir_layout.banner_file = validated_data.get('banner_file', dir_layout.banner_file)
        return self.__create_update(dir_layout)

    def __create_update(self, dir_layout):
        request = self.context['request']
        if 'banner_file' in request.FILES:
            dir_layout.banner_file_uploaded = True
        dir_layout.save()
        return dir_layout

    class Meta:
        model = DirectoryLayout
        fields = ('id', 'url', 'name', 'description', 'banner_file', 'original_file_name')
        read_only_fields = ('original_file_name',)
        extra_kwargs = {
            'url': {'lookup_field': 'pk'},
        }
예제 #21
0
class UrlSerializer(serializers.Serializer):
    user_id = serializers.CharField(max_length=16)
    long_url = serializers.URLField(max_length=200)
    short_url_subpart = serializers.SlugField(
        allow_blank=True,
        allow_unicode=False,
        max_length=50,
        required=False,
        validators=[
            UniqueValidator(queryset=Url.objects.all(),
                            message='Этот subpart уже занят!')
        ])
    created = serializers.DateTimeField(read_only=True)

    class Meta:
        validators = [
            UniqueTogetherValidator(
                queryset=Url.objects.all(),
                fields=['user_id', 'long_url'],
                message='У вас уже есть короткая ссылка для этого url !'),
        ]

    def create(self, validated_data):
        return Url.objects.create(**validated_data)
예제 #22
0
class UserSerializer(serializers.ModelSerializer):
    """Serializer for the users object"""

    name = serializers.CharField(required=True)
    email = serializers.EmailField(
        required=True,
        validators=[UniqueValidator(queryset=get_user_model().objects.all())])
    password = serializers.CharField(write_only=True,
                                     style={'input_type': 'password'},
                                     required=True,
                                     validators=[validate_password])
    is_active = serializers.BooleanField(required=False)

    class Meta:
        model = get_user_model()
        fields = ('id', 'name', 'email', 'password', 'is_active', 'is_staff',
                  'is_cashier', 'is_manager')
        read_only_fields = ('id', )

    def create(self, validated_data):
        """Create a new staff user with encrypted password and return it"""

        validated_data['is_staff'] = True
        return get_user_model().objects.create_user(**validated_data)

    def update(self, instance, validated_data):
        """Update a user's detail"""

        password = validated_data.pop('password', None)
        user = super().update(instance, validated_data)

        if password:
            user.set_password(password)
            user.save()

        return user
class UserSerializer(serializers.ModelSerializer):
    USER_UNIQUE_VALIDATOR = UniqueValidator(
        queryset=User.objects.all(),
        message='User with this username/email already exists.')

    username = serializers.CharField(min_length=3,
                                     max_length=30,
                                     validators=[USER_UNIQUE_VALIDATOR])
    first_name = serializers.CharField(min_length=3, max_length=30)
    last_name = serializers.CharField(min_length=3, max_length=30)
    email = serializers.EmailField(max_length=100,
                                   validators=[USER_UNIQUE_VALIDATOR])
    password = serializers.CharField(write_only=True,
                                     required=True,
                                     min_length=8,
                                     max_length=64,
                                     style={'input_type': 'password'})

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'password')

    def validate_username(self, value):
        username_regex = r'^(?=.{3,30}$)(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._]+(?<![_.])$'
        pattern = re.compile(username_regex)

        if not pattern.match(value):
            raise serializers.ValidationError(
                'Username should be present with alphanumeric characters.')

        return value

    def validate_password(self, value):
        auth_validate_password(value)

        return value
예제 #24
0
 class Meta:
     model = Account
     # fields = '__all__'
     fields = ("id", "token", "username", "password", "telephone", "email")
     extra_kwargs = {
         'username': {
             'min_length': 2,
             'max_length': 20,
             'error_messages': {
                 'min_length': '仅允许2-20个字符的用户名',
                 'max_length': '仅允许2-20个字符的用户名',
             },
             "validators": [UniqueValidator(queryset=Account.object.all())]
         },
         'password': {
             'write_only': True,
             'min_length': 6,
             'max_length': 20,
             'error_messages': {
                 'min_length': '仅允许6-20个字符的密码',
                 'max_length': '仅允许6-20个字符的密码',
             }
         },
     }
예제 #25
0
class UserSerializer(serializers.ModelSerializer):

    id = serializers.IntegerField(read_only=True)

    first_name = serializers.CharField(min_length=2)
    last_name = serializers.CharField(min_length=2)
    username = serializers.CharField(
        validators=[UniqueValidator(queryset=User.objects.all())])
    password = serializers.CharField(min_length=8)
    is_superuser = serializers.BooleanField(default=False)

    def create(self, validated_data):
        user = User.objects.create_user(
            self.validated_data['username'],
            last_name=validated_data['last_name'],
            password=validated_data['password'],
            first_name=validated_data['first_name'],
            is_superuser=validated_data['is_superuser'])
        return user

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name', 'last_name', 'password',
                  'is_superuser')
예제 #26
0
class UserSerializer(serializers.HyperlinkedModelSerializer):
    username = serializers.CharField(
        required=True,
        validators=[UniqueValidator(queryset=User.objects.all())],
    )
    password = serializers.CharField(
        min_length=8,
        write_only=True,
    )

    class Meta:
        model = User
        fields = (
            'id',
            'username',
            'password',
        )

    def create(self, validated_data):
        user = User.objects.create_user(
            username=validated_data['username'],
            password=validated_data['password'],
        )
        return user
예제 #27
0
    class Meta:
        model = User
        # fields ="__all__"

        fields = ('id', 'username', 'password', 'email',
                  'password_confirm', 'token')
        # model中没有的字段,不能在extra_kwargs 指定
        #使用extra_kwargs参数为ModelSerializer添加或修改原有的选项参数---字典格式。
        #如果字段已在序列化程序类中显式声明,则该extra_kwargs选项将被忽略。
        extra_kwargs = {
            'username':{
                'label':'用户名',
                'help_text':'用户名',
                'min_length': 6,
                'max_length': 20,
                'error_messages': {'min_length': '仅允许6~20个字符',
                                  'max_length': '仅允许6~20个字符',}
            },
            'email':{
                'label': '邮箱',
                'help_text': '邮箱',
                'write_only':True,
                'required':True,  #必传
                # 邮箱重复校验
                'validators': [UniqueValidator(queryset=User.objects.all(), message='此邮箱已注册')]
            },
            'password': {
                'label': '密码',
                'help_text': '密码',
                'min_length': 6,
                'max_length': 20,
                'write_only': True,
                'error_messages': {'min_length': '仅允许6~20个字符',
                                   'max_length': '仅允许6~20个字符', }
            }
        }
예제 #28
0
class UserRegisterSerializer(ModelSerializer):
    username = serializers.CharField(
        validators=[UniqueValidator(User.objects.all())])
    password = serializers.CharField()
    preferred_class = serializers.CharField()

    def validate(self, attrs):
        if attrs.get('password') != self.context['request'].data.pop(
                'password2'):
            raise ValidationError({'password2': 'Passwords mismatch'})
        return attrs

    def create(self, validated_data):
        user = User.objects.create(
            username=validated_data['username'],
            preferred_class=validated_data['preferred_class'])
        user.set_password(validated_data['password'])
        user.save()

        return user

    class Meta:
        model = User
        fields = ('id', 'username', 'password', 'preferred_class')
예제 #29
0
class DepartmentSerializer(serializers.Serializer):
    id = serializers.IntegerField(label='ID', read_only=True)
    name = serializers.CharField(
        max_length=100,
        validators=[UniqueValidator(queryset=Department.objects.all())])
    created_on = serializers.DateTimeField(read_only=True)
    updated_on = serializers.DateTimeField(read_only=True)

    deleted = serializers.BooleanField(required=False)
    deleted_on = serializers.DateTimeField(allow_null=True, required=False)

    created_by = serializers.SlugRelatedField(queryset=User.objects.all(),
                                              required=False,
                                              slug_field="username")
    changed_by = serializers.SlugRelatedField(queryset=User.objects.all(),
                                              slug_field="username")

    def create(self, validated_data):
        instance = Department.objects.create(**validated_data)
        return instance

    def update(self, instance, validated_data):
        Department.objects.filter(id=instance.id).update(**validated_data)
        return Department.objects.get(id=instance.id)
예제 #30
0
class HowHearAboutUsItemRetrieveUpdateDestroySerializer(
        serializers.ModelSerializer):
    is_archived = serializers.BooleanField(read_only=True)
    text = serializers.CharField(
        required=True,
        allow_blank=False,
        allow_null=False,
        validators=[
            UniqueValidator(queryset=HowHearAboutUsItem.objects.all(), )
        ],
    )

    class Meta:
        model = HowHearAboutUsItem
        fields = (
            'id',
            'text',
            'sort_number',
            'is_for_associate',
            'is_for_customer',
            'is_for_staff',
            'is_for_partner',
            'is_archived',
        )