class PersonalDetail(models.Model): name = models.CharField(max_length=40) profile_pic = models.ImageField( upload_to='profile_pic/', default='profile_pic/default.png', null=True, ) address = models.TextField() contact_1 = models.CharField(max_length=10, validators=[ int_list_validator(sep='', ), MinLengthValidator(10), ]) contact_2 = models.CharField(max_length=10, null=True, blank=True, validators=[ int_list_validator(sep='', ), MinLengthValidator(10), ]) email = models.EmailField(null=True, blank=True) guardian_name = models.CharField(max_length=40, ) guardian_contact = models.CharField(max_length=10, validators=[ int_list_validator(sep='', ), MinLengthValidator(10), ]) class Meta: abstract = True
class GameResult(models.Model): """ Create one per game. USE THE `cls.create()` METHOD TO CREATE THESE OBJECTS, NOT `cls.objects.create()`. """ players = models.ManyToManyField('accounts.Player', related_name='games') time = models.DateTimeField(auto_now_add=True, blank=True, null=True, editable=False) deck = models.ForeignKey('articles.Deck', on_delete=models.SET_NULL, editable=False, null=True) player_pks = models.CharField(max_length=500, validators=[validators.int_list_validator()], default='') scores = models.CharField(max_length=500, validators=[validators.int_list_validator()], default='') def __str__(self): players = [p.user.username for p in self.players.all()] return f"GameResult @ {self.time.strftime('%Y-%m-%d %H:%M:%S')} | {self.deck} | Players {players} " @classmethod def create(cls, players, deck, player_scores, **kwargs): game_result = cls.objects.create(deck=deck, **kwargs) game_result.player_scores = player_scores game_result.save() game_result.players.set(players) return game_result @property def player_scores(self) -> dict: player_pks = [int(v) for v in self.player_pks.split(',')] scores = [int(v) for v in self.scores.split(',')] assert len(scores) == len(player_pks), "PLAYER-SCORE LISTS MISMATCH!" return dict(zip(player_pks, scores)) @player_scores.setter def player_scores(self, score_dict: dict): # TODO: parse {player: score} dict and store it as key-value lists self.player_pks, self.scores = player_scores_to_commasep(score_dict)
class BackAccountModelAbstract(CreateUpdateMixIn): REL_NAME_PREFIX = 'bank' ACCOUNT_TYPES = [ ('checking', _('Checking')), ('savings', _('Savings')), ('money_mkt', _('Money Market')), ] uuid = models.UUIDField(default=uuid4, editable=False, primary_key=True) name = models.CharField(max_length=150, null=True, blank=True) account_number = models.CharField(max_length=30, null=True, blank=True, validators=[ int_list_validator( sep='', message=_('Only digits allowed')) ]) routing_number = models.CharField(max_length=30, null=True, blank=True, validators=[ int_list_validator( sep='', message=_('Only digits allowed')) ]) aba_number = models.CharField(max_length=30, null=True, blank=True) account_type = models.CharField(choices=ACCOUNT_TYPES, max_length=10) cash_account = models.ForeignKey( 'django_ledger.AccountModel', on_delete=models.CASCADE, verbose_name=_('Cash Account'), related_name=f'{REL_NAME_PREFIX}_cash_account', null=True, blank=True) ledger = models.OneToOneField('django_ledger.LedgerModel', verbose_name=_('Ledger'), on_delete=models.CASCADE) active = models.BooleanField(default=True) hidden = models.BooleanField(default=False) objects = BankAccountModelManager() class Meta: abstract = True verbose_name = _('Bank Account') indexes = [ models.Index(fields=['ledger']), models.Index(fields=['account_type']), models.Index(fields=['cash_account', 'account_type']) ] unique_together = [('cash_account', 'account_number', 'routing_number') ] def __str__(self): return self.name
class Article(models.Model): categories = models.ManyToManyField('Category', related_name='articles', blank=True, null=True) sku = models.CharField(max_length=128, unique=True, verbose_name='SKU') ean = models.CharField( max_length=16, unique=True, verbose_name='EAN', validators=[ int_list_validator( sep='-', message='EAN must be numerical. Can be "-" separated'), EANValidator() ]) name = models.CharField(max_length=1024) quantity = models.IntegerField(default=0, help_text='Defaults to 0') price = models.FloatField() currency = models.CharField(max_length=32, choices=[(currency, currency.value) for currency in Currencies]) def __str__(self): return f'{self.name} '
class Evento(models.Model): titulo = models.CharField(max_length=120) endereco = models.CharField(max_length=120) descricao = models.CharField(max_length=800) dia = models.IntegerField() mes = models.IntegerField() ano = models.IntegerField() horario = models.CharField( max_length=5, validators=[ int_list_validator( sep=',', message="Use vírgula (,) para separar as horas dos minutos"), MinLengthValidator(5, message="Horário no formato 00,00") ]) imagem = models.FileField(blank=True, null=True) def __str__(self): horario = self.horario.replace(',', ':') if (len(str(self.dia)) == 1): self.dia = '0' + str(self.dia) if (len(str(self.mes)) == 1): self.mes = '0' + str(self.mes) return str(self.dia) + '/' + str(self.mes) + ' ' + horario + ' ' + str( self.titulo)
class AbstractSoftwareVersion(BaseModel): software = models.ForeignKey("Software", on_delete=models.CASCADE) version = models.CharField(max_length=25, validators=[int_list_validator(sep='.')]) version_value = models.PositiveIntegerField(null=True, blank=True) published = models.DateField(null=True, blank=True) link = models.URLField(null=True, blank=True) short_description = models.CharField(max_length=200, null=True, blank=True) lead_developer = models.ForeignKey('sources.Person', on_delete=models.SET_NULL, null=True, blank=True, related_name='lead_developer') other_contact = models.ForeignKey('sources.Person', on_delete=models.SET_NULL, null=True, blank=True, related_name='other_contact') version_changes = RichTextUploadingField(blank=True, null=True) def __str__(self): return self.software.name + "-" + self.version def save(self, *args, **kwargs): self.version_value = get_version_value( self.version) # enforce version serialization super().save(*args, **kwargs) # Call the parent save() method. class Meta: abstract = True unique_together = ( 'software', 'version', ) ordering = ['-version_value']
class UserOrderForm(forms.Form): name = forms.CharField(max_length=64, required=True) surname = forms.CharField(max_length=64, required=True) size = forms.CharField(max_length=10, validators=[ int_list_validator(sep=''), MinLengthValidator(2), ]) address = forms.CharField(max_length=128, required=True) from_email = forms.EmailField(required=True) phone = forms.CharField( max_length=10, validators=[ int_list_validator(sep=''), MinLengthValidator(10), ], )
class Penduduk(models.Model): id = models.AutoField(primary_key=True, db_column="id") no_ktp = models.CharField("No KTP", max_length=16, validators=[ MinLengthValidator( 16, message="No KTP Kurang", ), int_list_validator( sep='', message="Cek No KTP", code='invalid', allow_negative=False, ), ], unique=True, db_column="no_ktp") nama = models.CharField("Nama", max_length=200, db_column="nama") tempat_lahir = models.CharField("Tempat Lahir", max_length=200, db_column="tempat_lahir") tanggal_lahir = models.DateField("Tanggal Lahir", db_column="tanggal_lahir") id_jenis_kelamin = models.ForeignKey(JenisKelamin, verbose_name="Jenis Kelamin", default=1, db_column="id_jenis_kelamin") id_desa = models.ForeignKey(Desa, verbose_name="Desa", db_column="id_desa") id_rt = models.ForeignKey(RT, verbose_name="RT", db_column="id_rt") no_rumah = models.CharField("No Rumah", max_length=10, blank=True, null=True, db_column="no_rumah") bantuan = models.DecimalField("Bantuan", max_digits=15, decimal_places=0, default=0, db_column="bantuan") id_status = models.ForeignKey(Status, verbose_name="Status", default=1, db_column="id_status") keterangan = models.TextField("Keterangan", blank=True, null=True, db_column="keterangan") class Meta: db_table = "penduduk" verbose_name = "Penduduk" verbose_name_plural = "Penduduk" def __unicode__(self): return self.nama
class BusinessProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) nip = models.CharField( max_length=10, validators=[ int_list_validator(sep=""), MinLengthValidator(10), ], ) verified = models.BooleanField(default=False)
class registration(models.Model): name = models.CharField(max_length=100) email = models.EmailField(max_length=100, unique=True) password = models.CharField(max_length=100) contact = models.CharField(verbose_name="Phone number", max_length=10, validators=[ int_list_validator(sep=''), MinLengthValidator(10), ], unique=True)
class SignupSerializer(serializers.Serializer): email = serializers.CharField() phone = serializers.CharField(max_length=11, validators=[ validators.int_list_validator(), validators.MinLengthValidator(10) ]) password = serializers.CharField() user_type = serializers.CharField() first_name = serializers.CharField() last_name = serializers.CharField()
class Entidad(models.Model): razonSocial = models.CharField(max_length=100) ruc = models.CharField(help_text="RUC PERÚ", max_length=11, validators=[ int_list_validator(sep=''), MinLengthValidator(11), ]) direccionFiscal = models.CharField(max_length=100) contacto = models.CharField(max_length=100) telefono = models.CharField(help_text="051123456789", max_length=12, validators=[ int_list_validator(sep=''), MinLengthValidator(12), ]) correo = models.EmailField(max_length=254, help_text='*****@*****.**', unique=True) cuenta = models.CharField(max_length=42)
class Client_buffer_recv(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) device_id = models.CharField(max_length=255) data = models.CharField( validators=[int_list_validator(allow_negative=True)], max_length=10000) timestamp = models.DateTimeField() def __str__(self): return str(self.user.username)
class Book(Page): isbn = models.CharField( max_length=13, validators=[ int_list_validator(sep="-"), MinLengthValidator(9), ], help_text="Enter an ISBN (9, 10, or 13) with optional hyphens.", ) content_panels = Page.content_panels + [ FieldPanel("isbn"), ]
class Fellow(models.Model): name = models.CharField(max_length=64) CNIC = models.CharField(max_length=13, validators=[ int_list_validator(sep=''), MinLengthValidator(13), ]) program = models.CharField(max_length=30) ID = models.CharField(max_length=5) graduation = models.CharField(max_length=25) def __str__(self): return f"{self.name}"
class AbstractMaterialVersion(BaseModel): material = models.ForeignKey(Material, on_delete=models.CASCADE) version = models.CharField(max_length=25, validators=[int_list_validator(sep='.')]) version_value = models.PositiveIntegerField(null=True, blank=True) grade = models.CharField(max_length=1, choices=MATERIAL_GRADES, null=True, blank=True) material_lead = models.ForeignKey('sources.Person', blank=True, null=True, on_delete=models.CASCADE, related_name='%(class)s_material_lead') material_expert = models.ForeignKey( 'sources.Person', blank=True, null=True, on_delete=models.CASCADE, related_name='%(class)s_material_expert') modeling_expert = models.ForeignKey( 'sources.Person', blank=True, null=True, on_delete=models.CASCADE, related_name='%(class)s_modeling_expert') other_contact = models.ForeignKey('sources.Person', blank=True, null=True, on_delete=models.CASCADE, related_name='%(class)s_other_contact') notes = models.TextField(blank=True, null=True) datasheet = models.FileField(blank=True, null=True) published = models.DateField(blank=True, null=True) def __str__(self): return self.material.name + "_" + self.version def save(self, *args, **kwargs): self.version_value = get_version_value( self.version) # enforce version serialization super().save(*args, **kwargs) # Call the parent save() method. class Meta: abstract = True unique_together = ( 'material', 'version', ) ordering = ['-version_value']
class History(models.Model): array = models.CharField(max_length=255, validators=[ int_list_validator(sep=', ', message=None, code='invalid', allow_negative=False) ]) calculations = models.CharField(max_length=255, validators=[ int_list_validator( sep=', ', message=None, code='invalid', allow_negative=False) ]) user = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): return f'{self.id} - {self.user}' class Meta: verbose_name_plural = "History"
class EntryCounter(models.Model): form = models.ForeignKey( Form, models.CASCADE, verbose_name=_("form"), related_name="%(app_label)s_%(class)s", ) steps = models.CharField( verbose_name=_("steps"), max_length=200, validators=[int_list_validator()], default="50, 100, 500, 1000", ) prefix = models.CharField(max_length=100, blank=True, verbose_name=_("pefix")) suffix = models.CharField(max_length=100, blank=True, verbose_name=_("suffix")) prefix_missing = models.CharField(max_length=100, blank=True, verbose_name=_("pefix missing")) suffix_missing = models.CharField(max_length=100, blank=True, verbose_name=_("suffix missing")) aggregate_field = models.SlugField( _("aggregate field"), blank=True, help_text=_( "use if you don't want the count of entries, but the sum of a field" ), ) start = models.IntegerField(_("start"), default=0) template_key = models.CharField( _("template"), choices=( ("forms/bar.html", _("bar")), ("forms/number.html", _("number")), ), default="forms/bar.html", max_length=40, ) class Meta: abstract = True
class Add(models.Model): value = models.CharField(max_length=255, validators=[ int_list_validator(sep=', ', message=None, code='invalid', allow_negative=True) ]) user = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): return self.value class Meta: verbose_name_plural = "Adds"
class TransferSerializer(serializers.Serializer): from_user_id = serializers.IntegerField() to_inn = serializers.CharField(max_length=12, validators=[ int_list_validator(sep='', message=None, code='invalid', allow_negative=False) ]) amount = serializers.DecimalField(max_digits=19, decimal_places=2) def create(self, validated_data): return Transfer(**validated_data) def update(self, instance, validated_data): for field, value in validated_data.items(): setattr(instance, field, value) return instance
class UserProfile(models.Model): SECURITY_LEVEL = Choices('Confidential', 'Secret', 'Top_Secret') security = models.CharField( max_length=12, choices=SECURITY_LEVEL, ) user = models.OneToOneField(User, on_delete=models.CASCADE) image = models.ImageField(upload_to='profile_image', blank=True) phone_no = models.CharField(max_length=13, validators=[int_list_validator(sep=''),MinLengthValidator(10),], default='385') address = models.CharField(max_length=200, default='') city = models.CharField(max_length=50, default='') employee_status = models.CharField(max_length=150, default='') def __str__(self): return self.user.username
class StudySectionReview(models.Model): proposal = models.ForeignKey( "proposals.LogoProposal", on_delete=models.CASCADE, related_name='study_reviews', ) raw_score_list = models.CharField( validators=[ int_list_validator(), ], max_length=512, ) summary = models.TextField(blank=True, default='') def __str__(self): return 'Study section score of proposal #{:d}'.format(self.proposal_id)
def test_value_placeholder_with_char_field(self): cases = [ (validators.validate_integer, "-42.5", "invalid"), (validators.validate_email, "a", "invalid"), (validators.validate_email, "a@b\n.com", "invalid"), (validators.validate_email, "a\[email protected]", "invalid"), (validators.validate_slug, "你 好", "invalid"), (validators.validate_unicode_slug, "你 好", "invalid"), (validators.validate_ipv4_address, "256.1.1.1", "invalid"), (validators.validate_ipv6_address, "1:2", "invalid"), (validators.validate_ipv46_address, "256.1.1.1", "invalid"), (validators.validate_comma_separated_integer_list, "a,b,c", "invalid"), (validators.int_list_validator(), "-1,2,3", "invalid"), (validators.MaxLengthValidator(10), 11 * "x", "max_length"), (validators.MinLengthValidator(10), 9 * "x", "min_length"), (validators.URLValidator(), "no_scheme", "invalid"), (validators.URLValidator(), "http://test[.com", "invalid"), (validators.URLValidator(), "http://[::1:2::3]/", "invalid"), ( validators.URLValidator(), "http://" + ".".join(["a" * 35 for _ in range(9)]), "invalid", ), (validators.RegexValidator("[0-9]+"), "xxxxxx", "invalid"), ] for validator, value, code in cases: if isinstance(validator, types.FunctionType): name = validator.__name__ else: name = type(validator).__name__ with self.subTest(name, value=value): class MyForm(forms.Form): field = forms.CharField( validators=[validator], error_messages={code: "%(value)s"}, ) form = MyForm({"field": value}) self.assertIs(form.is_valid(), False) self.assertEqual(form.errors, {"field": [value]})
def test_value_placeholder_with_char_field(self): cases = [ (validators.validate_integer, '-42.5', 'invalid'), (validators.validate_email, 'a', 'invalid'), (validators.validate_email, 'a@b\n.com', 'invalid'), (validators.validate_email, 'a\[email protected]', 'invalid'), (validators.validate_slug, '你 好', 'invalid'), (validators.validate_unicode_slug, '你 好', 'invalid'), (validators.validate_ipv4_address, '256.1.1.1', 'invalid'), (validators.validate_ipv6_address, '1:2', 'invalid'), (validators.validate_ipv46_address, '256.1.1.1', 'invalid'), (validators.validate_comma_separated_integer_list, 'a,b,c', 'invalid'), (validators.int_list_validator(), '-1,2,3', 'invalid'), (validators.MaxLengthValidator(10), 11 * 'x', 'max_length'), (validators.MinLengthValidator(10), 9 * 'x', 'min_length'), (validators.URLValidator(), 'no_scheme', 'invalid'), (validators.URLValidator(), 'http://test[.com', 'invalid'), (validators.URLValidator(), 'http://[::1:2::3]/', 'invalid'), ( validators.URLValidator(), 'http://' + '.'.join(['a' * 35 for _ in range(9)]), 'invalid', ), (validators.RegexValidator('[0-9]+'), 'xxxxxx', 'invalid'), ] for validator, value, code in cases: if isinstance(validator, types.FunctionType): name = validator.__name__ else: name = type(validator).__name__ with self.subTest(name, value=value): class MyForm(forms.Form): field = forms.CharField( validators=[validator], error_messages={code: '%(value)s'}, ) form = MyForm({'field': value}) self.assertIs(form.is_valid(), False) self.assertEqual(form.errors, {'field': [value]})
class SignupSerializer(serializers.Serializer): email = serializers.CharField() phone = serializers.CharField(max_length=10, validators=[ validators.int_list_validator(), validators.MinLengthValidator(10) ]) password = serializers.CharField() user_type = serializers.CharField() first_name = serializers.CharField() last_name = serializers.CharField() class Meta: fields = ( 'first_name', 'last_name', 'email', 'phone', 'password', 'user_type', )
class Project(models.Model): title = models.CharField(max_length=40) description = models.TextField() company = models.ForeignKey(Company, on_delete=models.SET_NULL, null=True) client_name = models.CharField(max_length=40) client_contact = models.CharField(max_length=10, validators=[ int_list_validator(sep='', ), MinLengthValidator(10), ]) client_email = models.EmailField() frontend = models.ForeignKey(Frontend, on_delete=models.SET_NULL, null=True) backend = models.ForeignKey(Backend, on_delete=models.SET_NULL, null=True) trainer_1_name = models.ForeignKey(Trainer, on_delete=models.SET_NULL, null=True) trainer_1_role = models.ForeignKey(TrainerRole, on_delete=models.SET_NULL, null=True) trainer_2_name = models.ForeignKey(Trainer, related_name='trainer_2', on_delete=models.SET_NULL, null=True) trainer_2_role = models.ForeignKey(TrainerRole, related_name='trainer_2_role', on_delete=models.SET_NULL, null=True) # actual_fees = models.FloatField(validators=[MinValueValidator(0)]) from_date = models.DateField() to_date = models.DateField() def __str__(self): return self.title def clean(self): validate_date_range(from_date=self.from_date, to_date=self.to_date)
class LandlordResponse(models.Model): gross_net_bases = (('Gross', 'Gross'), ('Net', 'Net')) building = models.ForeignKey(Building, on_delete=models.CASCADE, default=1) requirement = models.ForeignKey(Requirement, on_delete=models.CASCADE) subject_space_floors = models.CharField(max_length=50, null=False, validators=[int_list_validator()], default='0') subject_space_size_RSF = models.IntegerField(null=False, default=0) quoted_net_rental_rate_USD_per_RSF = models.FloatField(null=False, default=0) estimated_yearly_operating_expenses_USD = models.FloatField(null=False, default=0) annual_increase_in_net_rental_rate_USD = models.IntegerField(null=False, default=0) quoted_improvement_allowance_USD = models.IntegerField(null=False, default=0) quoted_free_rent_months_CNT = models.IntegerField(null=False, default=0) quoted_free_rent_basis = models.CharField(max_length=10, choices=gross_net_bases, default='Gross', null=False) subject_space_former_use = models.TextField(null=True, blank=True) subject_space_existing_condition = models.TextField(null=True, blank=True) other_notes = models.TextField(null=True, blank=True) created_by = models.ForeignKey(User, on_delete=models.CASCADE, default=1) def __str__(self): return self.building.building_name def get_absolute_url(self): return reverse('index')
class Kraepelin(models.Model): NUMERAL_SYSTEM_CHOICES = ( ('latin', 'latin'), ('kanji', 'kanji'), ) STATUS_CHOICES = (('active', 'active'), ('expired', 'expired'), ('finished', 'finished')) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='result') timestamp = models.DateTimeField(auto_now_add=True) timeleft = models.IntegerField(default=7200, blank=True) numeral_system = models.CharField(choices=NUMERAL_SYSTEM_CHOICES, default='latin', max_length=32) numbers = models.CharField( validators=[validate_comma_separated_integer_list], blank=True, null=True, max_length=30000) answers = models.CharField(max_length=30000) results = models.CharField( validators=[int_list_validator(',', allow_negative=True)], max_length=30000) status = models.CharField(choices=STATUS_CHOICES, default='active', max_length=32) room = models.ForeignKey(Room, on_delete=models.RESTRICT, null=True, blank=True) def __str__(self) -> str: return f' {self.status} - {self.user}'
def add(request): this_value = request.POST['value'] validator = int_list_validator(sep=', ', message=None, code='invalid', allow_negative=True) try: validator(this_value) try: instance = Add.objects.get(user=request.user) instance.value = instance.value + ", " + this_value instance.save() return HttpResponse(status=201) except: add = Add() add.value = this_value add.user = request.user add.save() return HttpResponse(status=201) except: return HttpResponse("Invalid data", status=406)
class UserOrder(models.Model): name = models.CharField(max_length=64, default='Name', blank=False) surname = models.CharField(max_length=64, default='Surname', blank=False) address = models.CharField(max_length=128, default='Address', blank=False) phone_no = models.CharField(verbose_name="Phone number", max_length=10, validators=[ int_list_validator(sep=''), MinLengthValidator(10), ], default='1234567890') email = models.EmailField(max_length=128, default='*****@*****.**') shoes_name = models.CharField(max_length=64, default='Shoes name') model = models.CharField(max_length=128) size = models.CharField(max_length=10, default='') time = models.DateTimeField(verbose_name='order time', auto_now=True) mod_check = models.BooleanField(default=False) def __str__(self): return str(self.surname) def get_absolute_url(self): return reverse('userorder', kwargs={'id': self.id})
(validate_comma_separated_integer_list, '12', None), (validate_comma_separated_integer_list, '1,2', None), (validate_comma_separated_integer_list, '1,2,3', None), (validate_comma_separated_integer_list, '10,32', None), (validate_comma_separated_integer_list, '', ValidationError), (validate_comma_separated_integer_list, 'a', ValidationError), (validate_comma_separated_integer_list, 'a,b,c', ValidationError), (validate_comma_separated_integer_list, '1, 2, 3', ValidationError), (validate_comma_separated_integer_list, ',', ValidationError), (validate_comma_separated_integer_list, '1,2,3,', ValidationError), (validate_comma_separated_integer_list, '1,2,', ValidationError), (validate_comma_separated_integer_list, ',1', ValidationError), (validate_comma_separated_integer_list, '1,,2', ValidationError), (int_list_validator(sep='.'), '1.2.3', None), (int_list_validator(sep='.', allow_negative=True), '1.2.3', None), (int_list_validator(allow_negative=True), '-1,-2,3', None), (int_list_validator(allow_negative=True), '1,-2,-12', None), (int_list_validator(), '-1,2,3', ValidationError), (int_list_validator(sep='.'), '1,2,3', ValidationError), (int_list_validator(sep='.'), '1.2.3\n', ValidationError), (MaxValueValidator(10), 10, None), (MaxValueValidator(10), -10, None), (MaxValueValidator(10), 0, None), (MaxValueValidator(NOW), NOW, None), (MaxValueValidator(NOW), NOW - timedelta(days=1), None), (MaxValueValidator(0), 1, ValidationError),
(validate_comma_separated_integer_list, '12', None), (validate_comma_separated_integer_list, '1,2', None), (validate_comma_separated_integer_list, '1,2,3', None), (validate_comma_separated_integer_list, '10,32', None), (validate_comma_separated_integer_list, '', ValidationError), (validate_comma_separated_integer_list, 'a', ValidationError), (validate_comma_separated_integer_list, 'a,b,c', ValidationError), (validate_comma_separated_integer_list, '1, 2, 3', ValidationError), (validate_comma_separated_integer_list, ',', ValidationError), (validate_comma_separated_integer_list, '1,2,3,', ValidationError), (validate_comma_separated_integer_list, '1,2,', ValidationError), (validate_comma_separated_integer_list, ',1', ValidationError), (validate_comma_separated_integer_list, '1,,2', ValidationError), (int_list_validator(sep='.'), '1.2.3', None), (int_list_validator(sep='.'), '1,2,3', ValidationError), (MaxValueValidator(10), 10, None), (MaxValueValidator(10), -10, None), (MaxValueValidator(10), 0, None), (MaxValueValidator(NOW), NOW, None), (MaxValueValidator(NOW), NOW - timedelta(days=1), None), (MaxValueValidator(0), 1, ValidationError), (MaxValueValidator(NOW), NOW + timedelta(days=1), ValidationError), (MinValueValidator(-10), -10, None), (MinValueValidator(-10), 10, None), (MinValueValidator(-10), 0, None), (MinValueValidator(NOW), NOW, None),