コード例 #1
0
 def image_validator(file: InMemoryUploadedFile) -> InMemoryUploadedFile:
     extension = file.name[file.name.rindex("."):]
     if extension not in ALLOWED_EXTENSIONS:
         raise validators.ValidationError(EXTENSION_ERROR_MESSAGE)
     if file.size > MAX_IMAGE_SIZE:
         raise validators.ValidationError(MAX_IMAGE_SIZE_ERROR_MESSAGE)
     return file
コード例 #2
0
ファイル: serializers.py プロジェクト: alexshin/event-app-api
    def validate(self, data):
        user_id = data.get('id')
        code = self.initial_data.get('code')
        password = data.get('password')
        password_confirmation = self.initial_data.get('password_confirmation')

        user = User.objects.filter(id=user_id)

        if not user.exists():
            raise validators.ValidationError('User doesn\'t exist')

        if password != password_confirmation:
            raise validators.ValidationError('Passwords do not match')

        user = user.get()
        if not user_activation_token.check_token(user=user, token=code):
            raise validators.ValidationError('Confirmation code is wrong')

        try:
            # validate the password and catch the exception
            password_validators.validate_password(password=password, user=user)
        # the exception raised here is different than serializers.ValidationError
        except exceptions.ValidationError as e:
            raise validators.ValidationError(e.message)

        return super().validate(data)
コード例 #3
0
ファイル: serializers.py プロジェクト: tnahs/hlts-django
    def validate(self, data):

        email = data.get("email")
        password = data.get("password")
        password_new = data.get("password_new")
        password_confirm = data.get("password_confirm")

        try:
            user = User.objects.get(email=email)
        except User.DoesNotExist:
            raise validators.ValidationError(
                "Invalid e-mail/password combination.")

        if not user.check_password(password):
            raise validators.ValidationError(
                "Invalid e-mail/password combination.")

        if password_new != password_confirm:
            raise validators.ValidationError("Passwords do not match.")

        try:
            validate_password(password=password_new, user=user)
        except exceptions.ValidationError:
            raise

        data["user"] = user

        return data
コード例 #4
0
def phone_number_validator(phone_number):
    try:
        phone_number = str(phone_number)
    except ValueError:
        raise validators.ValidationError('Invalid Input')

    if phone_number.isdigit() is False:
        raise validators.ValidationError(
            'Phone numbers can only contain numbers')

    if not (10 <= len(phone_number) <= 11):
        raise validators.ValidationError(
            'Length of phone number must be either 10 or 11')
コード例 #5
0
ファイル: serializers.py プロジェクト: alexshin/event-app-api
    def validate(self, data):
        user_id = data.get('user_id')
        code = data.get('code')

        user = User.objects.filter(id=user_id)

        if not user.exists():
            raise validators.ValidationError('User doesn\'t exist')

        user = user.get()

        if not user_activation_token.check_token(user=user, token=code):
            raise validators.ValidationError('Confirmation code is wrong')

        return super().validate(data)
コード例 #6
0
ファイル: serializers.py プロジェクト: tnahs/hlts-django
    def validate(self, data):

        # TODO: Clean-up up errors.

        request = self.context.get("request")

        which = data.get("which")
        into = data.get("into")
        merging = data.get("merging")

        Model = getattr(request.user, which).model

        errors = {}

        try:
            into_obj = Model.objects.get(name=into)
        except Model.DoesNotExist:
            errors["into"] = f"Item '{into}' does not exist."

        merging_objs = []
        errors["merging"] = []
        for name in merging:
            try:
                merging_obj = Model.objects.get(name=name)
            except Model.DoesNotExist:
                errors["merging"].append(f"Item '{name}' does not exist.")
            else:
                merging_objs.append(merging_obj)

        if any(errors.values()):
            raise validators.ValidationError(errors)

        objs = {"into": into_obj, "merging": merging_objs}

        return objs
コード例 #7
0
def validate_body_url_id(url_values, data_values):
    try:
        for i in range(len(url_values)):
            if url_values and int(url_values[i]) != int(data_values[i]):
                raise Exception
    except Exception as e:
        raise validators.ValidationError(e, "id in URL and Request Body must match and be integers")
コード例 #8
0
    def search(self, request, *args, **kwargs):
        return Response({"detail": "接口开发ing....", "code": "1001"}, status=400)
        req_data = request.query_params
        params = {
            "clienttype": 1,
            "highlight": 1,
            "key": req_data.get('key'),
            "page": req_data.get('page'),
            "timestamp": "1554707021",
            "sign": "828152926614276651646"
        }
        resp = requests.get(url='http://search.pandown.cn/api/query',
                            params=params)
        if resp.status_code == 200:
            try:
                data = resp.json()
                for item in data['data']:
                    item['list'] = item.get('list').split("\n") if item.get(
                        'list') else []
                    item['surl'] = "https://pan.baidu.com/s/" + item['id']
                    item['needpassword'] = True if item.get('password',
                                                            False) else False
                    if not request.user.is_superuser and item['password']:
                        item.pop('password')

                return Response(data)
            except Exception as e:
                data = {"msg": "数据源解析失败(%s)" % str(e), "code": 1001}
                return Response(data)
        else:
            raise validators.ValidationError(("1001", "数据源失效"))
コード例 #9
0
ファイル: serializers.py プロジェクト: nexemjail/rest_test
 def validate(self, attrs):
     if attrs['password'] != attrs['password2']:
         raise validators.ValidationError('Passwords must match')
     # TODO : check if it is correct ot do queries in validate!
     # if User.objects.filter(username=attrs['username']).exists():
     #     raise validators.ValidationError('User already exists')
     return attrs
コード例 #10
0
    def validate(self, attrs):
        self.user = authenticate(None,
                                 username=attrs.get('username', None),
                                 password=attrs.get('password', None))
        if not self.user:
            raise validators.ValidationError('Invalid')

        return attrs
コード例 #11
0
ファイル: serializers.py プロジェクト: alexshin/event-app-api
    def validate_email(self, email):
        email = self.initial_data.get('email')
        user = User.objects.filter(email=email)

        if not user.exists():
            raise validators.ValidationError(
                'User with current email doesn\'t exist')

        return super().validate(email)
コード例 #12
0
    def validate(self, attrs):
        user_id = attrs.get('user_id')
        code = attrs.get('code')

        user = User.objects.filter(id=user_id)

        if not user.exists():
            raise validators.ValidationError('User doesn\'t exist')

        user = user.get()
        if not user.has_perm(perm='user.validate_email', obj=user):
            raise validators.ValidationError(
                'User doesn\'t have permissions to confirm address')

        if not user_activation_token.check_token(user=user, token=code):
            raise validators.ValidationError('Confirmation code is wrong')

        return super().validate(attrs)
コード例 #13
0
 def perform_update(self, serializer):
     shopCar = addCarModel.objects.filter(id=serializer.instance.pk).first()
     goods = serializer.instance.goods
     c = shopCar.nums - serializer.initial_data['nums']
     shopCar.nums = serializer.initial_data['nums']
     goods.goods_num += c
     if goods.goods_num <= 0:
         raise validators.ValidationError("商品不足")
     shopCar.save()
     goods.save()
コード例 #14
0
    def __call__(self, value, serializer_field):
        # Determine the underlying model field name. This may not be the
        # same as the serializer field name if `source=<>` is set.
        field_name = serializer_field.source_attrs[-1]
        # Determine the existing instance, if this is an update operation.
        instance = getattr(serializer_field.parent, 'instance', None)

        queryset = self.queryset
        queryset = self.filter_queryset(value, queryset, field_name)
        if validators.qs_exists(queryset) and not self.include_current_instance(instance, serializer_field, value):
            raise validators.ValidationError(self.message, code='unique')
コード例 #15
0
ファイル: views.py プロジェクト: xamogast/dtrack
    def get_object(self):
        user = super().get_object()
        if self.request.method == "POST":
            body_unicode = self.request.body.decode('utf-8')
            token = json.loads(body_unicode).get("token", None)
        else:
            token = self.request.query_params.get("token", None)

        token_generator = PasswordResetTokenGenerator()
        if not token_generator.check_token(user, token):
            raise validators.ValidationError("Invalid one time password")
        return user
コード例 #16
0
ファイル: views.py プロジェクト: bellomusodiq/sogo
 def post(self, request):
     ref = request.data.get('ref')
     event = request.data.get('event')
     errors = {}
     if not ref:
         errors['ref'] = 'ref values is required'
     if not event:
         errors['event'] = 'event values is required'
     try:
         event_obj = Event.objects.get(pk=event)
         if len(errors) > 0:
             raise validators.ValidationError(errors)
         result = verify_transaction(ref)
         if result['status']:
             Notification.objects.create(
                 user=request.user,
                 message='You have successfully subscribed to {}'.format(event_obj.title)
             )
             MyTicket.objects.create(user=request.user, event=event_obj)
             return Response({'message': 'payment was successful'})
         return Response({'message': 'payment was not successful'},
                         status=status.HTTP_400_BAD_REQUEST)
     except Event.DoesNotExist:
         raise validators.ValidationError({'event': 'event with the id does not exist'})
コード例 #17
0
ファイル: views.py プロジェクト: 1786016767jjk/qwe
 def perform_update(self, serializer):
     # 获取购物车
     shopCart = ShoppingCart.objects.get(pk=serializer.instance.pk)
     # 获取到这一次提交的商品对象
     goods = serializer.instance.goods
     # 差 = 购物中这个商品的数量-提交的数量
     c = shopCart.nums - serializer.initial_data['nums']
     # 更新购物车 (nums)
     shopCart.nums = serializer.initial_data['nums']  # 更新购物车中数量
     # 修改商品的数量
     goods.goods_num += c
     if goods.goods_num < 0:
         raise validators.ValidationError('商品不足')
     # 保存购物车
     shopCart.save()
     # 保存商品
     goods.save()
コード例 #18
0
ファイル: models.py プロジェクト: realrushen/dw-test-task
    def save(self, *args, **kwargs):
        try:
            self.clean_fields()
        except ValidationError as e:
            raise validators.ValidationError(
                {field: value
                 for field, value in e.message_dict.items()})
        if not self.id:
            bytes_like_object = self.file.read()
            self.hash = generate_hash(bytes_like_object)
            self.directory = self.hash[:2]
            self.original_name = self.file.name
            try:
                self.validate_unique()
            except ValidationError:
                raise UniqueConstraintError

        super().save(*args, **kwargs)
コード例 #19
0
ファイル: views.py プロジェクト: 1786016767jjk/qwe
 def perform_create(self, serializer):  #添加购物车
     user = self.request.user
     goods_id = serializer.data['goods']
     #提交购物车中shangpin
     shopCardGoods = ShoppingCart.objects.filter(user=user,
                                                 goods_id=goods_id).first()
     #仓库中商品
     gs = Goods.objects.filter(id=goods_id).first()
     if gs.goods_num >= serializer.data['nums']:
         gs.goods_num -= serializer.data['nums']
         gs.save()
         if shopCardGoods:
             shopCardGoods.nums += serializer.data['nums']
             shopCardGoods.save()
         else:
             ShoppingCart.objects.create(goods_id=goods_id,
                                         nums=serializer.data['nums'],
                                         user=user)
     else:
         raise validators.ValidationError('商品不足')
コード例 #20
0
    def perform_create(self, serializer):
        goods_id = serializer.data["goods"]
        user = self.request.user
        #如果不加上first()就是Querylist类型
        shoppingCar = addCarModel.objects.filter(user=user,
                                                 goods_id=goods_id).first()
        gs = Goods.objects.filter(id=goods_id).first()
        if gs.goods_num >= serializer.data["nums"]:
            gs.goods_num -= serializer.data["nums"]
            gs.save()
            if shoppingCar:
                shoppingCar.nums += serializer.data["nums"]
                shoppingCar.save()
            else:
                addCarModel.objects.create(user=user,
                                           goods_id=goods_id,
                                           nums=serializer.data["nums"])

        else:
            raise validators.ValidationError("商品数量不足")
コード例 #21
0
    def validate(self, data):
        """Метод для валидации. Вызывается при создании и обновлении."""

        if self.context['view'].action == 'create':
            status = data.get('status', 'DRAFT')
        else:
            status = data.get('status')

        open_status = (AdvertisementStatusChoices.OPEN,
                       AdvertisementStatusChoices.DRAFT)
        if status not in open_status:
            # в результате выполнения запроса количество открытых объявлений не изменится
            return data

        user = self.context['request'].user
        active_items = user.advertisements.filter(status__in=open_status)

        if len(active_items) >= 10:
            error_msg = f"Для пользователя {user} достигнуто максимальное число открытых объявлений: 10. " \
                        f"Чтобы разблокировать возможность создания новых объявлений необходимо перевести минимум " \
                        f"одно объявление в статус {AdvertisementStatusChoices.CLOSED}"
            raise validators.ValidationError(error_msg)

        return data
コード例 #22
0
 def validate_iban(self, value):
     if not value:
         raise validators.ValidationError('IBAN is required.')
     return value
コード例 #23
0
def validate_phone(phone):
    if not REGEX_PHONE.match(phone):
        raise validators.ValidationError('手机号不合法')
コード例 #24
0
ファイル: serializers.py プロジェクト: xamogast/dtrack
 def validate(self, attrs):
     attrs = super().validate(attrs)
     if User.objects.filter(email=attrs["email"]).exists():
         raise validators.ValidationError({"email": "Email already in use"})
     return attrs
コード例 #25
0
ファイル: serializers.py プロジェクト: xamogast/dtrack
 def validate(self, attrs):
     attrs = super().validate(attrs)
     if attrs["password"] != attrs["password_repeat"]:
         raise validators.ValidationError(
             {"password": "******"})
     return attrs
コード例 #26
0
def validate_hackathon_url_date(date):
    try:
        return datetime.strptime(date, "%Y-%m-%d").date()

    except Exception as e:
        raise validators.ValidationError(e, "Date should be in format %Y-%m-%d")
コード例 #27
0
ファイル: views.py プロジェクト: code-next/Inshare
 def perform_create(self, serializer):
     query = Friend.objects.filter(user=self.request.user).filter(friend=self.request.data['friend'])
     if query.exists():
         raise validators.ValidationError("You are already connected/request send")
     serializer.save(user=self.request.user)
コード例 #28
0
 def text_validator(value: str) -> str:
     if bool(set(value) - set(string.ascii_letters + string.digits)):
         raise validators.ValidationError(USERNAME_VALIDATOR_ERROR_MESSAGE)
     return value
コード例 #29
0
def name_validator(value):
    if not NAME_LETTER.search(value) or not FIRST_LETTER.search(value):
        raise validators.ValidationError(
            code=400, detail="变量名不合法, 请输入以字母开头且为数字、大小写字母、'_'、'-'的组合")