mirror of
https://github.com/evennia/evennia.git
synced 2026-04-01 13:37:17 +02:00
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
|
||||
|
||||
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue