New list_node decorator for evmenu. Tested with olc menu

This commit is contained in:
Griatch 2018-03-31 21:10:20 +02:00
parent 3c5d00ac3d
commit 34b8c0dbce
4 changed files with 152 additions and 66 deletions

View file

@ -1882,10 +1882,14 @@ def get_game_dir_path():
raise RuntimeError("server/conf/settings.py not found: Must start from inside game dir.")
def get_all_typeclasses():
def get_all_typeclasses(parent=None):
"""
List available typeclasses from all available modules.
Args:
parent (str, optional): If given, only return typeclasses inheriting (at any distance)
from this parent.
Returns:
typeclasses (dict): On the form {"typeclass.path": typeclass, ...}
@ -1898,4 +1902,7 @@ def get_all_typeclasses():
from evennia.typeclasses.models import TypedObject
typeclasses = {"{}.{}".format(model.__module__, model.__name__): model
for model in apps.get_models() if TypedObject in getmro(model)}
if parent:
typeclasses = {name: typeclass for name, typeclass in typeclasses.items()
if inherits_from(typeclass, parent)}
return typeclasses