pyaccuwage/model.py
2011-03-26 14:56:00 -05:00

43 lines
1.2 KiB
Python

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()