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

123456789101112131415161718192021222324252627282930313233343536
  1. from django.db.models.fields import CharField, DecimalField
  2. from django.utils.translation import ugettext_lazy as _
  3. from oscar.core import validators
  4. from oscar.forms import fields
  5. try:
  6. from south.modelsinspector import add_introspection_rules
  7. except ImportError:
  8. pass
  9. else:
  10. add_introspection_rules([], ["^oscar\.models\.fields\.ExtendedURLField$"])
  11. add_introspection_rules([], ["^oscar\.models\.fields\.PositiveDecimalField$"])
  12. class ExtendedURLField(CharField):
  13. description = _("URL")
  14. def __init__(self, verbose_name=None, name=None, verify_exists=True, **kwargs):
  15. kwargs['max_length'] = kwargs.get('max_length', 200)
  16. CharField.__init__(self, verbose_name, name, **kwargs)
  17. validator = validators.ExtendedURLValidator(verify_exists=verify_exists)
  18. self.validators.append(validator)
  19. def formfield(self, **kwargs):
  20. # As with CharField, this will cause URL validation to be performed twice
  21. defaults = {
  22. 'form_class': fields.ExtendedURLField,
  23. }
  24. defaults.update(kwargs)
  25. return super(ExtendedURLField, self).formfield(**defaults)
  26. class PositiveDecimalField(DecimalField):
  27. def formfield(self, **kwargs):
  28. return super(PositiveDecimalField, self).formfield(min_value=0)