Guest User

Untitled

a guest
Jan 23rd, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 0 0
  1. class IntegerField(Field):
  2.     empty_strings_allowed = False
  3.     default_error_messages = {
  4.         'invalid': _("This value must be an integer."),
  5.     }
  6.     description = _("Integer")
  7.  
  8.     def get_prep_value(self, value):
  9.         if value is None:
  10.             return None
  11.         return int(value)
  12.  
  13.     def get_prep_lookup(self, lookup_type, value):
  14.         if (lookup_type == 'gte' or lookup_type == 'lt') \
  15.            and isinstance(value, float):
  16.                 value = math.ceil(value)
  17.         return super(IntegerField, self).get_prep_lookup(lookup_type, value)
  18.  
  19.     def get_internal_type(self):
  20.         return "IntegerField"
  21.  
  22.     def to_python(self, value):
  23.         if value is None:
  24.             return value
  25.         try:
  26.             return int(value)
  27.         except (TypeError, ValueError):
  28.             raise exceptions.ValidationError(self.error_messages['invalid'])
  29.  
  30.     def formfield(self, **kwargs):
  31.         defaults = {'form_class': forms.IntegerField}
  32.         defaults.update(kwargs)
  33.         return super(IntegerField, self).formfield(**defaults)
  34.  
  35. class BigIntegerField(IntegerField):
  36.     empty_strings_allowed = False
  37.     description = _("Big (8 byte) integer")
  38.     MAX_BIGINT = 9223372036854775807
  39.     def get_internal_type(self):
  40.         return "BigIntegerField"
  41.  
  42.     def formfield(self, **kwargs):
  43.         defaults = {'min_value': -BigIntegerField.MAX_BIGINT - 1,
  44.                     'max_value': BigIntegerField.MAX_BIGINT}
  45.         defaults.update(kwargs)
  46.         return super(BigIntegerField, self).formfield(**defaults)
  47.  
  48. class IPAddressField(Field):
  49.     empty_strings_allowed = False
  50.     description = _("IP address")
  51.     def __init__(self, *args, **kwargs):
  52.         kwargs['max_length'] = 15
  53.         Field.__init__(self, *args, **kwargs)
  54.  
  55.     def get_internal_type(self):
  56.         return "IPAddressField"
  57.  
  58.     def formfield(self, **kwargs):
  59.         defaults = {'form_class': forms.IPAddressField}
  60.         defaults.update(kwargs)
  61.         return super(IPAddressField, self).formfield(**defaults)
  62.  
  63. class NullBooleanField(Field):
  64.     empty_strings_allowed = False
  65.     default_error_messages = {
  66.         'invalid': _("This value must be either None, True or False."),
  67.     }
  68.     description = _("Boolean (Either True, False or None)")
Add Comment
Please, Sign In to add comment