| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from django.db.models.fields import CharField, DecimalField
- from django.utils.translation import ugettext_lazy as _
-
- from oscar.core import validators
- from oscar.forms import fields
-
- try:
- from south.modelsinspector import add_introspection_rules
- except ImportError:
- pass
- else:
- add_introspection_rules([], ["^oscar\.models\.fields\.ExtendedURLField$"])
- add_introspection_rules([], [
- "^oscar\.models\.fields\.PositiveDecimalField$"])
- add_introspection_rules([], [
- "^oscar\.models\.fields\.UppercaseCharField$"])
-
-
- class ExtendedURLField(CharField):
- description = _("URL")
-
- def __init__(self, verbose_name=None, name=None,
- verify_exists=None, **kwargs):
- kwargs['max_length'] = kwargs.get('max_length', 200)
- CharField.__init__(self, verbose_name, name, **kwargs)
- # 'verify_exists' was deprecated in Django 1.4. To ensure backwards
- # compatibility, it is still accepted here, but only passed
- # on to the parent class if it was specified.
- self.verify_exists = verify_exists
- if verify_exists is not None:
- validator = validators.ExtendedURLValidator(
- verify_exists=verify_exists)
- else:
- validator = validators.ExtendedURLValidator()
- self.validators.append(validator)
-
- def formfield(self, **kwargs):
- # As with CharField, this will cause URL validation to be performed
- # twice.
- defaults = {
- 'form_class': fields.ExtendedURLField,
- 'verify_exists': self.verify_exists
- }
- defaults.update(kwargs)
- return super(ExtendedURLField, self).formfield(**defaults)
-
-
- class PositiveDecimalField(DecimalField):
- def formfield(self, **kwargs):
- return super(PositiveDecimalField, self).formfield(min_value=0)
-
-
- class UppercaseCharField(CharField):
- def to_python(self, value):
- return super(UppercaseCharField, self).to_python(value).upper()
|