base.py 953 B

12345678910111213141516171819202122232425262728293031323334
  1. import re
  2. from django.core.exceptions import ValidationError
  3. from django.core.validators import RegexValidator
  4. def validate_lower(value):
  5. if value != value.lower():
  6. raise ValidationError(
  7. "Invalid value (not lowercase): %(value)s",
  8. code="invalid",
  9. params={"value": value},
  10. )
  11. def validate_upper(value):
  12. if value != value.upper():
  13. raise ValidationError(
  14. "Invalid value (not uppercase): %(value)s",
  15. code="invalid",
  16. params={"value": value},
  17. )
  18. validate_domain_name = [
  19. validate_lower,
  20. RegexValidator(
  21. regex=r"^(([a-z0-9_-]{1,63})\.)*[a-z0-9-]{1,63}$",
  22. message="Domain names must be labels separated by dots. Labels may consist of up to 63 letters, digits, "
  23. "hyphens, and underscores. The last label may not contain an underscore.",
  24. code="invalid_domain_name",
  25. flags=re.IGNORECASE,
  26. ),
  27. ]