moved everything into pyaccuwage subdir
This commit is contained in:
parent
5eb8925032
commit
6f5d29faab
6 changed files with 2 additions and 1 deletions
52
pyaccuwage/model.py
Normal file
52
pyaccuwage/model.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
from fields import Field
|
||||
|
||||
class Model(object):
|
||||
record_identifier = ' '
|
||||
required = False
|
||||
|
||||
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)
|
||||
setattr(field, 'parent_name', self.__class__.__name__)
|
||||
|
||||
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()
|
||||
|
||||
try:
|
||||
custom_validator = getattr(self, 'validate_' + f.name)
|
||||
except AttributeError, e:
|
||||
continue
|
||||
if callable(custom_validator):
|
||||
custom_validator(f)
|
||||
|
||||
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)
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue