Changed object.player to return a typeclass. Resolves Issue 325. Also made sure that .typeclass always returns a typeclass, also if called on something which is already a typeclass.
This commit is contained in:
parent
4669b8ed89
commit
5874505902
2 changed files with 11 additions and 8 deletions
|
|
@ -250,7 +250,13 @@ class ObjectDB(TypedObject):
|
||||||
We have to be careful here since Player is also
|
We have to be careful here since Player is also
|
||||||
a TypedObject, so as to not create a loop.
|
a TypedObject, so as to not create a loop.
|
||||||
"""
|
"""
|
||||||
return get_field_cache(self, "player")
|
player = get_field_cache(self, "player")
|
||||||
|
if player:
|
||||||
|
try:
|
||||||
|
return player.typeclass
|
||||||
|
except Exception,e:
|
||||||
|
print "player_get:", e
|
||||||
|
return player
|
||||||
|
|
||||||
#@player.setter
|
#@player.setter
|
||||||
def __player_set(self, player):
|
def __player_set(self, player):
|
||||||
|
|
@ -470,8 +476,8 @@ class ObjectDB(TypedObject):
|
||||||
Retrieve sessions connected to this object.
|
Retrieve sessions connected to this object.
|
||||||
"""
|
"""
|
||||||
# if the player is not connected, this will simply be an empty list.
|
# if the player is not connected, this will simply be an empty list.
|
||||||
if _GA(self, "player"):
|
if _GA(self, "db_player"):
|
||||||
return _GA(_GA(self, "player"), "sessions")
|
return _GA(_GA(self, "db_player"), "get_all_sessions")()
|
||||||
return []
|
return []
|
||||||
sessions = property(__sessions_get)
|
sessions = property(__sessions_get)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,9 @@ class TypeClass(object):
|
||||||
if not any('src.typeclasses.models.TypedObject' in str(mro) for mro in dbobj_mro):
|
if not any('src.typeclasses.models.TypedObject' in str(mro) for mro in dbobj_mro):
|
||||||
raise Exception("dbobj is not a TypedObject: %s: %s" % (dbobj_cls, dbobj_mro))
|
raise Exception("dbobj is not a TypedObject: %s: %s" % (dbobj_cls, dbobj_mro))
|
||||||
|
|
||||||
# store the reference to the database model instance
|
# we should always be able to use dbobj/typeclass to get back an object of the desired type
|
||||||
_SA(self, 'dbobj', dbobj)
|
_SA(self, 'dbobj', dbobj)
|
||||||
|
_SA(self, 'typeclass', self)
|
||||||
|
|
||||||
def __getattribute__(self, propname):
|
def __getattribute__(self, propname):
|
||||||
"""
|
"""
|
||||||
|
|
@ -95,10 +96,6 @@ class TypeClass(object):
|
||||||
property on the class, it will NOT be
|
property on the class, it will NOT be
|
||||||
accessible through getattr.
|
accessible through getattr.
|
||||||
"""
|
"""
|
||||||
if propname == 'dbobj':
|
|
||||||
return _GA(self, 'dbobj')
|
|
||||||
if propname == 'typeclass':
|
|
||||||
return self
|
|
||||||
if propname.startswith('__') and propname.endswith('__'):
|
if propname.startswith('__') and propname.endswith('__'):
|
||||||
# python specials are parsed as-is (otherwise things like
|
# python specials are parsed as-is (otherwise things like
|
||||||
# isinstance() fail to identify the typeclass)
|
# isinstance() fail to identify the typeclass)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue