Allow contrib.ingame_python.scripts.EventHandler.get_events to work with typeclasses

This commit is contained in:
Vincent Le Goff 2017-07-25 22:40:27 +02:00
parent f7830a5c29
commit f6255caade

View file

@ -10,7 +10,7 @@ import traceback
from django.conf import settings from django.conf import settings
from evennia import DefaultObject, DefaultScript, ChannelDB, ScriptDB from evennia import DefaultObject, DefaultScript, ChannelDB, ScriptDB
from evennia import logger from evennia import logger, ObjectDB
from evennia.utils.ansi import raw from evennia.utils.ansi import raw
from evennia.utils.create import create_channel from evennia.utils.create import create_channel
from evennia.utils.dbserialize import dbserialize from evennia.utils.dbserialize import dbserialize
@ -101,7 +101,7 @@ class EventHandler(DefaultScript):
Return a dictionary of events on this object. Return a dictionary of events on this object.
Args: Args:
obj (Object): the connected object. obj (Object or typeclass): the connected object or typeclass.
Returns: Returns:
A dictionary of the object's events. A dictionary of the object's events.
@ -115,7 +115,11 @@ class EventHandler(DefaultScript):
events = {} events = {}
all_events = self.ndb.events all_events = self.ndb.events
classes = Queue() classes = Queue()
classes.put(type(obj)) if isinstance(obj, ObjectDB):
classes.put(type(obj))
else:
classes.put(obj)
invalid = [] invalid = []
while not classes.empty(): while not classes.empty():
typeclass = classes.get() typeclass = classes.get()