initial checkin

This commit is contained in:
Binh 2011-03-26 14:56:00 -05:00
commit e12557db2d
5 changed files with 105 additions and 0 deletions

43
model.py Normal file
View file

@ -0,0 +1,43 @@
from fields import Field, TextField, MoneyField, StateField
class Model(object):
def __init__(self):
for (key, value) in self.__class__.__dict__.items():
if isinstance(value, Field):
field = getattr(self, key)
if not field.name:
setattr(field, 'name', key)
def __setattr__(self, key, value):
if hasattr(self, key) and isinstance(getattr(self, key), Field):
getattr(self, key).value = value
else:
self.__dict__[key] = value
def get_fields(self):
fields = []
for key in self.__class__.__dict__.keys():
attr = getattr(self, key)
if isinstance(attr, Field):
fields.append(attr)
return fields
def get_sorted_fields(self):
fields = self.get_fields()
fields.sort(key=lambda x:x.creation_counter)
return fields
def validate(self):
for f in self.get_fields():
f.validate()
def output(self):
return ''.join([field.get_data() for field in self.get_sorted_fields()])
class TestModel(Model):
field_a = TextField(max_length=20)
field_b = MoneyField(max_length=10)
state = StateField()