diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index 019674ecf9..7b77be2c08 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -1945,7 +1945,7 @@ class CmdExamine(ObjManipCommand): if perms: perms_string = (", ".join(perms)) else: - perms_string = "Default" + perms_string = "" if obj.is_superuser: perms_string += " [Superuser]" @@ -2004,9 +2004,10 @@ class CmdExamine(ObjManipCommand): string += self.format_attributes(obj) # display Tags - tags_string = utils.fill(", ".join(tag for tag in obj.tags.all()), indent=5) + tags_string = utils.fill(", ".join("%s[%s]" % (tag, category) + for tag, category in obj.tags.all(return_key_and_category=True)), indent=5) if tags_string: - string += "\n|wTags|n: %s" % tags_string + string += "\n|wTags[category]|n: %s" % tags_string.strip() # add the contents exits = [] diff --git a/evennia/typeclasses/managers.py b/evennia/typeclasses/managers.py index 297c04408e..9347e9fb42 100644 --- a/evennia/typeclasses/managers.py +++ b/evennia/typeclasses/managers.py @@ -88,7 +88,8 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): attributes (list): The matching Attributes. """ - query = [("attribute__db_attrtype", attrtype)] + dbmodel = self.model.__dbclass__.__name__.lower() + query = [("attribute__db_attrtype", attrtype), ("attribute__db_model", dbmodel)] if obj: query.append(("%s__id" % self.model.__name__.lower(), obj.id)) if key: @@ -149,7 +150,8 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): obj (list): Objects having the matching Attributes. """ - query = [("db_attributes__db_attrtype", attrtype)] + dbmodel = self.model.__dbclass__.__name__.lower() + query = [("db_attributes__db_attrtype", attrtype), ("db_attributes__db_model", dbmodel)] if key: query.append(("db_attributes__db_key", key)) if category: @@ -179,7 +181,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): # Tag manager methods - def get_tag(self, key=None, category=None, obj=None, tagtype=None, dbmodel="objectdb", global_search=False): + def get_tag(self, key=None, category=None, obj=None, tagtype=None, global_search=False): """ Return Tag objects by key, by category, by object (it is stored on) or with a combination of those criteria. @@ -192,9 +194,6 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): search for is. tagtype (str, optional): One of None (normal tags), "alias" or "permission" - dbobj (str, optional): A natural_key for which type of - entity this tag attaches to. Example, "objectdb" or - "scriptdb". global_search (bool, optional): Include all possible tags, not just tags on this object @@ -205,6 +204,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): global _Tag if not _Tag: from evennia.typeclasses.models import Tag as _Tag + dbmodel = self.model.__dbclass__.__name__.lower() if global_search: # search all tags using the Tag model query = [("db_tagtype", tagtype), ("db_model", dbmodel)] @@ -257,7 +257,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): return self.get_tag(key=key, category=category, obj=obj, tagtype="alias") @returns_typeclass_list - def get_by_tag(self, key=None, category=None, tagtype=None, dbmodel="objectdb"): + def get_by_tag(self, key=None, category=None, tagtype=None): """ Return objects having tags with a given key or category or combination of the two. @@ -268,11 +268,10 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): tagtype (str or None, optional): 'type' of Tag, by default this is either `None` (a normal Tag), `alias` or `permission`. - dbmodel (str or None, optionsl): The naturalkey of the entity this Tag - attaches to. A string like "objectdb", "scriptdb" etc. Returns: objects (list): Objects with matching tag. """ + dbmodel = self.model.__dbclass__.__name__.lower() query = [("db_tags__db_tagtype", tagtype), ("db_tags__db_model", dbmodel)] if key: query.append(("db_tags__db_key", key.lower())) @@ -306,7 +305,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): """ return self.get_by_tag(key=key, category=category, tagtype="alias") - def create_tag(self, key=None, category=None, data=None, tagtype=None, dbmodel="objectdb"): + def create_tag(self, key=None, category=None, data=None, tagtype=None): """ Create a new Tag of the base type associated with this object. This makes sure to create case-insensitive tags. @@ -322,9 +321,6 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): tagtype (str or None, optional): 'type' of Tag, by default this is either `None` (a normal Tag), `alias` or `permission`. - dbmodel (str, optional): Which model type this Tag attaches to. - This is a natural_key like "dbobject" or "dbscript". - Notes: The `data` field is not part of the uniqueness of the tag: Setting `data` on an existing tag will overwrite the old @@ -336,8 +332,9 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): data = str(data) if data is not None else None # try to get old tag + dbmodel = self.model.__dbclass__.__name__.lower() tag = self.get_tag(key=key, category=category, tagtype=tagtype, - dbmodel=dbmodel, global_search=True) + global_search=True) if tag and data is not None: # get tag from list returned by get_tag tag = tag[0] diff --git a/evennia/typeclasses/tags.py b/evennia/typeclasses/tags.py index b0d4e04d56..670a245cfc 100644 --- a/evennia/typeclasses/tags.py +++ b/evennia/typeclasses/tags.py @@ -259,7 +259,7 @@ class TagHandler(object): # will overload data on an existing tag since that is not # considered part of making the tag unique) tagobj = self.obj.__class__.objects.create_tag(key=tagstr, category=category, data=data, - tagtype=self._tagtype, dbmodel=self._model) + tagtype=self._tagtype) getattr(self.obj, self._m2m_fieldname).add(tagobj) self._setcache(tagstr, category, tagobj)