pyaccuwage/model.py
Binh Van Nguyen 068f1bbae4 Added load/dump methods which work similarly to those found in
simplejson. Tests seem to work so far. Still need to figure out
how to get data into the records in some easy way.
2011-04-02 15:28:38 -05:00

43 lines
1.2 KiB
Python

from fields import Field
class Model(object):
record_identifier = ' '
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([self.record_identifier] + [field.get_data() for field in self.get_sorted_fields()])
def read(self, fp):
for field in self.get_sorted_fields():
field.read(fp)