class MethodRequest(ApiRequest): account = CharField(required=False, nullable=True) login = CharField(required=True, nullable=True) token = CharField(required=True, nullable=True) arguments = ArgumentsField(required=True, nullable=True) method = CharField(required=True, nullable=True) @property def is_admin(self): return self.login == ADMIN_LOGIN
class TestCharField(TestCase): def setUp(self) -> None: self.test_field = CharField() self.valid_char_num = randint(0, 1000) self.invalid_char_num = randint(1001, 2000) self.valid_text = gen_random_text(self.valid_char_num) self.invalid_text = gen_random_text(self.invalid_char_num) def test_valid_char_field(self): self.assertTrue(self.test_field.is_valid(self.valid_text)) def test_invalid_char_field(self): self.assertFalse(self.test_field.is_valid(self.invalid_text))
class OnlineScoreRequest(ApiRequest): first_name = CharField(required=False, nullable=True) last_name = CharField(required=False, nullable=True) email = EmailField(required=False, nullable=True) phone = PhoneField(required=False, nullable=True) birthday = BirthDayField(required=False, nullable=True) gender = GenderField(required=False, nullable=True) def validate(self, kwargs): super().validate(kwargs) validate_pairs = any([ self.phone and self.email, self.first_name and self.last_name, self.gender is not None and self.birthday ]) if not validate_pairs: logging.error( 'At least one pair expected from the (first_name - last_name, email - phone, birthday - gender)' ) raise ValidationError("Fields validate error")
class OnlineScoreRequest(Request): first_name = CharField(required=False, nullable=True) last_name = CharField(required=False, nullable=True) email = EmailField(required=False, nullable=True) phone = PhoneField(required=False, nullable=True) birthday = BirthDayField(required=False, nullable=True) gender = GenderField(required=False, nullable=True) def __init__(self, body): super(OnlineScoreRequest, self).__init__(body) valid = any( ((self.first_name is not None and self.last_name is not None), (self.email is not None and self.phone is not None), (self.birthday is not None and self.gender is not None))) if not valid: self._errors.append('invalid arguments set')
class User(BaseModel): name = CharField() nickname = CharField() password = CharField() class_name = CharField() teacher = CharField() teachers = CharField()
class OnlineScoreRequest(ApiRequest): first_name = CharField(required=False, nullable=True) last_name = CharField(required=False, nullable=True) email = EmailField(required=False, nullable=True) phone = PhoneField(required=False, nullable=True) birthday = BirthDayField(required=False, nullable=True) gender = GenderField(required=False, nullable=True) def validate(self): validating_pairs = [ ('first_name', 'last_name'), ('email', 'phone'), ('birthday', 'gender'), ] if ('first_name' in self.has and 'last_name' in self.has) or \ ('email' in self.has and 'phone' in self.has) or \ ('birthday' in self.has and 'gender' in self.has): return True else: raise AttributeError( "Required at least one of this fields pars: ('first_name', 'last_name'), " "('email', 'phone'), ('birthday', 'gender')")
class AccountForm(Form): from_address = CharField() host_name = CharField() port = IntegerField() max_size = IntegerField() max_size_type = CharField() use_auth = BooleanField(required=False) username = CharField(required=False) password = CharField(required=False) security = CharField()
def test_char_field(self): # data type c = CharField() self.assertRaises(ValidationError, c.validate, 100) self.assertEqual(c.validate("你好"), "你好") self.assertEqual(c.validate("1234"), "1234") # required c = CharField(required=True) self.assertRaises(ValidationError, c.validate, None) c = CharField(required=False) self.assertEqual(c.validate("1234567890"), "1234567890") # min length c = CharField(min_length=4) self.assertRaises(ValidationError, c.validate, "123") self.assertEqual(c.validate("1234"), "1234") self.assertEqual(c.validate("1234"), "1234") # max length c = CharField(max_length=4) self.assertRaises(ValidationError, c.validate, "11111") self.assertEqual(c.validate("1234"), "1234") self.assertEqual(c.validate("123"), "123") self.assertEqual(c.validate(""), "") # both max min c = CharField(max_length=3, min_length=3) self.assertRaises(ValidationError, c.validate, "11") self.assertRaises(ValidationError, c.validate, "1111") self.assertEqual(c.validate("123"), "123")
class Advert(BaseModel): title = CharField(max_length=10) price = IntegerField(min_value=0)
class Advert(BaseModel): title = CharField(max_length=180) price = IntegerField(min_value=0) sqlcheck = f"CHECK (length(title)<=180 AND price>0)"
class Stores(BaseModel): name = CharField(max_length=80) cut = IntegerField(min_value=0, max_value=100)
class Games(BaseModel): title = CharField(max_length=80) price = IntegerField(min_value=0) rating = IntegerField(min_value=0, max_value=100)
def test_charfield_not_valid(required, nullable, value, ex_mes): field = CharField(required, nullable) with pytest.raises(ValidationError) as e: field.validate(value) assert str(e.value) == ex_mes
class FooSerializer(Serializer): id = IntegerField() name = CharField()
def test_charfield_valid(required, nullable, value): field = CharField(required, nullable) assert not field.validate(value)
class TestForm(Form): first_name = CharField(50, 3) last_name = CharField(50, 2) age = IntegerField()
def setUp(self) -> None: self.test_field = CharField() self.valid_char_num = randint(0, 1000) self.invalid_char_num = randint(1001, 2000) self.valid_text = gen_random_text(self.valid_char_num) self.invalid_text = gen_random_text(self.invalid_char_num)
class Drink(BaseModel): title = CharField(max_length=180) price = IntegerField(min_value=0) capacity = IntegerField(min_value=0)
class PandaSerializer(Serializer): name = CharField() email = EmailField() created_at = DateTimeField()
class CommentSerializer(Serializer): email = EmailField() content = CharField() created_at = DateTimeField()