From 399dc3640d069362f3a2bff4ccd39426cef82ab3 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 20 Apr 2020 20:15:39 +0200 Subject: [PATCH] Update utils.search argument strings. Resolves #2106. --- evennia/typeclasses/managers.py | 14 ++++++--- evennia/utils/search.py | 56 +++++++++++++++++++++++---------- 2 files changed, 49 insertions(+), 21 deletions(-) diff --git a/evennia/typeclasses/managers.py b/evennia/typeclasses/managers.py index e9ad42ed11..b53755ad45 100644 --- a/evennia/typeclasses/managers.py +++ b/evennia/typeclasses/managers.py @@ -31,7 +31,8 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): # Attribute manager methods def get_attribute( - self, key=None, category=None, value=None, strvalue=None, obj=None, attrtype=None + self, key=None, category=None, value=None, strvalue=None, obj=None, attrtype=None, **kwargs + ): """ Return Attribute objects by key, by category, by value, by @@ -55,6 +56,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): attrype (str, optional): An attribute-type to search for. By default this is either `None` (normal Attributes) or `"nick"`. + kwargs (any): Currently unused. Reserved for future use. Returns: attributes (list): The matching Attributes. @@ -102,7 +104,8 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): key=key, category=category, value=value, strvalue=strvalue, obj=obj ) - def get_by_attribute(self, key=None, category=None, value=None, strvalue=None, attrtype=None): + def get_by_attribute(self, key=None, category=None, value=None, + strvalue=None, attrtype=None, **kwargs): """ Return objects having attributes with the given key, category, value, strvalue or combination of those criteria. @@ -122,6 +125,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): attrype (str, optional): An attribute-type to search for. By default this is either `None` (normal Attributes) or `"nick"`. + kwargs (any): Currently unused. Reserved for future use. Returns: obj (list): Objects having the matching Attributes. @@ -488,12 +492,12 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): def get_typeclass_totals(self, *args, **kwargs) -> object: """ Returns a queryset of typeclass composition statistics. - + Returns: - qs (Queryset): A queryset of dicts containing the typeclass (name), + qs (Queryset): A queryset of dicts containing the typeclass (name), the count of objects with that typeclass and a float representing the percentage of objects associated with the typeclass. - + """ return ( self.values("db_typeclass_path") diff --git a/evennia/utils/search.py b/evennia/utils/search.py index 1a788300cf..45bdc86a87 100644 --- a/evennia/utils/search.py +++ b/evennia/utils/search.py @@ -205,27 +205,31 @@ help_entries = search_help # not the attribute object itself (this is usually what you want) -def search_object_attribute(key=None, category=None, value=None, strvalue=None): +def search_object_attribute(key=None, category=None, value=None, + strvalue=None, attrtype=None, **kwargs): return ObjectDB.objects.get_by_attribute( - key=key, category=category, value=value, strvalue=strvalue + key=key, category=category, value=value, strvalue=strvalue, attrtype=attrtype, **kwargs ) -def search_account_attribute(key=None, category=None, value=None, strvalue=None): +def search_account_attribute(key=None, category=None, value=None, + strvalue=None, attrtype=None, **kwargs): return AccountDB.objects.get_by_attribute( - key=key, category=category, value=value, strvalue=strvalue + key=key, category=category, value=value, strvalue=strvalue, attrtype=attrtype, **kwargs ) -def search_script_attribute(key=None, category=None, value=None, strvalue=None): +def search_script_attribute(key=None, category=None, value=None, + strvalue=None, attrtype=None, **kwargs): return ScriptDB.objects.get_by_attribute( - key=key, category=category, value=value, strvalue=strvalue + key=key, category=category, value=value, strvalue=strvalue, attrtype=attrtype, **kwargs ) -def search_channel_attribute(key=None, category=None, value=None, strvalue=None): +def search_channel_attribute(key=None, category=None, value=None, + strvalue=None, attrtype=None, **kwargs): return Channel.objects.get_by_attribute( - key=key, category=category, value=value, strvalue=strvalue + key=key, category=category, value=value, strvalue=strvalue, attrtype=attrtype, **kwargs ) @@ -243,7 +247,7 @@ search_attribute_object = ObjectDB.objects.get_attribute # object itself (this is usually what you want) -def search_object_by_tag(key=None, category=None): +def search_object_by_tag(key=None, category=None, tagtype=None, **kwargs): """ Find object based on tag or category. @@ -252,6 +256,11 @@ def search_object_by_tag(key=None, category=None): category (str, optional): The category of tag to search for. If not set, uncategorized tags will be searched. + tagtype (str, optional): 'type' of Tag, by default + this is either `None` (a normal Tag), `alias` or + `permission`. This always apply to all queried tags. + kwargs (any): Other optional parameter that may be supported + by the manager method. Returns: matches (list): List of Objects with tags matching @@ -259,13 +268,13 @@ def search_object_by_tag(key=None, category=None): matches were found. """ - return ObjectDB.objects.get_by_tag(key=key, category=category) + return ObjectDB.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs) search_tag = search_object_by_tag # this is the most common case -def search_account_tag(key=None, category=None): +def search_account_tag(key=None, category=None, tagtype=None, **kwargs): """ Find account based on tag or category. @@ -274,6 +283,11 @@ def search_account_tag(key=None, category=None): category (str, optional): The category of tag to search for. If not set, uncategorized tags will be searched. + tagtype (str, optional): 'type' of Tag, by default + this is either `None` (a normal Tag), `alias` or + `permission`. This always apply to all queried tags. + kwargs (any): Other optional parameter that may be supported + by the manager method. Returns: matches (list): List of Accounts with tags matching @@ -281,10 +295,10 @@ def search_account_tag(key=None, category=None): matches were found. """ - return AccountDB.objects.get_by_tag(key=key, category=category) + return AccountDB.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs) -def search_script_tag(key=None, category=None): +def search_script_tag(key=None, category=None, tagtype=None, **kwargs): """ Find script based on tag or category. @@ -293,6 +307,11 @@ def search_script_tag(key=None, category=None): category (str, optional): The category of tag to search for. If not set, uncategorized tags will be searched. + tagtype (str, optional): 'type' of Tag, by default + this is either `None` (a normal Tag), `alias` or + `permission`. This always apply to all queried tags. + kwargs (any): Other optional parameter that may be supported + by the manager method. Returns: matches (list): List of Scripts with tags matching @@ -300,10 +319,10 @@ def search_script_tag(key=None, category=None): matches were found. """ - return ScriptDB.objects.get_by_tag(key=key, category=category) + return ScriptDB.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs) -def search_channel_tag(key=None, category=None): +def search_channel_tag(key=None, category=None, tagtype=None, **kwargs): """ Find channel based on tag or category. @@ -312,6 +331,11 @@ def search_channel_tag(key=None, category=None): category (str, optional): The category of tag to search for. If not set, uncategorized tags will be searched. + tagtype (str, optional): 'type' of Tag, by default + this is either `None` (a normal Tag), `alias` or + `permission`. This always apply to all queried tags. + kwargs (any): Other optional parameter that may be supported + by the manager method. Returns: matches (list): List of Channels with tags matching @@ -319,7 +343,7 @@ def search_channel_tag(key=None, category=None): matches were found. """ - return Channel.objects.get_by_tag(key=key, category=category) + return Channel.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs) # search for tag objects (not the objects they are attached to