don't allow setting attributes that aren't fields, and return field default values on newitem

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40875
This commit is contained in:
Ismael Carnales 2009-02-19 11:40:21 +00:00
parent d95878c0f7
commit 1017f12163
1 changed files with 8 additions and 9 deletions

View File

@ -11,14 +11,16 @@ class Item(object):
self._fields = self._get_fields()
def _get_fields(self):
return dict(i for i in self.__class__.__dict__.iteritems() if
isinstance(i[1], ItemField))
return dict(i for i in self.__class__.__dict__.iteritems() \
if isinstance(i[1], ItemField))
def __setattr__(self, name, value):
if not name.startswith('_') and name in self._fields.keys():
self._values[name] = self._fields[name].to_python(value)
if not name.startswith('_'):
if name in self._fields.keys():
self._values[name] = self._fields[name].to_python(value)
else:
raise AttributeError(name)
else:
# for now setting values that are not fields is permitted
object.__setattr__(self, name, value)
def __getattribute__(self, name):
@ -26,10 +28,7 @@ class Item(object):
try:
return self._values[name]
except KeyError:
# what to to in this case?
# maybe return a default value:
# return self._fields[name].default_value()
return None
return self._fields[name].default_value()
else:
return object.__getattribute__(self, name)