bumping version, improving field type guessing
This commit is contained in:
parent
730073dcd1
commit
b40e736ae0
4 changed files with 49 additions and 29 deletions
|
@ -12,7 +12,7 @@ class ValidationError(Exception):
|
|||
return "(%s.%s) %s" % (self.field.parent_name, self.field.name, self.msg)
|
||||
else:
|
||||
return repr(self.msg)
|
||||
|
||||
|
||||
|
||||
class Field(object):
|
||||
creation_counter = 0
|
||||
|
@ -31,13 +31,13 @@ class Field(object):
|
|||
|
||||
def get_data(self):
|
||||
raise NotImplemented
|
||||
|
||||
|
||||
def __setvalue(self, value):
|
||||
self._value = value
|
||||
|
||||
def __getvalue(self):
|
||||
def __getvalue(self):
|
||||
return self._value
|
||||
|
||||
|
||||
value = property(__getvalue, __setvalue)
|
||||
|
||||
def read(self, fp):
|
||||
|
@ -50,7 +50,7 @@ class Field(object):
|
|||
self.value = s.strip()
|
||||
|
||||
|
||||
class TextField(Field):
|
||||
class TextField(Field):
|
||||
def validate(self):
|
||||
if self.value == None and self.required:
|
||||
raise ValidationError("value required", field=self)
|
||||
|
@ -65,7 +65,7 @@ class TextField(Field):
|
|||
|
||||
|
||||
class StateField(TextField):
|
||||
def __init__(self, name=None, required=True, use_numeric=False):
|
||||
def __init__(self, name=None, required=True, use_numeric=False, max_length=2):
|
||||
super(StateField, self).__init__(name=name, max_length=2, required=required)
|
||||
self.use_numeric = use_numeric
|
||||
|
||||
|
@ -90,7 +90,7 @@ class StateField(TextField):
|
|||
|
||||
class EmailField(TextField):
|
||||
def __init__(self, name=None, required=True, max_length=None):
|
||||
return super(EmailField, self).__init__(name=name, max_length=max_length,
|
||||
return super(EmailField, self).__init__(name=name, max_length=max_length,
|
||||
required=required, uppercase=False)
|
||||
|
||||
class IntegerField(TextField):
|
||||
|
@ -101,7 +101,7 @@ class IntegerField(TextField):
|
|||
int(self.value)
|
||||
except ValueError:
|
||||
raise ValidationError("field contains non-numeric characters", field=self)
|
||||
|
||||
|
||||
|
||||
def get_data(self):
|
||||
value = self.value or ""
|
||||
|
@ -123,7 +123,7 @@ class StaticField(TextField):
|
|||
class BlankField(TextField):
|
||||
def __init__(self, name=None, max_length=0, required=False):
|
||||
super(TextField, self).__init__(name=name, max_length=max_length, required=required, uppercase=False)
|
||||
|
||||
|
||||
def get_data(self):
|
||||
return " " * self.max_length
|
||||
|
||||
|
@ -161,7 +161,7 @@ class MoneyField(Field):
|
|||
|
||||
class DateField(TextField):
|
||||
def __init__(self, name=None, required=True, value=None):
|
||||
super(TextField, self).__init__(name=name, required=required, max_length=8)
|
||||
super(TextField, self).__init__(name=name, required=required, max_length=8)
|
||||
if value:
|
||||
self.value = value
|
||||
|
||||
|
@ -169,7 +169,7 @@ class DateField(TextField):
|
|||
if self._value:
|
||||
return self._value.strftime('%m%d%Y')
|
||||
return '0' * self.max_length
|
||||
|
||||
|
||||
def parse(self, s):
|
||||
if int(s) > 0:
|
||||
self.value = datetime.date(*[int(x) for x in s[4:8], s[0:2], s[2:4]])
|
||||
|
@ -184,9 +184,9 @@ class DateField(TextField):
|
|||
else:
|
||||
self._value = None
|
||||
|
||||
def __getvalue(self):
|
||||
def __getvalue(self):
|
||||
return self._value
|
||||
|
||||
|
||||
value = property(__getvalue, __setvalue)
|
||||
|
||||
|
||||
|
@ -196,7 +196,7 @@ class MonthYearField(TextField):
|
|||
|
||||
if value:
|
||||
self.value = value
|
||||
|
||||
|
||||
def get_data(self):
|
||||
if self._value:
|
||||
return self._value.strftime("%m%Y")
|
||||
|
@ -215,9 +215,9 @@ class MonthYearField(TextField):
|
|||
self._value = datetime.date(*[int(x) for x in value[2:6], value[0:2], 1])
|
||||
else:
|
||||
self._value = None
|
||||
|
||||
def __getvalue(self):
|
||||
|
||||
def __getvalue(self):
|
||||
return self._value
|
||||
|
||||
|
||||
value = property(__getvalue, __setvalue)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue