Update utils.search argument strings. Resolves #2106.

This commit is contained in:
Griatch 2020-04-20 20:15:39 +02:00
parent 1462f312f7
commit cd10d6db3a
2 changed files with 49 additions and 21 deletions

View file

@ -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")

View file

@ -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