added the first 3 record definitions
This commit is contained in:
parent
e12557db2d
commit
83e2a0cda9
3 changed files with 157 additions and 3 deletions
38
fields.py
38
fields.py
|
@ -5,11 +5,12 @@ class ValidationError(Exception):
|
|||
class Field(object):
|
||||
creation_counter = 0
|
||||
|
||||
def __init__(self, name=None, max_length=0, required=True):
|
||||
def __init__(self, name=None, max_length=0, required=True, uppercase=True):
|
||||
self.name = name
|
||||
self._value = None
|
||||
self.max_length = max_length
|
||||
self.required = required
|
||||
self.uppercase = uppercase
|
||||
self.creation_counter = Field.creation_counter
|
||||
Field.creation_counter += 1
|
||||
|
||||
|
@ -30,7 +31,6 @@ class Field(object):
|
|||
def __repr__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class TextField(Field):
|
||||
def validate(self):
|
||||
if self.value == None and self.required:
|
||||
|
@ -39,12 +39,44 @@ class TextField(Field):
|
|||
raise ValidationError("value is too long")
|
||||
|
||||
def get_data(self):
|
||||
return (self.value or "").encode('ascii').ljust(self.max_length)
|
||||
value = self.value or ""
|
||||
if self.uppercase:
|
||||
value = value.upper()
|
||||
return value.ljust(self.max_length).encode('ascii')
|
||||
|
||||
class StateField(TextField):
|
||||
def __init__(self, name=None, required=True):
|
||||
return super(StateField, self).__init__(name=name, max_length=2, required=required)
|
||||
|
||||
class EmailField(TextField):
|
||||
def __init__(self, name=None, required=True, max_length=None):
|
||||
return super(EmailField, self).__init__(name=name, max_length=max_length,
|
||||
required=required, uppercase=False)
|
||||
class NumericField(TextField):
|
||||
def validate(self):
|
||||
super(NumericField, self).validate()
|
||||
try:
|
||||
int(self.value)
|
||||
except ValueError:
|
||||
raise ValidationError("field contains non-numeric characters")
|
||||
|
||||
class StaticField(TextField):
|
||||
def __init__(self, name=None, required=True, value=None):
|
||||
super(StaticField, self).__init__(name=name, required=required,
|
||||
max_length=len(value))
|
||||
self._value = value
|
||||
|
||||
class BlankField(TextField):
|
||||
def get_data(self):
|
||||
return " " * self.max_length
|
||||
|
||||
class BooleanField(Field):
|
||||
def validate(self):
|
||||
pass
|
||||
|
||||
def get_data(self):
|
||||
return '1' if self._value else '0'
|
||||
|
||||
class MoneyField(Field):
|
||||
def validate(self):
|
||||
if self.value == None and self.required:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue