evennia/docs/versions/1.0-dev/api/evennia.accounts.html
2020-06-13 00:15:39 +02:00

2487 lines
No EOL
184 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>evennia.accounts package &#8212; Evennia 1.0-dev documentation</title>
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-evennia.accounts">
<span id="evennia-accounts-package"></span><h1>evennia.accounts package<a class="headerlink" href="#module-evennia.accounts" title="Permalink to this headline"></a></h1>
<p>This sub-package defines the out-of-character entities known as
Accounts. These are equivalent to accounts and can puppet one or
more Objects depending on settings. An Account has no in-game existence.</p>
<div class="section" id="subpackages">
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
</div>
</div>
<div class="section" id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2>
</div>
<div class="section" id="module-evennia.accounts.accounts">
<span id="evennia-accounts-accounts-module"></span><h2>evennia.accounts.accounts module<a class="headerlink" href="#module-evennia.accounts.accounts" title="Permalink to this headline"></a></h2>
<p>Typeclass for Account objects</p>
<p>Note that this object is primarily intended to
store OOC information, not game info! This
object represents the actual user (not their
character) and has NO actual presence in the
game world (this is handled by the associated
character object, so you should customize that
instead for most things).</p>
<dl class="class">
<dt id="evennia.accounts.accounts.DefaultAccount">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.accounts.</code><code class="sig-name descname">DefaultAccount</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.accounts.models.AccountDB" title="evennia.accounts.models.AccountDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.AccountDB</span></code></a></p>
<p>This is the base Typeclass for all Accounts. Accounts represent
the person playing the game and tracks account info, password
etc. They are OOC entities without presence in-game. An Account
can connect to a Character Object in order to “enter” the
game.</p>
<p>Account Typeclass API:</p>
<ul class="simple">
<li><p>Available properties (only available on initiated typeclass objects)</p></li>
</ul>
<blockquote>
<div><ul class="simple">
<li><p>key (string) - name of account</p></li>
<li><p>name (string)- wrapper for user.username</p></li>
<li><dl class="simple">
<dt>aliases (list of strings) - aliases to the object. Will be saved to</dt><dd><p>database as AliasDB entries but returned as strings.</p>
</dd>
</dl>
</li>
<li><p>dbref (int, read-only) - unique #id-number. Also “id” can be used.</p></li>
<li><p>date_created (string) - time stamp of object creation</p></li>
<li><p>permissions (list of strings) - list of permission strings</p></li>
<li><p>user (User, read-only) - django User authorization object</p></li>
<li><dl class="simple">
<dt>obj (Object) - game object controlled by account. character can also</dt><dd><p>be used.</p>
</dd>
</dl>
</li>
<li><p>sessions (list of Sessions) - sessions connected to this account</p></li>
<li><p>is_superuser (bool, read-only) - if the connected user is a superuser</p></li>
</ul>
</div></blockquote>
<ul class="simple">
<li><p>Handlers</p></li>
</ul>
<blockquote>
<div><ul class="simple">
<li><p>locks - lock-handler: use locks.add() to add new lock strings</p></li>
<li><dl class="simple">
<dt>db - attribute-handler: store/retrieve database attributes on this</dt><dd><p>self.db.myattr=val, val=self.db.myattr</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>ndb - non-persistent attribute handler: same as db but does not</dt><dd><p>create a database entry when storing data</p>
</dd>
</dl>
</li>
<li><p>scripts - script-handler. Add new scripts to object with scripts.add()</p></li>
<li><p>cmdset - cmdset-handler. Use cmdset.add() to add new cmdsets to object</p></li>
<li><p>nicks - nick-handler. New nicks with nicks.add().</p></li>
</ul>
</div></blockquote>
<ul class="simple">
<li><p>Helper methods</p></li>
</ul>
<blockquote>
<div><ul class="simple">
<li><p>msg(text=None, from_obj=None, session=None, options=None, <a href="#id1"><span class="problematic" id="id2">**</span></a>kwargs)</p></li>
<li><p>execute_cmd(raw_string)</p></li>
<li><dl class="simple">
<dt>search(ostring, global_search=False, attribute_name=None,</dt><dd><p>use_nicks=False, location=None,
ignore_errors=False, account=False)</p>
</dd>
</dl>
</li>
<li><p>is_typeclass(typeclass, exact=False)</p></li>
<li><p>swap_typeclass(new_typeclass, clean_attributes=False, no_default=True)</p></li>
<li><p>access(accessing_obj, access_type=read, default=False, no_superuser_bypass=False)</p></li>
<li><p>check_permstring(permstring)</p></li>
</ul>
</div></blockquote>
<ul class="simple">
<li><p>Hook methods</p></li>
</ul>
<blockquote>
<div><p>basetype_setup()
at_account_creation()</p>
<dl class="simple">
<dt>&gt; note that the following hooks are also found on Objects and are</dt><dd><p>usually handled on the character level:</p>
</dd>
</dl>
<ul class="simple">
<li><p>at_init()</p></li>
<li><p>at_access()</p></li>
<li><p>at_cmdset_get(<a href="#id3"><span class="problematic" id="id4">**</span></a>kwargs)</p></li>
<li><p>at_first_login()</p></li>
<li><p>at_post_login(session=None)</p></li>
<li><p>at_disconnect()</p></li>
<li><p>at_message_receive()</p></li>
<li><p>at_message_send()</p></li>
<li><p>at_server_reload()</p></li>
<li><p>at_server_shutdown()</p></li>
</ul>
</div></blockquote>
<dl class="exception">
<dt id="evennia.accounts.accounts.DefaultAccount.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.DoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.accounts.accounts.DefaultAccount.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount._DefaultAccount__get_single_puppet">
<code class="sig-name descname">_DefaultAccount__get_single_puppet</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount._DefaultAccount__get_single_puppet" title="Permalink to this definition"></a></dt>
<dd><p>This is a legacy convenience link for use with <cite>MULTISESSION_MODE</cite>.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>Users of <cite>MULTISESSION_MODE</cite> 0 or 1 will</dt><dd><p>always get the first puppet back. Users of higher <a href="#id5"><span class="problematic" id="id6">`</span></a>MULTISESSION_MODE`s will
get a list of all puppeted objects.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>puppets (Object or list)</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for DefaultAccount&gt;</em><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount._send_to_connect_channel">
<code class="sig-name descname">_send_to_connect_channel</code><span class="sig-paren">(</span><em class="sig-param">message</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount._send_to_connect_channel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount._send_to_connect_channel" title="Permalink to this definition"></a></dt>
<dd><p>Helper method for loading and sending to the comm channel
dedicated to connection messages.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>message</strong> (<em>str</em>) A message to send to the connect channel.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.access">
<code class="sig-name descname">access</code><span class="sig-paren">(</span><em class="sig-param">accessing_obj</em>, <em class="sig-param">access_type='read'</em>, <em class="sig-param">default=False</em>, <em class="sig-param">no_superuser_bypass=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.access"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.access" title="Permalink to this definition"></a></dt>
<dd><p>Determines if another object has permission to access this
object in whatever way.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>accessing_obj</strong> (<em>Object</em>) Object trying to access this one.</p></li>
<li><p><strong>access_type</strong> (<em>str</em><em>, </em><em>optional</em>) Type of access sought.</p></li>
<li><p><strong>default</strong> (<em>bool</em><em>, </em><em>optional</em>) What to return if no lock of
access_type was found</p></li>
<li><p><strong>no_superuser_bypass</strong> (<em>bool</em><em>, </em><em>optional</em>) Turn off superuser
lock bypassing. Be careful with this one.</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>kwargs (any): Passed to the at_access hook along with the result.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Result of access check.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>result (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_access">
<code class="sig-name descname">at_access</code><span class="sig-paren">(</span><em class="sig-param">result</em>, <em class="sig-param">accessing_obj</em>, <em class="sig-param">access_type</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_access"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_access" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>This is triggered after an access-call on this Account has</dt><dd><p>completed.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>result</strong> (<em>bool</em>) The result of the access check.</p></li>
<li><p><strong>accessing_obj</strong> (<em>any</em>) The object requesting the access
check.</p></li>
<li><p><strong>access_type</strong> (<em>str</em>) The type of access checked.</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>kwargs (any): These are passed on from the access check</dt><dd><p>and can be used to relay custom instructions from the
check mechanism.</p>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This method cannot affect the result of the lock check and
its return value is not used in any way. It can be used
e.g. to customize error messages in a central location or
create other effects based on the access result.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_account_creation">
<code class="sig-name descname">at_account_creation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_account_creation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_account_creation" title="Permalink to this definition"></a></dt>
<dd><p>This is called once, the very first time the account is created
(i.e. first time they register with the game). Its a good
place to store attributes all accounts should have, like
configuration values etc.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_cmdset_get">
<code class="sig-name descname">at_cmdset_get</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_cmdset_get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_cmdset_get" title="Permalink to this definition"></a></dt>
<dd><p>Called just <em>before</em> cmdsets on this account are requested by
the command handler. The cmdsets are available as
<cite>self.cmdset</cite>. If changes need to be done on the fly to the
cmdset before passing them on to the cmdhandler, this is the
place to do it. This is called also if the account currently
have no cmdsets. kwargs are usually not used unless the
cmdset is generated dynamically.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_disconnect">
<code class="sig-name descname">at_disconnect</code><span class="sig-paren">(</span><em class="sig-param">reason=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_disconnect" title="Permalink to this definition"></a></dt>
<dd><p>Called just before user is disconnected.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) The reason given for the disconnect,
(echoed to the connection channel by default).</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_failed_login">
<code class="sig-name descname">at_failed_login</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_failed_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_failed_login" title="Permalink to this definition"></a></dt>
<dd><p>Called by the login process if a user account is targeted correctly
but provided with an invalid password. By default it does nothing,
but exists to be overriden.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<em>session</em>) Session logging in.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_first_login">
<code class="sig-name descname">at_first_login</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_first_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_first_login" title="Permalink to this definition"></a></dt>
<dd><p>Called the very first time this account logs into the game.
Note that this is called <em>before</em> at_pre_login, so no session
is established and usually no character is yet assigned at
this point. This hook is intended for account-specific setup
like configurations.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_first_save">
<code class="sig-name descname">at_first_save</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_first_save"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_first_save" title="Permalink to this definition"></a></dt>
<dd><p>This is a generic hook called by Evennia when this object is
saved to the database the very first time. You generally
dont override this method but the hooks called by it.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_init">
<code class="sig-name descname">at_init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_init" title="Permalink to this definition"></a></dt>
<dd><p>This is always called whenever this object is initiated
that is, whenever it its typeclass is cached from memory. This
happens on-demand first time the object is used or activated
in some way after being created but also after each server
restart or reload. In the case of account objects, this usually
happens the moment the account logs in or reconnects after a
reload.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_look">
<code class="sig-name descname">at_look</code><span class="sig-paren">(</span><em class="sig-param">target=None</em>, <em class="sig-param">session=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_look"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_look" title="Permalink to this definition"></a></dt>
<dd><p>Called when this object executes a look. It allows to customize
just what this means.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>target</strong> (<em>Object</em><em> or </em><em>list</em><em>, </em><em>optional</em>) An object or a list
objects to inspect.</p></li>
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) The session doing this look.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>A prepared look string, ready to send</dt><dd><p>off to any recipient (usually to ourselves)</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>look_string (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_msg_receive">
<code class="sig-name descname">at_msg_receive</code><span class="sig-paren">(</span><em class="sig-param">text=None</em>, <em class="sig-param">from_obj=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_msg_receive"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_msg_receive" title="Permalink to this definition"></a></dt>
<dd><p>This hook is called whenever someone sends a message to this
object using the <cite>msg</cite> method.</p>
<p>Note that from_obj may be None if the sender did not include
itself as an argument to the obj.msg() call - so you have to
check for this. .</p>
<p>Consider this a pre-processing method before msg is passed on
to the user session. If this method returns False, the msg
will not be passed on.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>text</strong> (<em>str</em><em>, </em><em>optional</em>) The message received.</p></li>
<li><p><strong>from_obj</strong> (<em>any</em><em>, </em><em>optional</em>) The object sending the message.</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>This includes any keywords sent to the <cite>msg</cite> method.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>If this message should be received.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>receive (bool)</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>If this method returns False, the <cite>msg</cite> operation
will abort without sending the message.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_msg_send">
<code class="sig-name descname">at_msg_send</code><span class="sig-paren">(</span><em class="sig-param">text=None</em>, <em class="sig-param">to_obj=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_msg_send"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_msg_send" title="Permalink to this definition"></a></dt>
<dd><p>This is a hook that is called when <em>this</em> object sends a
message to another object with <cite>obj.msg(text, to_obj=obj)</cite>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>text</strong> (<em>str</em><em>, </em><em>optional</em>) Text to send.</p></li>
<li><p><strong>to_obj</strong> (<em>any</em><em>, </em><em>optional</em>) The object to send to.</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>Keywords passed from msg()</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Since this method is executed by <cite>from_obj</cite>, if no <cite>from_obj</cite>
was passed to <cite>DefaultCharacter.msg</cite> this hook will never
get called.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_password_change">
<code class="sig-name descname">at_password_change</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_password_change"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_password_change" title="Permalink to this definition"></a></dt>
<dd><p>Called after a successful password set/modify.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_post_disconnect">
<code class="sig-name descname">at_post_disconnect</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_post_disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_post_disconnect" title="Permalink to this definition"></a></dt>
<dd><p>This is called <em>after</em> disconnection is complete. No messages
can be relayed to the account from here. After this call, the
account should not be accessed any more, making this a good
spot for deleting it (in the case of a guest account account,
for example).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_post_login">
<code class="sig-name descname">at_post_login</code><span class="sig-paren">(</span><em class="sig-param">session=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_post_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_post_login" title="Permalink to this definition"></a></dt>
<dd><p>Called at the end of the login process, just before letting
the account loose.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) Session logging in, if any.</p></li>
<li><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This is called <em>before</em> an eventual Characters
<cite>at_post_login</cite> hook. By default it is used to set up
auto-puppeting based on <cite>MULTISESSION_MODE</cite>.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_pre_login">
<code class="sig-name descname">at_pre_login</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_pre_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_pre_login" title="Permalink to this definition"></a></dt>
<dd><p>Called every time the user logs in, just before the actual
login-state is set.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_server_reload">
<code class="sig-name descname">at_server_reload</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_server_reload"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_server_reload" title="Permalink to this definition"></a></dt>
<dd><p>This hook is called whenever the server is shutting down for
restart/reboot. If you want to, for example, save
non-persistent properties across a restart, this is the place
to do it.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.at_server_shutdown">
<code class="sig-name descname">at_server_shutdown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.at_server_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.at_server_shutdown" title="Permalink to this definition"></a></dt>
<dd><p>This hook is called whenever the server is shutting down fully
(i.e. not for a restart).</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.authenticate">
<em class="property">classmethod </em><code class="sig-name descname">authenticate</code><span class="sig-paren">(</span><em class="sig-param">username</em>, <em class="sig-param">password</em>, <em class="sig-param">ip=''</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.authenticate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Checks the given username/password against the database to see if the
credentials are valid.</p>
<p>Note that this simply checks credentials and returns a valid reference
to the user it does not log them in!</p>
<p>To finish the job:
After calling this from a Command, associate the account with a Session:
- session.sessionhandler.login(session, account)</p>
<p>…or after calling this from a View, associate it with an HttpRequest:
- django.contrib.auth.login(account, request)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>username</strong> (<em>str</em>) Username of account</p></li>
<li><p><strong>password</strong> (<em>str</em>) Password of account</p></li>
<li><p><strong>ip</strong> (<em>str</em><em>, </em><em>optional</em>) IP address of client</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>session (Session, optional): Session requesting authentication</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>Account whose credentials were</dt><dd><p>provided if not banned.</p>
</dd>
</dl>
<p>errors (list): Error messages of any failures.</p>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>account (<a class="reference internal" href="#evennia.accounts.accounts.DefaultAccount" title="evennia.accounts.accounts.DefaultAccount">DefaultAccount</a>, None)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.basetype_setup">
<code class="sig-name descname">basetype_setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.basetype_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.basetype_setup" title="Permalink to this definition"></a></dt>
<dd><p>This sets up the basic properties for an account. Overload this
with at_account_creation rather than changing this method.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.character">
<em class="property">property </em><code class="sig-name descname">character</code><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.character" title="Permalink to this definition"></a></dt>
<dd><p>This is a legacy convenience link for use with <cite>MULTISESSION_MODE</cite>.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>Users of <cite>MULTISESSION_MODE</cite> 0 or 1 will</dt><dd><p>always get the first puppet back. Users of higher <a href="#id7"><span class="problematic" id="id8">`</span></a>MULTISESSION_MODE`s will
get a list of all puppeted objects.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>puppets (Object or list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.characters">
<em class="property">property </em><code class="sig-name descname">characters</code><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.characters" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.cmdset">
<code class="sig-name descname">cmdset</code><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.cmdset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.cmdset" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.connection_time">
<em class="property">property </em><code class="sig-name descname">connection_time</code><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.connection_time" title="Permalink to this definition"></a></dt>
<dd><p>Returns the maximum connection time of all connected sessions
in seconds. Returns nothing if there are no sessions.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.create">
<em class="property">classmethod </em><code class="sig-name descname">create</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.create" title="Permalink to this definition"></a></dt>
<dd><p>Creates an Account (or Account/Character pair for MULTISESSION_MODE&lt;2)
with default (or overridden) permissions and having joined them to the
appropriate default channels.</p>
<dl>
<dt>Kwargs:</dt><dd><p>username (str): Username of Account owner
password (str): Password of Account owner
email (str, optional): Email address of Account owner
ip (str, optional): IP address of requesting connection
guest (bool, optional): Whether or not this is to be a Guest account</p>
<p>permissions (str, optional): Default permissions for the Account
typeclass (str, optional): Typeclass to use for new Account
character_typeclass (str, optional): Typeclass to use for new char</p>
<blockquote>
<div><p>when applicable.</p>
</div></blockquote>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Account if successfully created; None if not
errors (list): List of error messages in string form</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>account (Account)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.delete">
<code class="sig-name descname">delete</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.delete"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.delete" title="Permalink to this definition"></a></dt>
<dd><p>Deletes the account permanently.</p>
<p class="rubric">Notes</p>
<dl class="simple">
<dt><cite>*args</cite> and <cite>**kwargs</cite> are passed on to the base delete</dt><dd><p>mechanism (these are usually not used).</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.disconnect_session_from_account">
<code class="sig-name descname">disconnect_session_from_account</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">reason=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.disconnect_session_from_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.disconnect_session_from_account" title="Permalink to this definition"></a></dt>
<dd><p>Access method for disconnecting a given session from the
account (connection happens automatically in the
sessionhandler)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Session to disconnect.</p></li>
<li><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) Eventual reason for the disconnect.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.execute_cmd">
<code class="sig-name descname">execute_cmd</code><span class="sig-paren">(</span><em class="sig-param">raw_string</em>, <em class="sig-param">session=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.execute_cmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.execute_cmd" title="Permalink to this definition"></a></dt>
<dd><p>Do something as this account. This method is never called normally,
but only when the account object itself is supposed to execute the
command. It takes account nicks into account, but not nicks of
eventual puppets.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>raw_string</strong> (<em>str</em>) Raw command input coming from the command line.</p></li>
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) The session to be responsible
for the command-send</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>kwargs (any): Other keyword arguments will be added to the</dt><dd><p>found command object instance as variables before it
executes. This is unused by default Evennia but may be
used to set flags and change operating paramaters for
commands at run-time.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.get_all_puppets">
<code class="sig-name descname">get_all_puppets</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.get_all_puppets"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.get_all_puppets" title="Permalink to this definition"></a></dt>
<dd><p>Get all currently puppeted objects.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>All puppeted objects currently controlled</dt><dd><p>by this Account.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>puppets (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.get_puppet">
<code class="sig-name descname">get_puppet</code><span class="sig-paren">(</span><em class="sig-param">session</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.get_puppet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.get_puppet" title="Permalink to this definition"></a></dt>
<dd><p>Get an object puppeted by this session through this account. This is
the main method for retrieving the puppeted object from the
accounts end.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Find puppeted object based on this session</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The matching puppeted object, if any.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>puppet (Object)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.get_username_validators">
<em class="property">classmethod </em><code class="sig-name descname">get_username_validators</code><span class="sig-paren">(</span><em class="sig-param">validator_config=[{'NAME': 'django.contrib.auth.validators.ASCIIUsernameValidator'}, {'NAME': 'django.core.validators.MinLengthValidator', 'OPTIONS': {'limit_value': 3}}, {'NAME': 'django.core.validators.MaxLengthValidator', 'OPTIONS': {'limit_value': 30}}, {'NAME': 'evennia.server.validators.EvenniaUsernameAvailabilityValidator'}]</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.get_username_validators"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.get_username_validators" title="Permalink to this definition"></a></dt>
<dd><p>Retrieves and instantiates validators for usernames.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>validator_config</strong> (<em>list</em>) List of dicts comprising the battery of
validators to apply to a username.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>List of instantiated Validator objects.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>validators (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.idle_time">
<em class="property">property </em><code class="sig-name descname">idle_time</code><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.idle_time" title="Permalink to this definition"></a></dt>
<dd><p>Returns the idle time of the least idle session in seconds. If
no sessions are connected it returns nothing.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.is_banned">
<em class="property">classmethod </em><code class="sig-name descname">is_banned</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.is_banned"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.is_banned" title="Permalink to this definition"></a></dt>
<dd><p>Checks if a given username or IP is banned.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>ip (str, optional): IP address.
username (str, optional): Username.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Whether either is banned or not.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>is_banned (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.msg">
<code class="sig-name descname">msg</code><span class="sig-paren">(</span><em class="sig-param">text=None</em>, <em class="sig-param">from_obj=None</em>, <em class="sig-param">session=None</em>, <em class="sig-param">options=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.msg" title="Permalink to this definition"></a></dt>
<dd><p>Evennia -&gt; User
This is the main route for sending data back to the user from the
server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>text</strong> (<em>str</em><em> or </em><em>tuple</em><em>, </em><em>optional</em>) The message to send. This
is treated internally like any send-command, so its
value can be a tuple if sending multiple arguments to
the <cite>text</cite> oob command.</p></li>
<li><p><strong>from_obj</strong> (<em>Object</em><em> or </em><em>Account</em><em> or </em><em>list</em><em>, </em><em>optional</em>) Object sending. If given, its
at_msg_send() hook will be called. If iterable, call on all entities.</p></li>
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em> or </em><em>list</em><em>, </em><em>optional</em>) Session object or a list of
Sessions to receive this send. If given, overrules the
default send behavior for the current
MULTISESSION_MODE.</p></li>
<li><p><strong>options</strong> (<em>list</em>) Protocol-specific options. Passed on to the protocol.</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>any (dict): All other keywords are passed on to the protocol.</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.nicks">
<code class="sig-name descname">nicks</code><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.nicks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.nicks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.normalize_username">
<em class="property">classmethod </em><code class="sig-name descname">normalize_username</code><span class="sig-paren">(</span><em class="sig-param">username</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.normalize_username"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.normalize_username" title="Permalink to this definition"></a></dt>
<dd><p>Django: Applies NFKC Unicode normalization to usernames so that visually
identical characters with different Unicode code points are considered
identical.</p>
<p>(This deals with the Turkish “i” problem and similar
annoyances. Only relevant if you go out of your way to allow Unicode
usernames though Evennia accepts ASCII by default.)</p>
<p>In this case were simply piggybacking on this feature to apply
additional normalization per Evennias standards.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;evennia.accounts.manager.AccountManager object&gt;</em><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.options">
<code class="sig-name descname">options</code><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.options" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.accounts.accounts.DefaultAccount'</em><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.puppet">
<em class="property">property </em><code class="sig-name descname">puppet</code><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.puppet" title="Permalink to this definition"></a></dt>
<dd><p>This is a legacy convenience link for use with <cite>MULTISESSION_MODE</cite>.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>Users of <cite>MULTISESSION_MODE</cite> 0 or 1 will</dt><dd><p>always get the first puppet back. Users of higher <a href="#id9"><span class="problematic" id="id10">`</span></a>MULTISESSION_MODE`s will
get a list of all puppeted objects.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>puppets (Object or list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.puppet_object">
<code class="sig-name descname">puppet_object</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">obj</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.puppet_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.puppet_object" title="Permalink to this definition"></a></dt>
<dd><p>Use the given session to control (puppet) the given object (usually
a Character type).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) session to use for puppeting</p></li>
<li><p><strong>obj</strong> (<em>Object</em>) the object to start puppeting</p></li>
</ul>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><strong>RuntimeError</strong> If puppeting is not possible, the
<cite>exception.msg</cite> will contain the reason.</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.scripts">
<code class="sig-name descname">scripts</code><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.scripts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.scripts" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.search">
<code class="sig-name descname">search</code><span class="sig-paren">(</span><em class="sig-param">searchdata</em>, <em class="sig-param">return_puppet=False</em>, <em class="sig-param">search_object=False</em>, <em class="sig-param">typeclass=None</em>, <em class="sig-param">nofound_string=None</em>, <em class="sig-param">multimatch_string=None</em>, <em class="sig-param">use_nicks=True</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.search"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.search" title="Permalink to this definition"></a></dt>
<dd><p>This is similar to <cite>DefaultObject.search</cite> but defaults to searching
for Accounts only.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>searchdata</strong> (<em>str</em><em> or </em><em>int</em>) Search criterion, the Accounts
key or dbref to search for.</p></li>
<li><p><strong>return_puppet</strong> (<em>bool</em><em>, </em><em>optional</em>) Instructs the method to
return matches as the object the Account controls rather
than the Account itself (or None) if nothing is puppeted).</p></li>
<li><p><strong>search_object</strong> (<em>bool</em><em>, </em><em>optional</em>) Search for Objects instead of
Accounts. This is used by e.g. the &#64;examine command when
wanting to examine Objects while OOC.</p></li>
<li><p><strong>typeclass</strong> (<em>Account typeclass</em><em>, </em><em>optional</em>) Limit the search
only to this particular typeclass. This can be used to
limit to specific account typeclasses or to limit the search
to a particular Object typeclass if <cite>search_object</cite> is True.</p></li>
<li><p><strong>nofound_string</strong> (<em>str</em><em>, </em><em>optional</em>) A one-time error message
to echo if <cite>searchdata</cite> leads to no matches. If not given,
will fall back to the default handler.</p></li>
<li><p><strong>multimatch_string</strong> (<em>str</em><em>, </em><em>optional</em>) A one-time error
message to echo if <cite>searchdata</cite> leads to multiple matches.
If not given, will fall back to the default handler.</p></li>
<li><p><strong>use_nicks</strong> (<em>bool</em><em>, </em><em>optional</em>) Use account-level nick replacement.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A single Account or Object match.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>match (Account, Object or None)</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Extra keywords are ignored, but are allowed in call in
order to make API more consistent with
objects.objects.DefaultObject.search.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.sessions">
<code class="sig-name descname">sessions</code><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.sessions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.sessions" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.set_password">
<code class="sig-name descname">set_password</code><span class="sig-paren">(</span><em class="sig-param">password</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.set_password"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.set_password" title="Permalink to this definition"></a></dt>
<dd><p>Applies the given password to the account. Logs and triggers the <cite>at_password_change</cite> hook.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>password</strong> (<em>str</em>) Password to set.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This is called by Django also when logging in; it should not be mixed up with validation, since that
would mean old passwords in the database (pre validation checks) could get invalidated.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.accounts.DefaultAccount.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'DefaultAccount'</em><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.unpuppet_all">
<code class="sig-name descname">unpuppet_all</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.unpuppet_all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.unpuppet_all" title="Permalink to this definition"></a></dt>
<dd><p>Disconnect all puppets. This is called by server before a
reset/shutdown.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.unpuppet_object">
<code class="sig-name descname">unpuppet_object</code><span class="sig-paren">(</span><em class="sig-param">session</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.unpuppet_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.unpuppet_object" title="Permalink to this definition"></a></dt>
<dd><p>Disengage control over an object.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em> or </em><em>list</em>) The session or a list of
sessions to disengage from their puppets.</p>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><strong>RuntimeError With message about error.</strong> </p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.validate_password">
<em class="property">classmethod </em><code class="sig-name descname">validate_password</code><span class="sig-paren">(</span><em class="sig-param">password</em>, <em class="sig-param">account=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.validate_password"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.validate_password" title="Permalink to this definition"></a></dt>
<dd><p>Checks the given password against the list of Django validators enabled
in the server.conf file.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>password</strong> (<em>str</em>) Password to validate</p>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>account (DefaultAccount, optional): Account object to validate the</dt><dd><p>password for. Optional, but Django includes some validators to
do things like making sure users arent setting passwords to the
same value as their username. If left blank, these user-specific
checks are skipped.</p>
</dd>
</dl>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><p>Whether or not the password passed validation
error (ValidationError, None): Any validation error(s) raised. Multiple</p>
<blockquote>
<div><p>errors can be nested within a single object.</p>
</div></blockquote>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>valid (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.accounts.DefaultAccount.validate_username">
<em class="property">classmethod </em><code class="sig-name descname">validate_username</code><span class="sig-paren">(</span><em class="sig-param">username</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/accounts.html#DefaultAccount.validate_username"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.accounts.DefaultAccount.validate_username" title="Permalink to this definition"></a></dt>
<dd><p>Checks the given username against the username validator associated with
Account objects, and also checks the database to make sure it is unique.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>username</strong> (<em>str</em>) Username to validate</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Whether or not the password passed validation
errors (list): Error messages of any failures</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>valid (bool)</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.accounts.admin">
<span id="evennia-accounts-admin-module"></span><h2>evennia.accounts.admin module<a class="headerlink" href="#module-evennia.accounts.admin" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="evennia.accounts.admin.AccountAttributeInline">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.admin.</code><code class="sig-name descname">AccountAttributeInline</code><span class="sig-paren">(</span><em class="sig-param">parent_model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountAttributeInline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountAttributeInline" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.admin.AttributeInline" title="evennia.typeclasses.admin.AttributeInline"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.admin.AttributeInline</span></code></a></p>
<p>Inline Account Attributes.</p>
<dl class="method">
<dt id="evennia.accounts.admin.AccountAttributeInline.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.accounts.admin.AccountAttributeInline.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountAttributeInline.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.accounts.admin.AccountAttributeInline.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.AccountDB_db_attributes</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountAttributeInline.related_field">
<code class="sig-name descname">related_field</code><em class="property"> = 'accountdb'</em><a class="headerlink" href="#evennia.accounts.admin.AccountAttributeInline.related_field" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.admin.AccountDBAdmin">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.admin.</code><code class="sig-name descname">AccountDBAdmin</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBAdmin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.auth.admin.UserAdmin</span></code></p>
<p>This is the main creation screen for Users/accounts</p>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBAdmin.add_fieldsets">
<code class="sig-name descname">add_fieldsets</code><em class="property"> = ((None, {'fields': ('username', 'password1', 'password2', 'email'), 'description': '&lt;i&gt;These account details are shared by the admin system and the game.&lt;/i&gt;'}),)</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.add_fieldsets" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBAdmin.add_form">
<code class="sig-name descname">add_form</code><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.add_form" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.accounts.admin.AccountDBCreationForm" title="evennia.accounts.admin.AccountDBCreationForm"><code class="xref py py-class docutils literal notranslate"><span class="pre">AccountDBCreationForm</span></code></a></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBAdmin.fieldsets">
<code class="sig-name descname">fieldsets</code><em class="property"> = ((None, {'fields': ('username', 'password', 'email')}), ('Website profile', {'fields': ('first_name', 'last_name'), 'description': '&lt;i&gt;These are not used in the default system.&lt;/i&gt;'}), ('Website dates', {'fields': ('last_login', 'date_joined'), 'description': '&lt;i&gt;Relevant only to the website.&lt;/i&gt;'}), ('Website Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'user_permissions', 'groups'), 'description': '&lt;i&gt;These are permissions/permission groups for accessing the admin site. They are unrelated to in-game access rights.&lt;/i&gt;'}), ('Game Options', {'fields': ('db_typeclass_path', 'db_cmdset_storage', 'db_lock_storage'), 'description': '&lt;i&gt;These are attributes that are more relevant to gameplay.&lt;/i&gt;'}))</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.fieldsets" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBAdmin.form">
<code class="sig-name descname">form</code><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.form" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.accounts.admin.AccountDBChangeForm" title="evennia.accounts.admin.AccountDBChangeForm"><code class="xref py py-class docutils literal notranslate"><span class="pre">AccountDBChangeForm</span></code></a></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBAdmin.inlines">
<code class="sig-name descname">inlines</code><em class="property"> = [&lt;class 'evennia.accounts.admin.AccountTagInline'&gt;, &lt;class 'evennia.accounts.admin.AccountAttributeInline'&gt;]</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.inlines" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBAdmin.list_display">
<code class="sig-name descname">list_display</code><em class="property"> = ('username', 'email', 'is_staff', 'is_superuser')</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.list_display" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountDBAdmin.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountDBAdmin.response_add">
<code class="sig-name descname">response_add</code><span class="sig-paren">(</span><em class="sig-param">request</em>, <em class="sig-param">obj</em>, <em class="sig-param">post_url_continue=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBAdmin.response_add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.response_add" title="Permalink to this definition"></a></dt>
<dd><p>Determine the HttpResponse for the add_view stage. It mostly defers to
its superclass implementation but is customized because the User model
has a slightly different workflow.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountDBAdmin.save_model">
<code class="sig-name descname">save_model</code><span class="sig-paren">(</span><em class="sig-param">request</em>, <em class="sig-param">obj</em>, <em class="sig-param">form</em>, <em class="sig-param">change</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBAdmin.save_model"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBAdmin.save_model" title="Permalink to this definition"></a></dt>
<dd><p>Custom save actions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>Request</em>) Incoming request.</p></li>
<li><p><strong>obj</strong> (<em>Object</em>) Object to save.</p></li>
<li><p><strong>form</strong> (<em>Form</em>) Related form instance.</p></li>
<li><p><strong>change</strong> (<em>bool</em>) False if this is a new save and not an update.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.admin.AccountDBChangeForm">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.admin.</code><code class="sig-name descname">AccountDBChangeForm</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBChangeForm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.auth.forms.UserChangeForm</span></code></p>
<p>Modify the accountdb class.</p>
<dl class="class">
<dt id="evennia.accounts.admin.AccountDBChangeForm.Meta">
<em class="property">class </em><code class="sig-name descname">Meta</code><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBChangeForm.Meta"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm.Meta" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBChangeForm.Meta.fields">
<code class="sig-name descname">fields</code><em class="property"> = '__all__'</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm.Meta.fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBChangeForm.Meta.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm.Meta.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.accounts.models.AccountDB" title="evennia.accounts.models.AccountDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.AccountDB</span></code></a></p>
</dd></dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBChangeForm._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;django.forms.models.ModelFormOptions object&gt;</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBChangeForm.base_fields">
<code class="sig-name descname">base_fields</code><em class="property"> = {'date_joined': &lt;django.forms.fields.DateTimeField object&gt;, 'db_attributes': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'db_cmdset_storage': &lt;django.forms.fields.CharField object&gt;, 'db_is_bot': &lt;django.forms.fields.BooleanField object&gt;, 'db_is_connected': &lt;django.forms.fields.BooleanField object&gt;, 'db_key': &lt;django.forms.fields.CharField object&gt;, 'db_lock_storage': &lt;django.forms.fields.CharField object&gt;, 'db_tags': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'db_typeclass_path': &lt;django.forms.fields.CharField object&gt;, 'email': &lt;django.forms.fields.EmailField object&gt;, 'first_name': &lt;django.forms.fields.CharField object&gt;, 'groups': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'is_active': &lt;django.forms.fields.BooleanField object&gt;, 'is_staff': &lt;django.forms.fields.BooleanField object&gt;, 'is_superuser': &lt;django.forms.fields.BooleanField object&gt;, 'last_login': &lt;django.forms.fields.DateTimeField object&gt;, 'last_name': &lt;django.forms.fields.CharField object&gt;, 'password': &lt;django.contrib.auth.forms.ReadOnlyPasswordHashField object&gt;, 'user_permissions': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'username': &lt;django.forms.fields.RegexField object&gt;}</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm.base_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountDBChangeForm.clean_username">
<code class="sig-name descname">clean_username</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBChangeForm.clean_username"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm.clean_username" title="Permalink to this definition"></a></dt>
<dd><p>Clean the username and check its existence.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBChangeForm.declared_fields">
<code class="sig-name descname">declared_fields</code><em class="property"> = {'password': &lt;django.contrib.auth.forms.ReadOnlyPasswordHashField object&gt;, 'username': &lt;django.forms.fields.RegexField object&gt;}</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm.declared_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountDBChangeForm.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.accounts.admin.AccountDBChangeForm.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.admin.AccountDBCreationForm">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.admin.</code><code class="sig-name descname">AccountDBCreationForm</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBCreationForm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.auth.forms.UserCreationForm</span></code></p>
<p>Create a new AccountDB instance.</p>
<dl class="class">
<dt id="evennia.accounts.admin.AccountDBCreationForm.Meta">
<em class="property">class </em><code class="sig-name descname">Meta</code><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBCreationForm.Meta"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm.Meta" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBCreationForm.Meta.fields">
<code class="sig-name descname">fields</code><em class="property"> = '__all__'</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm.Meta.fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBCreationForm.Meta.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm.Meta.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.accounts.models.AccountDB" title="evennia.accounts.models.AccountDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.AccountDB</span></code></a></p>
</dd></dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBCreationForm._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;django.forms.models.ModelFormOptions object&gt;</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBCreationForm.base_fields">
<code class="sig-name descname">base_fields</code><em class="property"> = {'date_joined': &lt;django.forms.fields.DateTimeField object&gt;, 'db_attributes': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'db_cmdset_storage': &lt;django.forms.fields.CharField object&gt;, 'db_is_bot': &lt;django.forms.fields.BooleanField object&gt;, 'db_is_connected': &lt;django.forms.fields.BooleanField object&gt;, 'db_key': &lt;django.forms.fields.CharField object&gt;, 'db_lock_storage': &lt;django.forms.fields.CharField object&gt;, 'db_tags': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'db_typeclass_path': &lt;django.forms.fields.CharField object&gt;, 'email': &lt;django.forms.fields.EmailField object&gt;, 'first_name': &lt;django.forms.fields.CharField object&gt;, 'groups': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'is_active': &lt;django.forms.fields.BooleanField object&gt;, 'is_staff': &lt;django.forms.fields.BooleanField object&gt;, 'is_superuser': &lt;django.forms.fields.BooleanField object&gt;, 'last_login': &lt;django.forms.fields.DateTimeField object&gt;, 'last_name': &lt;django.forms.fields.CharField object&gt;, 'password': &lt;django.forms.fields.CharField object&gt;, 'password1': &lt;django.forms.fields.CharField object&gt;, 'password2': &lt;django.forms.fields.CharField object&gt;, 'user_permissions': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'username': &lt;django.forms.fields.RegexField object&gt;}</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm.base_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountDBCreationForm.clean_username">
<code class="sig-name descname">clean_username</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountDBCreationForm.clean_username"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm.clean_username" title="Permalink to this definition"></a></dt>
<dd><p>Cleanup username.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountDBCreationForm.declared_fields">
<code class="sig-name descname">declared_fields</code><em class="property"> = {'password1': &lt;django.forms.fields.CharField object&gt;, 'password2': &lt;django.forms.fields.CharField object&gt;, 'username': &lt;django.forms.fields.RegexField object&gt;}</em><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm.declared_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountDBCreationForm.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.accounts.admin.AccountDBCreationForm.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.admin.AccountForm">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.admin.</code><code class="sig-name descname">AccountForm</code><span class="sig-paren">(</span><em class="sig-param">data=None</em>, <em class="sig-param">files=None</em>, <em class="sig-param">auto_id='id_%s'</em>, <em class="sig-param">prefix=None</em>, <em class="sig-param">initial=None</em>, <em class="sig-param">error_class=&lt;class 'django.forms.utils.ErrorList'&gt;</em>, <em class="sig-param">label_suffix=None</em>, <em class="sig-param">empty_permitted=False</em>, <em class="sig-param">instance=None</em>, <em class="sig-param">use_required_attribute=None</em>, <em class="sig-param">renderer=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountForm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountForm" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.forms.models.ModelForm</span></code></p>
<p>Defines how to display Accounts</p>
<dl class="class">
<dt id="evennia.accounts.admin.AccountForm.Meta">
<em class="property">class </em><code class="sig-name descname">Meta</code><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountForm.Meta"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountForm.Meta" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountForm.Meta.fields">
<code class="sig-name descname">fields</code><em class="property"> = '__all__'</em><a class="headerlink" href="#evennia.accounts.admin.AccountForm.Meta.fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountForm.Meta.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.accounts.admin.AccountForm.Meta.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.accounts.models.AccountDB" title="evennia.accounts.models.AccountDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.AccountDB</span></code></a></p>
</dd></dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountForm._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;django.forms.models.ModelFormOptions object&gt;</em><a class="headerlink" href="#evennia.accounts.admin.AccountForm._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountForm.base_fields">
<code class="sig-name descname">base_fields</code><em class="property"> = {'date_joined': &lt;django.forms.fields.DateTimeField object&gt;, 'db_attributes': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'db_cmdset_storage': &lt;django.forms.fields.CharField object&gt;, 'db_is_bot': &lt;django.forms.fields.BooleanField object&gt;, 'db_is_connected': &lt;django.forms.fields.BooleanField object&gt;, 'db_key': &lt;django.forms.fields.RegexField object&gt;, 'db_lock_storage': &lt;django.forms.fields.CharField object&gt;, 'db_permissions': &lt;django.forms.fields.CharField object&gt;, 'db_tags': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'db_typeclass_path': &lt;django.forms.fields.CharField object&gt;, 'email': &lt;django.forms.fields.EmailField object&gt;, 'first_name': &lt;django.forms.fields.CharField object&gt;, 'groups': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'is_active': &lt;django.forms.fields.BooleanField object&gt;, 'is_staff': &lt;django.forms.fields.BooleanField object&gt;, 'is_superuser': &lt;django.forms.fields.BooleanField object&gt;, 'last_login': &lt;django.forms.fields.DateTimeField object&gt;, 'last_name': &lt;django.forms.fields.CharField object&gt;, 'password': &lt;django.forms.fields.CharField object&gt;, 'user_permissions': &lt;django.forms.models.ModelMultipleChoiceField object&gt;, 'username': &lt;django.forms.fields.CharField object&gt;}</em><a class="headerlink" href="#evennia.accounts.admin.AccountForm.base_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountForm.declared_fields">
<code class="sig-name descname">declared_fields</code><em class="property"> = {'db_cmdset_storage': &lt;django.forms.fields.CharField object&gt;, 'db_key': &lt;django.forms.fields.RegexField object&gt;, 'db_lock_storage': &lt;django.forms.fields.CharField object&gt;, 'db_permissions': &lt;django.forms.fields.CharField object&gt;, 'db_typeclass_path': &lt;django.forms.fields.CharField object&gt;}</em><a class="headerlink" href="#evennia.accounts.admin.AccountForm.declared_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountForm.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.accounts.admin.AccountForm.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.admin.AccountInline">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.admin.</code><code class="sig-name descname">AccountInline</code><span class="sig-paren">(</span><em class="sig-param">parent_model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountInline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountInline" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.admin.options.StackedInline</span></code></p>
<p>Inline creation of Account</p>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountInline.extra">
<code class="sig-name descname">extra</code><em class="property"> = 1</em><a class="headerlink" href="#evennia.accounts.admin.AccountInline.extra" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountInline.fieldsets">
<code class="sig-name descname">fieldsets</code><em class="property"> = (('In-game Permissions and Locks', {'fields': ('db_lock_storage',), 'description': '&lt;i&gt;These are permissions/locks for in-game use. They are unrelated to website access rights.&lt;/i&gt;'}), ('In-game Account data', {'fields': ('db_typeclass_path', 'db_cmdset_storage'), 'description': '&lt;i&gt;These fields define in-game-specific properties for the Account object in-game.&lt;/i&gt;'}))</em><a class="headerlink" href="#evennia.accounts.admin.AccountInline.fieldsets" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountInline.form">
<code class="sig-name descname">form</code><a class="headerlink" href="#evennia.accounts.admin.AccountInline.form" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.accounts.admin.AccountForm" title="evennia.accounts.admin.AccountForm"><code class="xref py py-class docutils literal notranslate"><span class="pre">AccountForm</span></code></a></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountInline.max_num">
<code class="sig-name descname">max_num</code><em class="property"> = 1</em><a class="headerlink" href="#evennia.accounts.admin.AccountInline.max_num" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.admin.AccountInline.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.accounts.admin.AccountInline.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountInline.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.accounts.admin.AccountInline.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.accounts.models.AccountDB" title="evennia.accounts.models.AccountDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.AccountDB</span></code></a></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountInline.template">
<code class="sig-name descname">template</code><em class="property"> = 'admin/accounts/stacked.html'</em><a class="headerlink" href="#evennia.accounts.admin.AccountInline.template" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.admin.AccountTagInline">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.admin.</code><code class="sig-name descname">AccountTagInline</code><span class="sig-paren">(</span><em class="sig-param">parent_model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/admin.html#AccountTagInline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.admin.AccountTagInline" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.admin.TagInline" title="evennia.typeclasses.admin.TagInline"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.admin.TagInline</span></code></a></p>
<p>Inline Account Tags.</p>
<dl class="method">
<dt id="evennia.accounts.admin.AccountTagInline.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.accounts.admin.AccountTagInline.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountTagInline.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.accounts.admin.AccountTagInline.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.models.AccountDB_db_tags</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.admin.AccountTagInline.related_field">
<code class="sig-name descname">related_field</code><em class="property"> = 'accountdb'</em><a class="headerlink" href="#evennia.accounts.admin.AccountTagInline.related_field" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.accounts.bots">
<span id="evennia-accounts-bots-module"></span><h2>evennia.accounts.bots module<a class="headerlink" href="#module-evennia.accounts.bots" title="Permalink to this headline"></a></h2>
<p>Bots are a special child typeclasses of
Account that are controlled by the server.</p>
<dl class="class">
<dt id="evennia.accounts.bots.Bot">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.bots.</code><code class="sig-name descname">Bot</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#Bot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.Bot" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.accounts.accounts.DefaultAccount" title="evennia.accounts.accounts.DefaultAccount"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.accounts.DefaultAccount</span></code></a></p>
<p>A Bot will start itself when the server starts (it will generally
not do so on a reload - that will be handled by the normal Portal
session resync)</p>
<dl class="exception">
<dt id="evennia.accounts.bots.Bot.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.accounts.bots.Bot.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.accounts.DoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.accounts.bots.Bot.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.accounts.bots.Bot.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.accounts.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.Bot._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for Bot&gt;</em><a class="headerlink" href="#evennia.accounts.bots.Bot._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.Bot.at_server_shutdown">
<code class="sig-name descname">at_server_shutdown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#Bot.at_server_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.Bot.at_server_shutdown" title="Permalink to this definition"></a></dt>
<dd><p>We need to handle this case manually since the shutdown may be
a reset.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.Bot.basetype_setup">
<code class="sig-name descname">basetype_setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#Bot.basetype_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.Bot.basetype_setup" title="Permalink to this definition"></a></dt>
<dd><p>This sets up the basic properties for the bot.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.Bot.execute_cmd">
<code class="sig-name descname">execute_cmd</code><span class="sig-paren">(</span><em class="sig-param">raw_string</em>, <em class="sig-param">session=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#Bot.execute_cmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.Bot.execute_cmd" title="Permalink to this definition"></a></dt>
<dd><p>Incoming protocol -&gt; Evennia</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.Bot.msg">
<code class="sig-name descname">msg</code><span class="sig-paren">(</span><em class="sig-param">text=None</em>, <em class="sig-param">from_obj=None</em>, <em class="sig-param">session=None</em>, <em class="sig-param">options=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#Bot.msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.Bot.msg" title="Permalink to this definition"></a></dt>
<dd><p>Evennia -&gt; outgoing protocol</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.Bot.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.accounts.bots.Bot'</em><a class="headerlink" href="#evennia.accounts.bots.Bot.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.Bot.start">
<code class="sig-name descname">start</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#Bot.start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.Bot.start" title="Permalink to this definition"></a></dt>
<dd><p>This starts the bot, whatever that may mean.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.Bot.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'Bot'</em><a class="headerlink" href="#evennia.accounts.bots.Bot.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.bots.BotStarter">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.bots.</code><code class="sig-name descname">BotStarter</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#BotStarter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.BotStarter" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.scripts.html#evennia.scripts.scripts.DefaultScript" title="evennia.scripts.scripts.DefaultScript"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.scripts.scripts.DefaultScript</span></code></a></p>
<p>This non-repeating script has the
sole purpose of kicking its bot
into gear when it is initialized.</p>
<dl class="exception">
<dt id="evennia.accounts.bots.BotStarter.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.accounts.bots.BotStarter.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.scripts.scripts.DoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.accounts.bots.BotStarter.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.accounts.bots.BotStarter.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.scripts.scripts.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.BotStarter._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for BotStarter&gt;</em><a class="headerlink" href="#evennia.accounts.bots.BotStarter._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.BotStarter.at_repeat">
<code class="sig-name descname">at_repeat</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#BotStarter.at_repeat"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.BotStarter.at_repeat" title="Permalink to this definition"></a></dt>
<dd><p>Called self.interval seconds to keep connection. We cannot use
the IDLE command from inside the game since the system will
not catch it (commands executed from the server side usually
has no sessions). So we update the idle counter manually here
instead. This keeps the bot getting hit by IDLE_TIMEOUT.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.BotStarter.at_script_creation">
<code class="sig-name descname">at_script_creation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#BotStarter.at_script_creation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.BotStarter.at_script_creation" title="Permalink to this definition"></a></dt>
<dd><p>Called once, when script is created.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.BotStarter.at_server_reload">
<code class="sig-name descname">at_server_reload</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#BotStarter.at_server_reload"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.BotStarter.at_server_reload" title="Permalink to this definition"></a></dt>
<dd><p>If server reloads we dont need to reconnect the protocol
again, this is handled by the portal reconnect mechanism.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.BotStarter.at_server_shutdown">
<code class="sig-name descname">at_server_shutdown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#BotStarter.at_server_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.BotStarter.at_server_shutdown" title="Permalink to this definition"></a></dt>
<dd><p>Make sure we are shutdown.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.BotStarter.at_start">
<code class="sig-name descname">at_start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#BotStarter.at_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.BotStarter.at_start" title="Permalink to this definition"></a></dt>
<dd><p>Kick bot into gear.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.BotStarter.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.accounts.bots.BotStarter'</em><a class="headerlink" href="#evennia.accounts.bots.BotStarter.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.BotStarter.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'BotStarter'</em><a class="headerlink" href="#evennia.accounts.bots.BotStarter.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.bots.GrapevineBot">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.bots.</code><code class="sig-name descname">GrapevineBot</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#GrapevineBot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.accounts.bots.Bot" title="evennia.accounts.bots.Bot"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.Bot</span></code></a></p>
<p>g Grapevine (<a class="reference external" href="https://grapevine.haus">https://grapevine.haus</a>) relayer. The channel to connect to is the first
name in the settings.GRAPEVINE_CHANNELS list.</p>
<dl class="exception">
<dt id="evennia.accounts.bots.GrapevineBot.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.DoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.accounts.bots.GrapevineBot.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.GrapevineBot._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for GrapevineBot&gt;</em><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.GrapevineBot.at_msg_send">
<code class="sig-name descname">at_msg_send</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#GrapevineBot.at_msg_send"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.at_msg_send" title="Permalink to this definition"></a></dt>
<dd><p>Shortcut here or we can end up in infinite loop</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.GrapevineBot.execute_cmd">
<code class="sig-name descname">execute_cmd</code><span class="sig-paren">(</span><em class="sig-param">txt=None</em>, <em class="sig-param">session=None</em>, <em class="sig-param">event=None</em>, <em class="sig-param">grapevine_channel=None</em>, <em class="sig-param">sender=None</em>, <em class="sig-param">game=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#GrapevineBot.execute_cmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.execute_cmd" title="Permalink to this definition"></a></dt>
<dd><p>Take incoming data from protocol and send it to connected channel. This is
triggered by the bot_data_in Inputfunc.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.GrapevineBot.factory_path">
<code class="sig-name descname">factory_path</code><em class="property"> = 'evennia.server.portal.grapevine.RestartingWebsocketServerFactory'</em><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.factory_path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.GrapevineBot.msg">
<code class="sig-name descname">msg</code><span class="sig-paren">(</span><em class="sig-param">text=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#GrapevineBot.msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.msg" title="Permalink to this definition"></a></dt>
<dd><p>Takes text from connected channel (only).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>text</strong> (<em>str</em><em>, </em><em>optional</em>) Incoming text from channel.</p>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>options (dict): Options dict with the following allowed keys:</dt><dd><ul class="simple">
<li><p>from_channel (str): dbid of a channel this text originated from.</p></li>
<li><p>from_obj (list): list of objects sending this text.</p></li>
</ul>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.GrapevineBot.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.accounts.bots.GrapevineBot'</em><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.GrapevineBot.start">
<code class="sig-name descname">start</code><span class="sig-paren">(</span><em class="sig-param">ev_channel=None</em>, <em class="sig-param">grapevine_channel=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#GrapevineBot.start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.start" title="Permalink to this definition"></a></dt>
<dd><p>Start by telling the portal to connect to the grapevine network.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.GrapevineBot.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'GrapevineBot'</em><a class="headerlink" href="#evennia.accounts.bots.GrapevineBot.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.bots.IRCBot">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.bots.</code><code class="sig-name descname">IRCBot</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.accounts.bots.Bot" title="evennia.accounts.bots.Bot"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.Bot</span></code></a></p>
<p>Bot for handling IRC connections.</p>
<dl class="exception">
<dt id="evennia.accounts.bots.IRCBot.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.accounts.bots.IRCBot.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.DoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.accounts.bots.IRCBot.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.accounts.bots.IRCBot.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.IRCBot._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for IRCBot&gt;</em><a class="headerlink" href="#evennia.accounts.bots.IRCBot._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.IRCBot.at_msg_send">
<code class="sig-name descname">at_msg_send</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot.at_msg_send"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot.at_msg_send" title="Permalink to this definition"></a></dt>
<dd><p>Shortcut here or we can end up in infinite loop</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.IRCBot.execute_cmd">
<code class="sig-name descname">execute_cmd</code><span class="sig-paren">(</span><em class="sig-param">session=None</em>, <em class="sig-param">txt=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot.execute_cmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot.execute_cmd" title="Permalink to this definition"></a></dt>
<dd><p>Take incoming data and send it to connected channel. This is
triggered by the bot_data_in Inputfunc.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) Session responsible for this
command. Note that this is the bot.</p></li>
<li><p><strong>txt</strong> (<em>str</em><em>, </em><em>optional</em>) Command string.</p></li>
</ul>
</dd>
</dl>
<dl>
<dt>Kwargs:</dt><dd><p>user (str): The name of the user who sent the message.
channel (str): The name of channel the message was sent to.
type (str): Nature of message. Either msg, action, nicklist</p>
<blockquote>
<div><p>or ping.</p>
</div></blockquote>
<dl class="simple">
<dt>nicklist (list, optional): Set if <cite>type=nicklist</cite>. This is a list</dt><dd><p>of nicks returned by calling the <cite>self.get_nicklist</cite>. It must look
for a list <cite>self._nicklist_callers</cite> which will contain all callers
waiting for the nicklist.</p>
</dd>
<dt>timings (float, optional): Set if <cite>type=ping</cite>. This is the return</dt><dd><p>(in seconds) of a ping request triggered with <cite>self.ping</cite>. The
return must look for a list <cite>self._ping_callers</cite> which will contain
all callers waiting for the ping return.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.IRCBot.factory_path">
<code class="sig-name descname">factory_path</code><em class="property"> = 'evennia.server.portal.irc.IRCBotFactory'</em><a class="headerlink" href="#evennia.accounts.bots.IRCBot.factory_path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.IRCBot.get_nicklist">
<code class="sig-name descname">get_nicklist</code><span class="sig-paren">(</span><em class="sig-param">caller</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot.get_nicklist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot.get_nicklist" title="Permalink to this definition"></a></dt>
<dd><p>Retrive the nick list from the connected channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>caller</strong> (<em>Object</em><em> or </em><em>Account</em>) The requester of the list. This will
be stored and echoed to when the irc network replies with the
requested info.</p>
</dd>
</dl>
<dl class="simple">
<dt>Notes: Since the return is asynchronous, the caller is stored internally</dt><dd><p>in a list; all callers in this list will get the nick info once it
returns (it is a custom OOB inputfunc option). The callback will not
survive a reload (which should be fine, its very quick).</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.IRCBot.msg">
<code class="sig-name descname">msg</code><span class="sig-paren">(</span><em class="sig-param">text=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot.msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot.msg" title="Permalink to this definition"></a></dt>
<dd><p>Takes text from connected channel (only).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>text</strong> (<em>str</em><em>, </em><em>optional</em>) Incoming text from channel.</p>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>options (dict): Options dict with the following allowed keys:</dt><dd><ul class="simple">
<li><p>from_channel (str): dbid of a channel this text originated from.</p></li>
<li><p>from_obj (list): list of objects sending this text.</p></li>
</ul>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.IRCBot.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.accounts.bots.IRCBot'</em><a class="headerlink" href="#evennia.accounts.bots.IRCBot.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.IRCBot.ping">
<code class="sig-name descname">ping</code><span class="sig-paren">(</span><em class="sig-param">caller</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot.ping"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot.ping" title="Permalink to this definition"></a></dt>
<dd><p>Fire a ping to the IRC server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>caller</strong> (<em>Object</em><em> or </em><em>Account</em>) The requester of the ping.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.IRCBot.reconnect">
<code class="sig-name descname">reconnect</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot.reconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot.reconnect" title="Permalink to this definition"></a></dt>
<dd><p>Force a protocol-side reconnect of the client without
having to destroy/recreate the bot “account”.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.IRCBot.start">
<code class="sig-name descname">start</code><span class="sig-paren">(</span><em class="sig-param">ev_channel=None</em>, <em class="sig-param">irc_botname=None</em>, <em class="sig-param">irc_channel=None</em>, <em class="sig-param">irc_network=None</em>, <em class="sig-param">irc_port=None</em>, <em class="sig-param">irc_ssl=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#IRCBot.start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.IRCBot.start" title="Permalink to this definition"></a></dt>
<dd><p>Start by telling the portal to start a new session.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ev_channel</strong> (<em>str</em>) Key of the Evennia channel to connect to.</p></li>
<li><p><strong>irc_botname</strong> (<em>str</em>) Name of bot to connect to irc channel. If
not set, use <cite>self.key</cite>.</p></li>
<li><p><strong>irc_channel</strong> (<em>str</em>) Name of channel on the form <cite>#channelname</cite>.</p></li>
<li><p><strong>irc_network</strong> (<em>str</em>) URL of the IRC network, like <cite>irc.freenode.net</cite>.</p></li>
<li><p><strong>irc_port</strong> (<em>str</em>) Port number of the irc network, like <cite>6667</cite>.</p></li>
<li><p><strong>irc_ssl</strong> (<em>bool</em>) Indicates whether to use SSL connection.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.IRCBot.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'IRCBot'</em><a class="headerlink" href="#evennia.accounts.bots.IRCBot.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.bots.RSSBot">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.bots.</code><code class="sig-name descname">RSSBot</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#RSSBot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.RSSBot" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.accounts.bots.Bot" title="evennia.accounts.bots.Bot"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.Bot</span></code></a></p>
<p>An RSS relayer. The RSS protocol itself runs a ticker to update
its feed at regular intervals.</p>
<dl class="exception">
<dt id="evennia.accounts.bots.RSSBot.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.accounts.bots.RSSBot.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.DoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.accounts.bots.RSSBot.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.accounts.bots.RSSBot.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.bots.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.RSSBot._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for RSSBot&gt;</em><a class="headerlink" href="#evennia.accounts.bots.RSSBot._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.RSSBot.execute_cmd">
<code class="sig-name descname">execute_cmd</code><span class="sig-paren">(</span><em class="sig-param">txt=None</em>, <em class="sig-param">session=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#RSSBot.execute_cmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.RSSBot.execute_cmd" title="Permalink to this definition"></a></dt>
<dd><p>Take incoming data and send it to connected channel. This is
triggered by the bot_data_in Inputfunc.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a><em>, </em><em>optional</em>) Session responsible for this
command.</p></li>
<li><p><strong>txt</strong> (<em>str</em><em>, </em><em>optional</em>) Command string.</p></li>
<li><p><strong>kwargs</strong> (<em>dict</em><em>, </em><em>optional</em>) Additional Information passed from bot.
Not used by the RSSbot by default.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.RSSBot.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.accounts.bots.RSSBot'</em><a class="headerlink" href="#evennia.accounts.bots.RSSBot.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.bots.RSSBot.start">
<code class="sig-name descname">start</code><span class="sig-paren">(</span><em class="sig-param">ev_channel=None</em>, <em class="sig-param">rss_url=None</em>, <em class="sig-param">rss_rate=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/bots.html#RSSBot.start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.bots.RSSBot.start" title="Permalink to this definition"></a></dt>
<dd><p>Start by telling the portal to start a new RSS session</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ev_channel</strong> (<em>str</em>) Key of the Evennia channel to connect to.</p></li>
<li><p><strong>rss_url</strong> (<em>str</em>) Full URL to the RSS feed to subscribe to.</p></li>
<li><p><strong>rss_rate</strong> (<em>int</em>) How often for the feedreader to update.</p></li>
</ul>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><strong>RuntimeError</strong> If <cite>ev_channel</cite> does not exist.</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.bots.RSSBot.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'RSSBot'</em><a class="headerlink" href="#evennia.accounts.bots.RSSBot.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.accounts.manager">
<span id="evennia-accounts-manager-module"></span><h2>evennia.accounts.manager module<a class="headerlink" href="#module-evennia.accounts.manager" title="Permalink to this headline"></a></h2>
<p>The managers for the custom Account object and permissions.</p>
<dl class="class">
<dt id="evennia.accounts.manager.AccountManager">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.manager.</code><code class="sig-name descname">AccountManager</code><a class="reference internal" href="../_modules/evennia/accounts/manager.html#AccountManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.manager.AccountManager" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.manager.AccountDBManager</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.managers.TypeclassManager</span></code></p>
</dd></dl>
</div>
<div class="section" id="module-evennia.accounts.models">
<span id="evennia-accounts-models-module"></span><h2>evennia.accounts.models module<a class="headerlink" href="#module-evennia.accounts.models" title="Permalink to this headline"></a></h2>
<p>Account</p>
<p>The account class is an extension of the default Django user class,
and is customized for the needs of Evennia.</p>
<p>We use the Account to store a more mud-friendly style of permission
system as well as to allow the admin more flexibility by storing
attributes on the Account. Within the game we should normally use the
Account managers methods to create users so that permissions are set
correctly.</p>
<p>To make the Account model more flexible for your own game, it can also
persistently store attributes of its own. This is ideal for extra
account info and OOC account configuration variables etc.</p>
<dl class="class">
<dt id="evennia.accounts.models.AccountDB">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.models.</code><code class="sig-name descname">AccountDB</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/models.html#AccountDB"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.models.AccountDB" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.html#evennia.typeclasses.models.TypedObject" title="evennia.typeclasses.models.TypedObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.models.TypedObject</span></code></a>, <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.auth.models.AbstractUser</span></code></p>
<p>This is a special model using Djangos profile functionality
and extends the default Django User model. It is defined as such
by use of the variable AUTH_PROFILE_MODULE in the settings.
One accesses the fields/methods. We try use this model as much
as possible rather than User, since we can customize this to
our liking.</p>
<p>The TypedObject supplies the following (inherited) properties:</p>
<blockquote>
<div><ul class="simple">
<li><p>key - main name</p></li>
<li><p>typeclass_path - the path to the decorating typeclass</p></li>
<li><p>typeclass - auto-linked typeclass</p></li>
<li><p>date_created - time stamp of object creation</p></li>
<li><p>permissions - perm strings</p></li>
<li><p>dbref - #id of object</p></li>
<li><p>db - persistent attribute storage</p></li>
<li><p>ndb - non-persistent attribute storage</p></li>
</ul>
</div></blockquote>
<p>The AccountDB adds the following properties:</p>
<blockquote>
<div><ul class="simple">
<li><p>is_connected - If any Session is currently connected to this Account</p></li>
<li><p>name - alias for user.username</p></li>
<li><p>sessions - sessions connected to this account</p></li>
<li><p>is_superuser - bool if this account is a superuser</p></li>
<li><p>is_bot - bool if this account is a bot and not a real account</p></li>
</ul>
</div></blockquote>
<dl class="exception">
<dt id="evennia.accounts.models.AccountDB.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.accounts.models.AccountDB.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__cmdset_storage_del">
<code class="sig-name descname">_AccountDB__cmdset_storage_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__cmdset_storage_del" title="Permalink to this definition"></a></dt>
<dd><p>Deleter. Allows for del self.name</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__cmdset_storage_get">
<code class="sig-name descname">_AccountDB__cmdset_storage_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__cmdset_storage_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.name. Returns a list of cmdset_storage.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__cmdset_storage_set">
<code class="sig-name descname">_AccountDB__cmdset_storage_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__cmdset_storage_set" title="Permalink to this definition"></a></dt>
<dd><p>Setter. Allows for self.name = value. Stores as a comma-separated
string.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__uid_del">
<code class="sig-name descname">_AccountDB__uid_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__uid_del" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__uid_get">
<code class="sig-name descname">_AccountDB__uid_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__uid_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Retrieves the user id</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__uid_set">
<code class="sig-name descname">_AccountDB__uid_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__uid_set" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__username_del">
<code class="sig-name descname">_AccountDB__username_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__username_del" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__username_get">
<code class="sig-name descname">_AccountDB__username_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__username_get" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB._AccountDB__username_set">
<code class="sig-name descname">_AccountDB__username_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB._AccountDB__username_set" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.accounts.models.AccountDB._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for AccountDB&gt;</em><a class="headerlink" href="#evennia.accounts.models.AccountDB._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.account_subscription_set">
<code class="sig-name descname">account_subscription_set</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.account_subscription_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.cmdset_storage">
<em class="property">property </em><code class="sig-name descname">cmdset_storage</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.cmdset_storage" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.name. Returns a list of cmdset_storage.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.db_attributes">
<code class="sig-name descname">db_attributes</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.db_attributes" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.db_cmdset_storage">
<code class="sig-name descname">db_cmdset_storage</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.db_cmdset_storage" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.db_is_bot">
<code class="sig-name descname">db_is_bot</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.db_is_bot" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.db_is_connected">
<code class="sig-name descname">db_is_connected</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.db_is_connected" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.db_tags">
<code class="sig-name descname">db_tags</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.db_tags" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.get_next_by_date_joined">
<code class="sig-name descname">get_next_by_date_joined</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: date_joined&gt;</em>, <em class="sig-param">is_next=True</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB.get_next_by_date_joined" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.get_next_by_db_date_created">
<code class="sig-name descname">get_next_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=True</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB.get_next_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.get_previous_by_date_joined">
<code class="sig-name descname">get_previous_by_date_joined</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: date_joined&gt;</em>, <em class="sig-param">is_next=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB.get_previous_by_date_joined" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.get_previous_by_db_date_created">
<code class="sig-name descname">get_previous_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.accounts.models.AccountDB.get_previous_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.groups">
<code class="sig-name descname">groups</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.groups" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.hide_from_accounts_set">
<code class="sig-name descname">hide_from_accounts_set</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.hide_from_accounts_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.is_bot">
<em class="property">property </em><code class="sig-name descname">is_bot</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.is_bot" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for getting database field <cite>db_is_bot</cite>.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.is_connected">
<em class="property">property </em><code class="sig-name descname">is_connected</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.is_connected" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for getting database field <cite>db_is_connected</cite>.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.key">
<em class="property">property </em><code class="sig-name descname">key</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.logentry_set">
<code class="sig-name descname">logentry_set</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.logentry_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Parent.children</span></code> is a <code class="docutils literal notranslate"><span class="pre">ReverseManyToOneDescriptor</span></code> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.name">
<em class="property">property </em><code class="sig-name descname">name</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.name" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.objectdb_set">
<code class="sig-name descname">objectdb_set</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.objectdb_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Parent.children</span></code> is a <code class="docutils literal notranslate"><span class="pre">ReverseManyToOneDescriptor</span></code> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;evennia.accounts.manager.AccountDBManager object&gt;</em><a class="headerlink" href="#evennia.accounts.models.AccountDB.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.accounts.models.AccountDB'</em><a class="headerlink" href="#evennia.accounts.models.AccountDB.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.receiver_account_set">
<code class="sig-name descname">receiver_account_set</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.receiver_account_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.scriptdb_set">
<code class="sig-name descname">scriptdb_set</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.scriptdb_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Parent.children</span></code> is a <code class="docutils literal notranslate"><span class="pre">ReverseManyToOneDescriptor</span></code> instance.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.sender_account_set">
<code class="sig-name descname">sender_account_set</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.sender_account_set" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'SharedMemoryModelBase'</em><a class="headerlink" href="#evennia.accounts.models.AccountDB.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.models.AccountDB.uid">
<em class="property">property </em><code class="sig-name descname">uid</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.uid" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Retrieves the user id</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.models.AccountDB.user_permissions">
<code class="sig-name descname">user_permissions</code><a class="headerlink" href="#evennia.accounts.models.AccountDB.user_permissions" title="Permalink to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Pizza.toppings</span></code> and <code class="docutils literal notranslate"><span class="pre">Topping.pizzas</span></code> are <code class="docutils literal notranslate"><span class="pre">ManyToManyDescriptor</span></code>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <code class="docutils literal notranslate"><span class="pre">create_forward_many_to_many_manager()</span></code> defined below.</p>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.accounts.tests">
<span id="evennia-accounts-tests-module"></span><h2>evennia.accounts.tests module<a class="headerlink" href="#module-evennia.accounts.tests" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="evennia.accounts.tests.TestAccountPuppetDeletion">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.tests.</code><code class="sig-name descname">TestAccountPuppetDeletion</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountPuppetDeletion"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountPuppetDeletion" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.html#evennia.utils.test_resources.EvenniaTest" title="evennia.utils.test_resources.EvenniaTest"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.test_resources.EvenniaTest</span></code></a></p>
<dl class="method">
<dt id="evennia.accounts.tests.TestAccountPuppetDeletion.test_puppet_deletion">
<code class="sig-name descname">test_puppet_deletion</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountPuppetDeletion.test_puppet_deletion"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountPuppetDeletion.test_puppet_deletion" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.tests.TestAccountSessionHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.tests.</code><code class="sig-name descname">TestAccountSessionHandler</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountSessionHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountSessionHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">unittest.case.TestCase</span></code></p>
<p>Check AccountSessionHandler class</p>
<dl class="method">
<dt id="evennia.accounts.tests.TestAccountSessionHandler.setUp">
<code class="sig-name descname">setUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountSessionHandler.setUp"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountSessionHandler.setUp" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for setting up the test fixture before exercising it.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestAccountSessionHandler.tearDown">
<code class="sig-name descname">tearDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountSessionHandler.tearDown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountSessionHandler.tearDown" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for deconstructing the test fixture after testing it.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestAccountSessionHandler.test_all">
<code class="sig-name descname">test_all</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountSessionHandler.test_all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountSessionHandler.test_all" title="Permalink to this definition"></a></dt>
<dd><p>Check all method</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestAccountSessionHandler.test_count">
<code class="sig-name descname">test_count</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountSessionHandler.test_count"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountSessionHandler.test_count" title="Permalink to this definition"></a></dt>
<dd><p>Check count method</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestAccountSessionHandler.test_get">
<code class="sig-name descname">test_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestAccountSessionHandler.test_get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestAccountSessionHandler.test_get" title="Permalink to this definition"></a></dt>
<dd><p>Check get method</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.tests.TestDefaultAccount">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.tests.</code><code class="sig-name descname">TestDefaultAccount</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">unittest.case.TestCase</span></code></p>
<p>Check DefaultAccount class</p>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccount.setUp">
<code class="sig-name descname">setUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount.setUp"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount.setUp" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for setting up the test fixture before exercising it.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccount.test_puppet_object_already_puppeted">
<code class="sig-name descname">test_puppet_object_already_puppeted</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount.test_puppet_object_already_puppeted"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_already_puppeted" title="Permalink to this definition"></a></dt>
<dd><p>Check puppet_object method called, already puppeted</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccount.test_puppet_object_already_puppeting">
<code class="sig-name descname">test_puppet_object_already_puppeting</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount.test_puppet_object_already_puppeting"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_already_puppeting" title="Permalink to this definition"></a></dt>
<dd><p>Check puppet_object method called, already puppeting this</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccount.test_puppet_object_joining_other_session">
<code class="sig-name descname">test_puppet_object_joining_other_session</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount.test_puppet_object_joining_other_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_joining_other_session" title="Permalink to this definition"></a></dt>
<dd><p>Check puppet_object method called, joining other session</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_object">
<code class="sig-name descname">test_puppet_object_no_object</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount.test_puppet_object_no_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_object" title="Permalink to this definition"></a></dt>
<dd><p>Check puppet_object method called with no object param</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_permission">
<code class="sig-name descname">test_puppet_object_no_permission</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount.test_puppet_object_no_permission"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_permission" title="Permalink to this definition"></a></dt>
<dd><p>Check puppet_object method called, no permission</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_session">
<code class="sig-name descname">test_puppet_object_no_session</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccount.test_puppet_object_no_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccount.test_puppet_object_no_session" title="Permalink to this definition"></a></dt>
<dd><p>Check puppet_object method called with no session param</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.tests.</code><code class="sig-name descname">TestDefaultAccountAuth</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.html#evennia.utils.test_resources.EvenniaTest" title="evennia.utils.test_resources.EvenniaTest"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.test_resources.EvenniaTest</span></code></a></p>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth.setUp">
<code class="sig-name descname">setUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth.setUp"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth.setUp" title="Permalink to this definition"></a></dt>
<dd><p>Sets up testing environment</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth.test_authentication">
<code class="sig-name descname">test_authentication</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth.test_authentication"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth.test_authentication" title="Permalink to this definition"></a></dt>
<dd><p>Confirm Account authentication method is authenticating/denying users.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth.test_create">
<code class="sig-name descname">test_create</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth.test_create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth.test_create" title="Permalink to this definition"></a></dt>
<dd><p>Confirm Account creation is working as expected.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth.test_password_change">
<code class="sig-name descname">test_password_change</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth.test_password_change"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth.test_password_change" title="Permalink to this definition"></a></dt>
<dd><p>Check password setting and validation is working as expected</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth.test_password_validation">
<code class="sig-name descname">test_password_validation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth.test_password_validation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth.test_password_validation" title="Permalink to this definition"></a></dt>
<dd><p>Check password validators deny bad passwords</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth.test_throttle">
<code class="sig-name descname">test_throttle</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth.test_throttle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth.test_throttle" title="Permalink to this definition"></a></dt>
<dd><p>Confirm throttle activates on too many failures.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountAuth.test_username_validation">
<code class="sig-name descname">test_username_validation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountAuth.test_username_validation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountAuth.test_username_validation" title="Permalink to this definition"></a></dt>
<dd><p>Check username validators deny relevant usernames</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.tests.TestDefaultAccountEv">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.tests.</code><code class="sig-name descname">TestDefaultAccountEv</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.html#evennia.utils.test_resources.EvenniaTest" title="evennia.utils.test_resources.EvenniaTest"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.test_resources.EvenniaTest</span></code></a></p>
<p>Testing using the EvenniaTest parent</p>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountEv.test_at_look">
<code class="sig-name descname">test_at_look</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv.test_at_look"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv.test_at_look" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountEv.test_characters_property">
<code class="sig-name descname">test_characters_property</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv.test_characters_property"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv.test_characters_property" title="Permalink to this definition"></a></dt>
<dd><p>test existence of None in _playable_characters Attr</p>
</dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountEv.test_connection_time">
<code class="sig-name descname">test_connection_time</code><span class="sig-paren">(</span><em class="sig-param">mock_time</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv.test_connection_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv.test_connection_time" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountEv.test_create_account">
<code class="sig-name descname">test_create_account</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv.test_create_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv.test_create_account" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountEv.test_idle_time">
<code class="sig-name descname">test_idle_time</code><span class="sig-paren">(</span><em class="sig-param">mock_time</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv.test_idle_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv.test_idle_time" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountEv.test_msg">
<code class="sig-name descname">test_msg</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv.test_msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv.test_msg" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultAccountEv.test_puppet_success">
<code class="sig-name descname">test_puppet_success</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultAccountEv.test_puppet_success"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultAccountEv.test_puppet_success" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.accounts.tests.TestDefaultGuest">
<em class="property">class </em><code class="sig-prename descclassname">evennia.accounts.tests.</code><code class="sig-name descname">TestDefaultGuest</code><span class="sig-paren">(</span><em class="sig-param">methodName='runTest'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultGuest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.html#evennia.utils.test_resources.EvenniaTest" title="evennia.utils.test_resources.EvenniaTest"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.test_resources.EvenniaTest</span></code></a></p>
<p>Check DefaultGuest class</p>
<dl class="attribute">
<dt id="evennia.accounts.tests.TestDefaultGuest._overridden_settings">
<code class="sig-name descname">_overridden_settings</code><em class="property"> = {'GUEST_ENABLED': True, 'GUEST_LIST': ['bruce_wayne']}</em><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest._overridden_settings" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.accounts.tests.TestDefaultGuest.ip">
<code class="sig-name descname">ip</code><em class="property"> = '212.216.134.22'</em><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest.ip" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultGuest.test_at_post_disconnect">
<code class="sig-name descname">test_at_post_disconnect</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultGuest.test_at_post_disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest.test_at_post_disconnect" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultGuest.test_at_post_login">
<code class="sig-name descname">test_at_post_login</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultGuest.test_at_post_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest.test_at_post_login" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultGuest.test_at_server_shutdown">
<code class="sig-name descname">test_at_server_shutdown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultGuest.test_at_server_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest.test_at_server_shutdown" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultGuest.test_authenticate">
<code class="sig-name descname">test_authenticate</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultGuest.test_authenticate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest.test_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultGuest.test_create">
<code class="sig-name descname">test_create</code><span class="sig-paren">(</span><em class="sig-param">get_channel</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultGuest.test_create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest.test_create" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.accounts.tests.TestDefaultGuest.test_create_not_enabled">
<code class="sig-name descname">test_create_not_enabled</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/accounts/tests.html#TestDefaultGuest.test_create_not_enabled"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.accounts.tests.TestDefaultGuest.test_create_not_enabled" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<p><h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.accounts package</a><ul>
<li><a class="reference internal" href="#subpackages">Subpackages</a></li>
<li><a class="reference internal" href="#submodules">Submodules</a></li>
<li><a class="reference internal" href="#module-evennia.accounts.accounts">evennia.accounts.accounts module</a></li>
<li><a class="reference internal" href="#module-evennia.accounts.admin">evennia.accounts.admin module</a></li>
<li><a class="reference internal" href="#module-evennia.accounts.bots">evennia.accounts.bots module</a></li>
<li><a class="reference internal" href="#module-evennia.accounts.manager">evennia.accounts.manager module</a></li>
<li><a class="reference internal" href="#module-evennia.accounts.models">evennia.accounts.models module</a></li>
<li><a class="reference internal" href="#module-evennia.accounts.tests">evennia.accounts.tests module</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../index.html">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.accounts.rst.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div>
<h3>Versions</h3>
<ul>
<li><a href="evennia.accounts.html">1.0-dev (develop branch)</a></li>
<li><a href="../../../versions/0.9.1/api/evennia.accounts.html">0.9.1 (master branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2020, The Evennia developer community.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.4.4</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="../_sources/api/evennia.accounts.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>