validators.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from django.core.exceptions import ValidationError
  2. from django.core.validators import BaseValidator, RegexValidator
  3. from django.utils.translation import gettext_lazy as _
  4. def prefix_validator(prefix):
  5. if prefix.ip != prefix.cidr.ip:
  6. raise ValidationError(
  7. _("{prefix} is not a valid prefix. Did you mean {suggested}?").format(
  8. prefix=prefix, suggested=prefix.cidr
  9. )
  10. )
  11. class MaxPrefixLengthValidator(BaseValidator):
  12. message = _('The prefix length must be less than or equal to %(limit_value)s.')
  13. code = 'max_prefix_length'
  14. def compare(self, a, b):
  15. return a.prefixlen > b
  16. class MinPrefixLengthValidator(BaseValidator):
  17. message = _('The prefix length must be greater than or equal to %(limit_value)s.')
  18. code = 'min_prefix_length'
  19. def compare(self, a, b):
  20. return a.prefixlen < b
  21. DNSValidator = RegexValidator(
  22. regex=r'^([0-9A-Za-z_-]+|\*)(\.[0-9A-Za-z_-]+)*\.?$',
  23. message=_('Only alphanumeric characters, asterisks, hyphens, periods, and underscores are allowed in DNS names'),
  24. code='invalid'
  25. )