evennia.accounts.manager¶
The managers for the custom Account object and permissions.
- class evennia.accounts.manager.AccountManager(*args, **kwargs)[source]¶
Bases:
AccountDBManager,TypeclassManager
- class evennia.accounts.manager.AccountDBManager(*args, **kwargs)[source]¶
Bases:
TypedObjectManager,UserManagerThis AccountManager implements methods for searching and manipulating Accounts directly from the database.
Evennia-specific search methods (will return Characters if possible or a Typeclass/list of Typeclassed objects, whereas Django-general methods will return Querysets or database objects):
dbref (converter) dbref_search get_dbref_range object_totals typeclass_search num_total_accounts get_connected_accounts get_recently_created_accounts get_recently_connected_accounts get_account_from_email get_account_from_uid get_account_from_name account_search (equivalent to evennia.search_account)
- num_total_accounts()[source]¶
Get total number of accounts.
- Returns:
count (int) – The total number of registered accounts.
- get_connected_accounts()[source]¶
Get all currently connected accounts.
- Returns:
count (list) –
- Account objects with currently
connected sessions.
- get_recently_created_accounts(days=7)[source]¶
Get accounts recently created.
- Parameters:
days (int, optional) – How many days in the past “recently” means.
- Returns:
accounts (list) – The Accounts created the last days interval.
- get_recently_connected_accounts(days=7)[source]¶
Get accounts recently connected to the game.
- Parameters:
days (int, optional) – Number of days backwards to check
- Returns:
accounts (list) –
- The Accounts connected to the game in the
last days interval.
- get_account_from_email(uemail)[source]¶
Search account by Returns an account object based on email address.
- Parameters:
uemail (str) – An email address to search for.
- Returns:
account (Account) – A found account, if found.
- get_account_from_uid(uid)[source]¶
Get an account by id.
- Parameters:
uid (int) – Account database id.
- Returns:
account (Account) – The result.
- get_account_from_name(uname)[source]¶
Get account object based on name.
- Parameters:
uname (str) – The Account name to search for.
- Returns:
account (Account) – The found account.
- search_account(ostring, exact=True, typeclass=None)[source]¶
Searches for a particular account by name or database id.
- Parameters:
ostring (str or int) – A key string or database id.
exact (bool, optional) – Only valid for string matches. If True, requires exact (non-case-sensitive) match, otherwise also match also keys containing the ostring (non-case-sensitive fuzzy match).
typeclass (str or Typeclass, optional) – Limit the search only to accounts of this typeclass.
- Returns:
Queryset – A queryset (an iterable) with 0, 1 or more matches.
- create_account(key, email, password, typeclass=None, is_superuser=False, locks=None, permissions=None, tags=None, attributes=None, report_to=None)[source]¶
This creates a new account.
- Parameters:
key (str) – The account’s name. This should be unique.
email (str or None) – Email on valid addr@addr.domain form. If the empty string, will be set to None.
password (str) – Password in cleartext.
- Keyword Arguments:
typeclass (str) – The typeclass to use for the account.
is_superuser (bool) – Whether or not this account is to be a superuser
locks (str) – Lockstring.
permission (list) – List of permission strings.
tags (list) – List of Tags on form (key, category[, data])
attributes (list) – List of Attributes on form (key, value [, category, [,lockstring [, default_pass]]])
report_to (Object) – An object with a msg() method to report errors to. If not given, errors will be logged.
- Returns:
Account – The newly created Account.
- Raises:
ValueError – If key already exists in database.
Notes
Usually only the server admin should need to be superuser, all other access levels can be handled with more fine-grained permissions or groups. A superuser bypasses all lock checking operations and is thus not suitable for play-testing the game.
- account_search(ostring, exact=True, typeclass=None)¶
Searches for a particular account by name or database id.
- Parameters:
ostring (str or int) – A key string or database id.
exact (bool, optional) – Only valid for string matches. If True, requires exact (non-case-sensitive) match, otherwise also match also keys containing the ostring (non-case-sensitive fuzzy match).
typeclass (str or Typeclass, optional) – Limit the search only to accounts of this typeclass.
- Returns:
Queryset – A queryset (an iterable) with 0, 1 or more matches.
- class evennia.accounts.manager.TypeclassManager(*args, **kwargs)[source]¶
Bases:
TypedObjectManagerManager for the typeclasses. The main purpose of this manager is to limit database queries to the given typeclass despite all typeclasses technically being defined in the same core database model.
- all()[source]¶
Overload method to return all matches, filtering for typeclass.
- Returns:
objects (queryset) – The objects found.
- all_family()[source]¶
Return all matches, allowing matches from all subclasses of the typeclass.
- Returns:
objects (list) – The objects found.
- annotate(*args, **kwargs)[source]¶
Overload annotate method to filter on typeclass before annotating. :param *args: Positional arguments passed along to queryset annotate method. :type *args: any :param **kwargs: Keyword arguments passed along to queryset annotate method. :type **kwargs: any
- Returns:
Annotated queryset.
- count()[source]¶
Overload method to return number of matches, filtering for typeclass.
- Returns:
integer – Number of objects found.
- filter(*args, **kwargs)[source]¶
Overload of the standard filter function. This filter will limit itself to only the current typeclass.
- Parameters:
args (any) – These are passed on as arguments to the default django filter method.
- Keyword Arguments:
kwargs (any) – These are passed on as normal arguments to the default django filter method.
- Returns:
objects (queryset) – The objects found.
- filter_family(*args, **kwargs)[source]¶
Variation of filter that allows results both from typeclass and from subclasses of typeclass
- Parameters:
args (any) – These are passed on as arguments to the default django filter method.
- Keyword Arguments:
kwargs (any) – These are passed on as normal arguments to the default django filter method.
- Returns:
objects (list) – The objects found.
- first()[source]¶
Overload method to return first match, filtering for typeclass.
- Returns:
object (object) – The object found.
- Raises:
ObjectNotFound – The exact name of this exception depends on the model base used.
- get(*args, **kwargs)[source]¶
Overload the standard get. This will limit itself to only return the current typeclass.
- Parameters:
args (any) – These are passed on as arguments to the default django get method.
- Keyword Arguments:
kwargs (any) – These are passed on as normal arguments to the default django get method
- Returns:
object (object) – The object found.
- Raises:
ObjectNotFound – The exact name of this exception depends on the model base used.
- get_family(*args, **kwargs)[source]¶
Variation of get that not only returns the current typeclass but also all subclasses of that typeclass.
- Keyword Arguments:
kwargs (any) – These are passed on as normal arguments to the default django get method.
- Returns:
objects (list) – The objects found.
- Raises:
ObjectNotFound – The exact name of this exception depends on the model base used.
- last()[source]¶
Overload method to return last match, filtering for typeclass.
- Returns:
object (object) – The object found.
- Raises:
ObjectNotFound – The exact name of this exception depends on the model base used.
- smart_search(query)[source]¶
Search by supplying a string with optional extra search criteria to aid the query.
- Parameters:
query (All three can be combined in the same) – A search criteria that accepts extra search criteria on the following
forms – [key|alias|#dbref…] [tag==<tagstr>[:category]…] [attr==<key>:<value>:category…]
query
spaces. (separated by)
- Returns:
matches (queryset) –
- A queryset result matching all queries exactly. If wanting to use
spaces or ==, != in tags or attributes, enclose them in quotes.
Example
house = smart_search(“key=foo alias=bar tag=house:building tag=magic attr=color:red”)
Note
The flexibility of this method is limited by the input line format. Tag/attribute matching only works for matching primitives. For even more complex queries, such as ‘in’ operations or object field matching, use the full django query language.
- values(*args, **kwargs)[source]¶
Overload values method to filter on typeclass first. :param *args: Positional arguments passed along to values method. :type *args: any :param **kwargs: Keyword arguments passed along to values method. :type **kwargs: any
- Returns:
Queryset of values dictionaries, just filtered by typeclass first.
- values_list(*args, **kwargs)[source]¶
Overload values method to filter on typeclass first. :param *args: Positional arguments passed along to values_list method. :type *args: any :param **kwargs: Keyword arguments passed along to values_list method. :type **kwargs: any
- Returns:
Queryset of value_list tuples, just filtered by typeclass first.
- class evennia.accounts.manager.TypedObjectManager(*args, **kwargs)[source]¶
Bases:
SharedMemoryManagerCommon ObjectManager for all dbobjects.
- create_tag(key=None, category=None, data=None, tagtype=None)[source]¶
Create a new Tag of the base type associated with this object. This makes sure to create case-insensitive tags. If the exact same tag configuration (key+category+tagtype+dbmodel) exists on the model, a new tag will not be created, but an old one returned.
- Parameters:
key (str, optional) – Tag key. Not case sensitive.
category (str, optional) – Tag category. Not case sensitive.
data (str, optional) – Extra information about the tag.
tagtype (str or None, optional) – ‘type’ of Tag, by default this is either None (a normal Tag), alias or permission.
Notes
The data field is not part of the uniqueness of the tag: Setting data on an existing tag will overwrite the old data field. It is intended only as a way to carry information about the tag (like a help text), not to carry any information about the tagged objects themselves.
- dbref(dbref, reqhash=True)[source]¶
Determing if input is a valid dbref.
- Parameters:
dbref (str or int) – A possible dbref.
reqhash (bool, optional) – If the “#” is required for this to be considered a valid hash.
- Returns:
dbref (int or None) – The integer part of the dbref.
Notes
Valid forms of dbref (database reference number) are either a string ‘#N’ or an integer N.
- dbref_search(dbref)[source]¶
Alias to get_id.
- Parameters:
dbref (str or int) – The id to search for.
- Returns:
Queryset – Queryset with 0 or 1 match.
- get_alias(key=None, category=None, obj=None)[source]¶
Get an alias from the database.
- Parameters:
key (str, optional) – The permission’s identifier.
category (str, optional) – The permission’s category.
obj (object, optional) – The object on which this Tag is set.
- Returns:
alias (list) – Alias objects.
- get_attribute(key=None, category=None, value=None, strvalue=None, obj=None, attrtype=None, **kwargs)[source]¶
Return Attribute objects by key, by category, by value, by strvalue, by object (it is stored on) or with a combination of those criteria.
- Parameters:
key (str, optional) – The attribute’s key to search for
category (str, optional) – The category of the attribute(s) to search for.
value (str, optional) – The attribute value to search for. Note that this is not a very efficient operation since it will query for a pickled entity. Mutually exclusive to strvalue.
strvalue (str, optional) – The str-value to search for. Most Attributes will not have strvalue set. This is mutually exclusive to the value keyword and will take precedence if given.
obj (Object, optional) – On which object the Attribute to search for is.
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:
list – The matching Attributes.
- get_by_alias(key=None, category=None)[source]¶
Return objects having aliases with a given key or category or combination of the two.
- Parameters:
key (str, optional) – Alias key. Not case sensitive.
category (str, optional) – Alias category. Not case sensitive.
- Returns:
objects (list) – Objects with matching alias.
- get_by_attribute(key=None, category=None, value=None, strvalue=None, attrtype=None, **kwargs)[source]¶
Return objects having attributes with the given key, category, value, strvalue or combination of those criteria.
- Parameters:
key (str, optional) – The attribute’s key to search for
category (str, optional) – The category of the attribute to search for.
value (str, optional) – The attribute value to search for. Note that this is not a very efficient operation since it will query for a pickled entity. Mutually exclusive to strvalue.
strvalue (str, optional) – The str-value to search for. Most Attributes will not have strvalue set. This is mutually exclusive to the value keyword and will take precedence if given.
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.
- get_by_nick(key=None, nick=None, category='inputline')[source]¶
Get object based on its key or nick.
- Parameters:
key (str, optional) – The attribute’s key to search for
nick (str, optional) – The nickname to search for
category (str, optional) – The category of the nick to search for.
- Returns:
obj (list) – Objects having the matching Nicks.
- get_by_permission(key=None, category=None)[source]¶
Return objects having permissions with a given key or category or combination of the two.
- Parameters:
key (str, optional) – Permissions key. Not case sensitive.
category (str, optional) – Permission category. Not case sensitive.
- Returns:
objects (list) – Objects with matching permission.
- get_by_tag(key=None, category=None, tagtype=None, **kwargs)[source]¶
Return objects having tags with a given key or category or combination of the two. Also accepts multiple tags/category/tagtype
- Parameters:
key (str or list, optional) – Tag key or list of keys. Not case sensitive.
category (str or list, optional) – Tag category. Not case sensitive. If key is a list, a single category can either apply to all keys in that list or this must be a list matching the key list element by element. If no key is given, all objects with tags of this category are returned.
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.
- Keyword Arguments:
match (str) – “all” (default) or “any”; determines whether the target object must be tagged with ALL of the provided tags/categories or ANY single one. ANY will perform a weighted sort, so objects with more tag matches will outrank those with fewer tag matches.
- Returns:
objects (list) – Objects with matching tag.
- Raises:
IndexError – If key and category are both lists and category is shorter than key.
- get_dbref_range(min_dbref=None, max_dbref=None)[source]¶
Get objects within a certain range of dbrefs.
- Parameters:
min_dbref (int) – Start of dbref range.
max_dbref (int) – End of dbref range (inclusive)
- Returns:
objects (list) –
- TypedObjects with dbrefs within
the given dbref ranges.
- get_id(dbref)[source]¶
Find object with given dbref.
- Parameters:
dbref (str or int) – The id to search for.
- Returns:
object (TypedObject) – The matched object.
- get_nick(key=None, category=None, value=None, strvalue=None, obj=None)[source]¶
Get a nick, in parallel to get_attribute.
- Parameters:
key (str, optional) – The nicks’s key to search for
category (str, optional) – The category of the nicks(s) to search for.
value (str, optional) – The attribute value to search for. Note that this is not a very efficient operation since it will query for a pickled entity. Mutually exclusive to strvalue.
strvalue (str, optional) – The str-value to search for. Most Attributes will not have strvalue set. This is mutually exclusive to the value keyword and will take precedence if given.
obj (Object, optional) – On which object the Attribute to search for is.
- Returns:
nicks (list) – The matching Nicks.
- get_permission(key=None, category=None, obj=None)[source]¶
Get a permission from the database.
- Parameters:
key (str, optional) – The permission’s identifier.
category (str, optional) – The permission’s category.
obj (object, optional) – The object on which this Tag is set.
- Returns:
permission (list) – Permission objects.
- get_tag(key=None, category=None, obj=None, tagtype=None, global_search=False)[source]¶
Return Tag objects by key, by category, by object (it is stored on) or with a combination of those criteria.
- Parameters:
key (str, optional) – The Tag’s key to search for
category (str, optional) – The Tag of the attribute(s) to search for.
obj (Object, optional) – On which object the Tag to search for is.
tagtype (str, optional) – One of None (normal tags), “alias” or “permission”
global_search (bool, optional) – Include all possible tags, not just tags on this object
- Returns:
tag (list) – The matching Tags.
- get_typeclass_totals(*args, **kwargs) object[source]¶
Returns a queryset of typeclass composition statistics.
- Returns:
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.
- object_totals()[source]¶
Get info about database statistics.
- Returns:
census (dict) –
- A dictionary {typeclass_path: number, …} with
all the typeclasses active in-game as well as the number of such objects defined (i.e. the number of database object having that typeclass set on themselves).
- search_dbref(dbref)¶
Alias to get_id.
- Parameters:
dbref (str or int) – The id to search for.
- Returns:
Queryset – Queryset with 0 or 1 match.
- typeclass_search(typeclass, include_children=False, include_parents=False)[source]¶
Searches through all objects returning those which are of the specified typeclass.
- Parameters:
typeclass (str or class) – A typeclass class or a python path to a typeclass.
include_children (bool, optional) – Return objects with given typeclass and all children inheriting from this typeclass. Mutually exclusive to include_parents.
include_parents (bool, optional) – Return objects with given typeclass and all parents to this typeclass. Mutually exclusive to include_children.
- Returns:
objects (list) – The objects found with the given typeclasses.
- Raises:
ImportError – If the provided typeclass is not a valid typeclass or the path to an existing typeclass.
- class evennia.accounts.manager.UserManager(*args, **kwargs)[source]¶
Bases:
BaseUserManager- use_in_migrations = True¶
If set to True the manager will be serialized into migrations and will thus be available in e.g. RunPython operations.
- evennia.accounts.manager.class_from_module(path, defaultpaths=None, fallback=None)[source]¶
Return a class from a module, given the class’ full python path. This is primarily used to convert db_typeclass_path:s to classes.
- Parameters:
path (str) – Full Python dot-path to module.
defaultpaths (iterable, optional) – If a direct import from path fails, try subsequent imports by prepending those paths to path.
fallback (str) – If all other attempts fail, use this path as a fallback. This is intended as a last-resort. In the example of Evennia loading, this would be a path to a default parent class in the evennia repo itself.
- Returns:
class (Class) – An uninstantiated class recovered from path.
- Raises:
ImportError – If all loading failed.
- evennia.accounts.manager.dbid_to_obj(inp, objclass, raise_errors=True)¶
Convert a #dbref to a valid object.
- Parameters:
inp (str or int) – A valid #dbref.
objclass (class) – A valid django model to filter against.
raise_errors (bool, optional) – Whether to raise errors or return None on errors.
- Returns:
obj (Object or None) – An entity loaded from the dbref.
- Raises:
Exception – If raise_errors is True and objclass.objects.get(id=dbref) did not return a valid object.