Broke DbHolder into a reusable object
This commit is contained in:
parent
3d7ac9e365
commit
47170a6ffa
1 changed files with 26 additions and 24 deletions
|
|
@ -126,6 +126,31 @@ class TypeclassBase(SharedMemoryModelBase):
|
||||||
return new_class
|
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
|
# Main TypedObject abstraction
|
||||||
#
|
#
|
||||||
|
|
@ -542,30 +567,7 @@ class TypedObject(SharedMemoryModel):
|
||||||
try:
|
try:
|
||||||
return self._db_holder
|
return self._db_holder
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
class DbHolder(object):
|
self._db_holder = DbHolder(self, 'attributes')
|
||||||
"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)
|
|
||||||
return self._db_holder
|
return self._db_holder
|
||||||
|
|
||||||
#@db.setter
|
#@db.setter
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue