initial checkin
This commit is contained in:
commit
e12557db2d
5 changed files with 105 additions and 0 deletions
57
fields.py
Normal file
57
fields.py
Normal file
|
@ -0,0 +1,57 @@
|
|||
|
||||
class ValidationError(Exception):
|
||||
pass
|
||||
|
||||
class Field(object):
|
||||
creation_counter = 0
|
||||
|
||||
def __init__(self, name=None, max_length=0, required=True):
|
||||
self.name = name
|
||||
self._value = None
|
||||
self.max_length = max_length
|
||||
self.required = required
|
||||
self.creation_counter = Field.creation_counter
|
||||
Field.creation_counter += 1
|
||||
|
||||
def validate(self):
|
||||
raise NotImplemented()
|
||||
|
||||
def get_data(self):
|
||||
raise NotImplemented()
|
||||
|
||||
def __setvalue(self, value):
|
||||
self._value = value
|
||||
|
||||
def __getvalue(self):
|
||||
return self._value
|
||||
|
||||
value = property(__getvalue, __setvalue)
|
||||
|
||||
def __repr__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class TextField(Field):
|
||||
def validate(self):
|
||||
if self.value == None and self.required:
|
||||
raise ValidationError("value required")
|
||||
if len(self.value) > self.max_length:
|
||||
raise ValidationError("value is too long")
|
||||
|
||||
def get_data(self):
|
||||
return (self.value or "").encode('ascii').ljust(self.max_length)
|
||||
|
||||
class StateField(TextField):
|
||||
def __init__(self, name=None, required=True):
|
||||
return super(StateField, self).__init__(name=name, max_length=2, required=required)
|
||||
|
||||
class MoneyField(Field):
|
||||
def validate(self):
|
||||
if self.value == None and self.required:
|
||||
raise ValidationError("value required")
|
||||
if len(str(int((self.value or 0)*100))) > self.max_length:
|
||||
raise ValidationError("value is too long")
|
||||
|
||||
def get_data(self):
|
||||
return str(int((self.value or 0)*100)).encode('ascii').zfill(self.max_length)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue