hopefully fix python 2 and 3 compatability
This commit is contained in:
parent
6381f8b1ec
commit
d08f1ca586
5 changed files with 169 additions and 89 deletions
|
@ -115,22 +115,22 @@ class Field(object):
|
|||
|
||||
class TextField(Field):
|
||||
def validate(self):
|
||||
if self.value == None and self.required:
|
||||
if self.value is None and self.required:
|
||||
raise ValidationError("value required", field=self)
|
||||
if len(self.get_data()) > self.max_length:
|
||||
raise ValidationError("value is too long", field=self)
|
||||
|
||||
def get_data(self):
|
||||
value = self.value or ""
|
||||
value = str(self.value).encode('ascii') or b''
|
||||
if self.uppercase:
|
||||
value = value.upper()
|
||||
return value.ljust(self.max_length).encode('ascii')[:self.max_length]
|
||||
return value.ljust(self.max_length)[:self.max_length]
|
||||
|
||||
def __setvalue(self, value):
|
||||
# NO NEWLINES
|
||||
try:
|
||||
value = value.replace('\n', '').replace('\r', '')
|
||||
except AttributeError as e:
|
||||
except AttributeError:
|
||||
pass
|
||||
self._value = value
|
||||
|
||||
|
@ -146,12 +146,15 @@ class StateField(TextField):
|
|||
self.use_numeric = use_numeric
|
||||
|
||||
def get_data(self):
|
||||
value = self.value or ""
|
||||
# value = str(self.value or 'XX').encode('ascii') or b''
|
||||
value = str(self.value or 'XX')
|
||||
if value.strip() and self.use_numeric:
|
||||
postcode = bytes(str(enums.state_postal_numeric[value.upper()]), 'ascii')
|
||||
postcode = enums.state_postal_numeric[value.upper()]
|
||||
postcode = str(postcode).encode('ascii')
|
||||
return postcode.zfill(self.max_length)
|
||||
else:
|
||||
return value.ljust(self.max_length).encode('ascii')[:self.max_length]
|
||||
formatted = value.encode('ascii').ljust(self.max_length)
|
||||
return formatted[:self.max_length]
|
||||
|
||||
def validate(self):
|
||||
super(StateField, self).validate()
|
||||
|
@ -160,7 +163,7 @@ class StateField(TextField):
|
|||
|
||||
def parse(self, s):
|
||||
if s.strip() and self.use_numeric:
|
||||
states = dict( [(v,k) for (k,v) in list(enums.state_postal_numeric.items())] )
|
||||
states = dict([(v, k) for (k, v) in list(enums.state_postal_numeric.items())])
|
||||
self.value = states[int(s)]
|
||||
else:
|
||||
self.value = s
|
||||
|
@ -179,9 +182,8 @@ class IntegerField(TextField):
|
|||
except ValueError:
|
||||
raise ValidationError("field contains non-numeric characters", field=self)
|
||||
|
||||
|
||||
def get_data(self):
|
||||
value = bytes(str(self.value), 'ascii') if self.value else b''
|
||||
value = str(self.value).encode('ascii') if self.value else b''
|
||||
return value.zfill(self.max_length)[:self.max_length]
|
||||
|
||||
def parse(self, s):
|
||||
|
@ -209,7 +211,7 @@ class BlankField(TextField):
|
|||
|
||||
class ZeroField(BlankField):
|
||||
def get_data(self):
|
||||
return '0' * self.max_length
|
||||
return b'0' * self.max_length
|
||||
|
||||
class CRLFField(TextField):
|
||||
def __init__(self, name=None, required=False):
|
||||
|
@ -255,7 +257,9 @@ class MoneyField(Field):
|
|||
raise ValidationError("value is too long", field=self)
|
||||
|
||||
def get_data(self):
|
||||
return str(int((self.value or 0)*100)).encode('ascii').zfill(self.max_length)[:self.max_length]
|
||||
cents = int((self.value or 0) * 100)
|
||||
formatted = str(cents).encode('ascii').zfill(self.max_length)
|
||||
return formatted[:self.max_length]
|
||||
|
||||
def parse(self, s):
|
||||
self.value = decimal.Decimal(s) * decimal.Decimal('0.01')
|
||||
|
@ -269,7 +273,7 @@ class DateField(TextField):
|
|||
|
||||
def get_data(self):
|
||||
if self._value:
|
||||
return bytes(self._value.strftime('%m%d%Y'), 'ascii')
|
||||
return self._value.strftime('%m%d%Y').encode('ascii')
|
||||
return b'0' * self.max_length
|
||||
|
||||
def parse(self, s):
|
||||
|
@ -301,7 +305,7 @@ class MonthYearField(TextField):
|
|||
|
||||
def get_data(self):
|
||||
if self._value:
|
||||
return bytes(self._value.strftime("%m%Y"), 'ascii')
|
||||
return str(self._value.strftime('%m%Y').encode('ascii'))
|
||||
return b'0' * self.max_length
|
||||
|
||||
def parse(self, s):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue