| 12345678910111213141516171819202122232425262728 |
- from django.forms import fields
- from django.core.validators import URL_VALIDATOR_USER_AGENT
-
- from oscar.core import validators
-
-
- class ExtendedURLField(fields.URLField):
- """
- Custom field similar to URLField type field, however also accepting and
- validating local relative URLs, ie. '/product/'
- """
-
- def __init__(self, max_length=None, min_length=None, verify_exists=False,
- validator_user_agent=URL_VALIDATOR_USER_AGENT, *args, **kwargs):
- # intentionally skip one step when calling super()
- super(fields.URLField, self).__init__(max_length, min_length, *args,
- **kwargs)
- validator = validators.ExtendedURLValidator(
- verify_exists=verify_exists,
- validator_user_agent=validator_user_agent)
- self.validators.append(validator)
-
- def to_python(self, value):
- # We need to avoid having 'http' inserted at the start of
- # every value
- if value and value.startswith('/'):
- return value
- return super(ExtendedURLField, self).to_python(value)
|