Broke DbHolder into a reusable object

This commit is contained in:
Jonathan Piacenti 2015-02-08 20:57:49 -06:00 committed by Griatch
parent 3d7ac9e365
commit 47170a6ffa

View file

@ -126,6 +126,31 @@ class TypeclassBase(SharedMemoryModelBase):
return new_class
class DbHolder(object):
"Holder for allowing property access of attributes"
def __init__(self, obj, name):
_SA(self, name, obj.attributes)
_SA(self, 'name', name)
def __getattribute__(self, attrname):
if attrname == 'all':
# we allow to overload our default .all
attr = _GA(self, _GA(self, 'name')).get("all")
if attr:
return attr
return self.all
return _GA(self, _GA(self, 'name')).get(attrname)
def __setattr__(self, attrname, value):
_GA(self, _GA(self, 'name')).add(attrname, value)
def __delattr__(self, attrname):
_GA(self, _GA(self, 'name')).remove(attrname)
def get_all(self):
return _GA(self, _GA(self, 'name')).all()
all = property(get_all)
#
# Main TypedObject abstraction
#
@ -542,30 +567,7 @@ class TypedObject(SharedMemoryModel):
try:
return self._db_holder
except AttributeError:
class DbHolder(object):
"Holder for allowing property access of attributes"
def __init__(self, obj):
_SA(self, "attrhandler", obj.attributes)
def __getattribute__(self, attrname):
if attrname == 'all':
# we allow to overload our default .all
attr = _GA(self, "attrhandler").get("all")
if attr:
return attr
return self.all
return _GA(self, "attrhandler").get(attrname)
def __setattr__(self, attrname, value):
_GA(self, "attrhandler").add(attrname, value)
def __delattr__(self, attrname):
_GA(self, "attrhandler").remove(attrname)
def get_all(self):
return _GA(self, "attrhandler").all()
all = property(get_all)
self._db_holder = DbHolder(self)
self._db_holder = DbHolder(self, 'attributes')
return self._db_holder
#@db.setter