base.py 985 B

123456789101112131415161718192021222324252627282930
  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('Invalid value (not lowercase): %(value)s',
  7. code='invalid',
  8. params={'value': value})
  9. def validate_upper(value):
  10. if value != value.upper():
  11. raise ValidationError('Invalid value (not uppercase): %(value)s',
  12. code='invalid',
  13. params={'value': value})
  14. validate_domain_name = [
  15. validate_lower,
  16. RegexValidator(
  17. regex=r'^(([a-z0-9_-]{1,63})\.)*[a-z0-9-]{1,63}$',
  18. message='Domain names must be labels separated by dots. Labels may consist of up to 63 letters, digits, '
  19. 'hyphens, and underscores. The last label may not contain an underscore.',
  20. code='invalid_domain_name',
  21. flags=re.IGNORECASE
  22. )
  23. ]