Hide prototypes from CmdScripts output. Resolves #2067
This commit is contained in:
parent
8c44766c0a
commit
15f1eaaac0
5 changed files with 17 additions and 13 deletions
|
|
@ -487,6 +487,8 @@ class CmdScripts(COMMAND_DEFAULT_CLASS):
|
||||||
locks = "cmd:perm(listscripts) or perm(Admin)"
|
locks = "cmd:perm(listscripts) or perm(Admin)"
|
||||||
help_category = "System"
|
help_category = "System"
|
||||||
|
|
||||||
|
excluded_typeclass_paths = ["evennia.prototypes.prototypes.DbPrototype"]
|
||||||
|
|
||||||
def func(self):
|
def func(self):
|
||||||
"""implement method"""
|
"""implement method"""
|
||||||
|
|
||||||
|
|
@ -519,6 +521,8 @@ class CmdScripts(COMMAND_DEFAULT_CLASS):
|
||||||
if not scripts:
|
if not scripts:
|
||||||
caller.msg("No scripts are running.")
|
caller.msg("No scripts are running.")
|
||||||
return
|
return
|
||||||
|
# filter any found scripts by tag category.
|
||||||
|
scripts = scripts.exclude(db_typeclass_path__in=self.excluded_typeclass_paths)
|
||||||
|
|
||||||
if not scripts:
|
if not scripts:
|
||||||
string = "No scripts found with a key '%s', or on an object named '%s'." % (args, args)
|
string = "No scripts found with a key '%s', or on an object named '%s'." % (args, args)
|
||||||
|
|
|
||||||
|
|
@ -1488,7 +1488,7 @@ def node_tags(caller):
|
||||||
as the |cprototype_key|n and with a category "{tag_category}". This allows the spawner to
|
as the |cprototype_key|n and with a category "{tag_category}". This allows the spawner to
|
||||||
optionally update previously spawned objects when their prototype changes.
|
optionally update previously spawned objects when their prototype changes.
|
||||||
""".format(
|
""".format(
|
||||||
tag_category=protlib._PROTOTYPE_TAG_CATEGORY
|
tag_category=protlib.PROTOTYPE_TAG_CATEGORY
|
||||||
)
|
)
|
||||||
|
|
||||||
text = (text, helptext)
|
text = (text, helptext)
|
||||||
|
|
@ -2182,7 +2182,7 @@ def _format_diff_text_and_options(diff, minimal=True, **kwargs):
|
||||||
texts.append(" |c[{optnum}] |yADD|n: {new}".format(
|
texts.append(" |c[{optnum}] |yADD|n: {new}".format(
|
||||||
optnum=optnum, new=_visualize(new, rootname)))
|
optnum=optnum, new=_visualize(new, rootname)))
|
||||||
elif instruction == "REMOVE" and not new:
|
elif instruction == "REMOVE" and not new:
|
||||||
if rootname == "tags" and old[1] == protlib._PROTOTYPE_TAG_CATEGORY:
|
if rootname == "tags" and old[1] == protlib.PROTOTYPE_TAG_CATEGORY:
|
||||||
# special exception for the prototype-tag mechanism
|
# special exception for the prototype-tag mechanism
|
||||||
# this is added post-spawn automatically and should
|
# this is added post-spawn automatically and should
|
||||||
# not be listed as REMOVE.
|
# not be listed as REMOVE.
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ _PROTOTYPE_RESERVED_KEYS = _PROTOTYPE_META_NAMES + (
|
||||||
"tags",
|
"tags",
|
||||||
"attrs",
|
"attrs",
|
||||||
)
|
)
|
||||||
_PROTOTYPE_TAG_CATEGORY = "from_prototype"
|
PROTOTYPE_TAG_CATEGORY = "from_prototype"
|
||||||
_PROTOTYPE_TAG_META_CATEGORY = "db_prototype"
|
_PROTOTYPE_TAG_META_CATEGORY = "db_prototype"
|
||||||
PROT_FUNCS = {}
|
PROT_FUNCS = {}
|
||||||
|
|
||||||
|
|
@ -263,7 +263,7 @@ def save_prototype(prototype):
|
||||||
stored_prototype = stored_prototype[0]
|
stored_prototype = stored_prototype[0]
|
||||||
stored_prototype.desc = in_prototype["prototype_desc"]
|
stored_prototype.desc = in_prototype["prototype_desc"]
|
||||||
if prototype_tags:
|
if prototype_tags:
|
||||||
stored_prototype.tags.clear(category=_PROTOTYPE_TAG_CATEGORY)
|
stored_prototype.tags.clear(category=PROTOTYPE_TAG_CATEGORY)
|
||||||
stored_prototype.tags.batch_add(*in_prototype["prototype_tags"])
|
stored_prototype.tags.batch_add(*in_prototype["prototype_tags"])
|
||||||
stored_prototype.locks.add(in_prototype["prototype_locks"])
|
stored_prototype.locks.add(in_prototype["prototype_locks"])
|
||||||
stored_prototype.attributes.add("prototype", in_prototype)
|
stored_prototype.attributes.add("prototype", in_prototype)
|
||||||
|
|
@ -421,7 +421,7 @@ def search_objects_with_prototype(prototype_key):
|
||||||
matches (Queryset): All matching objects spawned from this prototype.
|
matches (Queryset): All matching objects spawned from this prototype.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return ObjectDB.objects.get_by_tag(key=prototype_key, category=_PROTOTYPE_TAG_CATEGORY)
|
return ObjectDB.objects.get_by_tag(key=prototype_key, category=PROTOTYPE_TAG_CATEGORY)
|
||||||
|
|
||||||
|
|
||||||
def list_prototypes(caller, key=None, tags=None, show_non_use=False, show_non_edit=True):
|
def list_prototypes(caller, key=None, tags=None, show_non_use=False, show_non_edit=True):
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ from evennia.prototypes.prototypes import (
|
||||||
value_to_obj,
|
value_to_obj,
|
||||||
value_to_obj_or_any,
|
value_to_obj_or_any,
|
||||||
init_spawn_value,
|
init_spawn_value,
|
||||||
_PROTOTYPE_TAG_CATEGORY,
|
PROTOTYPE_TAG_CATEGORY,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -269,7 +269,7 @@ def prototype_from_object(obj):
|
||||||
"""
|
"""
|
||||||
# first, check if this object already has a prototype
|
# first, check if this object already has a prototype
|
||||||
|
|
||||||
prot = obj.tags.get(category=_PROTOTYPE_TAG_CATEGORY, return_list=True)
|
prot = obj.tags.get(category=PROTOTYPE_TAG_CATEGORY, return_list=True)
|
||||||
if prot:
|
if prot:
|
||||||
prot = protlib.search_prototype(prot[0])
|
prot = protlib.search_prototype(prot[0])
|
||||||
|
|
||||||
|
|
@ -625,7 +625,7 @@ def batch_update_objects_with_prototype(prototype, diff=None, objects=None, exac
|
||||||
prototype_key = new_prototype["prototype_key"]
|
prototype_key = new_prototype["prototype_key"]
|
||||||
|
|
||||||
if not objects:
|
if not objects:
|
||||||
objects = ObjectDB.objects.get_by_tag(prototype_key, category=_PROTOTYPE_TAG_CATEGORY)
|
objects = ObjectDB.objects.get_by_tag(prototype_key, category=PROTOTYPE_TAG_CATEGORY)
|
||||||
|
|
||||||
if not objects:
|
if not objects:
|
||||||
return 0
|
return 0
|
||||||
|
|
@ -640,7 +640,7 @@ def batch_update_objects_with_prototype(prototype, diff=None, objects=None, exac
|
||||||
for obj in objects:
|
for obj in objects:
|
||||||
do_save = False
|
do_save = False
|
||||||
|
|
||||||
old_prot_key = obj.tags.get(category=_PROTOTYPE_TAG_CATEGORY, return_list=True)
|
old_prot_key = obj.tags.get(category=PROTOTYPE_TAG_CATEGORY, return_list=True)
|
||||||
old_prot_key = old_prot_key[0] if old_prot_key else None
|
old_prot_key = old_prot_key[0] if old_prot_key else None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
@ -743,8 +743,8 @@ def batch_update_objects_with_prototype(prototype, diff=None, objects=None, exac
|
||||||
logger.log_trace(f"Failed to apply prototype '{prototype_key}' to {obj}.")
|
logger.log_trace(f"Failed to apply prototype '{prototype_key}' to {obj}.")
|
||||||
finally:
|
finally:
|
||||||
# we must always make sure to re-add the prototype tag
|
# we must always make sure to re-add the prototype tag
|
||||||
obj.tags.clear(category=_PROTOTYPE_TAG_CATEGORY)
|
obj.tags.clear(category=PROTOTYPE_TAG_CATEGORY)
|
||||||
obj.tags.add(prototype_key, category=_PROTOTYPE_TAG_CATEGORY)
|
obj.tags.add(prototype_key, category=PROTOTYPE_TAG_CATEGORY)
|
||||||
|
|
||||||
if do_save:
|
if do_save:
|
||||||
changed += 1
|
changed += 1
|
||||||
|
|
@ -927,7 +927,7 @@ def spawn(*prototypes, **kwargs):
|
||||||
prototype_key = prototype.get("prototype_key", None)
|
prototype_key = prototype.get("prototype_key", None)
|
||||||
if prototype_key:
|
if prototype_key:
|
||||||
# we make sure to add a tag identifying which prototype created this object
|
# we make sure to add a tag identifying which prototype created this object
|
||||||
tags.append((prototype_key, _PROTOTYPE_TAG_CATEGORY))
|
tags.append((prototype_key, PROTOTYPE_TAG_CATEGORY))
|
||||||
|
|
||||||
val = prot.pop("exec", "")
|
val = prot.pop("exec", "")
|
||||||
execs = init_spawn_value(val, make_iter)
|
execs = init_spawn_value(val, make_iter)
|
||||||
|
|
|
||||||
|
|
@ -851,7 +851,7 @@ class TestMenuModule(EvenniaTest):
|
||||||
|
|
||||||
self.assertEqual(obj.typeclass_path, "evennia.objects.objects.DefaultObject")
|
self.assertEqual(obj.typeclass_path, "evennia.objects.objects.DefaultObject")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
obj.tags.get(category=spawner._PROTOTYPE_TAG_CATEGORY), self.test_prot["prototype_key"]
|
obj.tags.get(category=spawner.PROTOTYPE_TAG_CATEGORY), self.test_prot["prototype_key"]
|
||||||
)
|
)
|
||||||
|
|
||||||
# update helpers
|
# update helpers
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue