Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233
  1. from django.forms import fields
  2. from oscar.core import validators
  3. class ExtendedURLField(fields.URLField):
  4. """
  5. Custom field similar to URLField type field, however also accepting and
  6. validating local relative URLs, ie. '/product/'
  7. """
  8. def __init__(self, max_length=None, min_length=None, verify_exists=None,
  9. *args, **kwargs):
  10. # We don't pass on verify_exists as it has been deprecated in Django
  11. # 1.4
  12. super(fields.URLField, self).__init__(
  13. max_length, min_length, *args, **kwargs)
  14. # Even though it is deprecated, we still pass on 'verify_exists' as
  15. # Oscar's ExtendedURLValidator uses it to determine whether to test
  16. # local URLs.
  17. if verify_exists is not None:
  18. validator = validators.ExtendedURLValidator(
  19. verify_exists=verify_exists)
  20. else:
  21. validator = validators.ExtendedURLValidator()
  22. self.validators.append(validator)
  23. def to_python(self, value):
  24. # We need to avoid having 'http' inserted at the start of
  25. # every value so that local URLs are valid.
  26. if value and value.startswith('/'):
  27. return value
  28. return super(ExtendedURLField, self).to_python(value)