<spanid="evennia-comms-models"></span><h1>evennia.comms.models<aclass="headerlink"href="#module-evennia.comms.models"title="Link to this heading">¶</a></h1>
<p>Models for the in-game communication system.</p>
<p>The comm system could take the form of channels, but can also be
adopted for storing tells or in-game mail.</p>
<p>The comsystem’s main component is the Message (Msg), which carries the
actual information between two parties. Msgs are stored in the
database and usually not deleted. A Msg always have one sender (a
user), but can have any number targets, both users and channels.</p>
<p>For non-persistent (and slightly faster) use one can also use the
TempMsg, which mimics the Msg API but without actually saving to the
database.</p>
<p>Channels are central objects that act as targets for Msgs. Accounts can
connect to channels by use of a ChannelConnect object (this object is
necessary to easily be able to delete connections on the fly).</p>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">Msg</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.Msg"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">db_sender_accounts</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_sender_accounts"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_sender_objects</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_sender_objects"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_sender_scripts</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_sender_scripts"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_sender_external</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_sender_external"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_receivers_accounts</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_receivers_accounts"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_receivers_objects</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_receivers_objects"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_receivers_scripts</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_receivers_scripts"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_receiver_external</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_receiver_external"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_header</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_header"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_message</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_message"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_date_created</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_date_created"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_lock_storage</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_lock_storage"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_hide_from_accounts</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_hide_from_accounts"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_hide_from_objects</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_hide_from_objects"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_tags</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.db_tags"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">objects</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre"><evennia.comms.managers.MsgManager</span><spanclass="pre">object></span></em><aclass="headerlink"href="#evennia.comms.models.Msg.objects"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">locks</span></span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.locks"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.Msg.locks"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">tags</span></span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.tags"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.Msg.tags"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">date_created</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.date_created"title="Link to this definition">¶</a></dt>
<dd><p>Return the field in localized time based on settings.TIME_ZONE.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">senders</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.senders"title="Link to this definition">¶</a></dt>
<dd><p>Getter. Allows for value = self.senders</p>
<spanclass="sig-name descname"><spanclass="pre">remove_sender</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">senders</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.remove_sender"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.Msg.remove_sender"title="Link to this definition">¶</a></dt>
<dd><p>Remove a single sender or a list of senders.</p>
<ddclass="field-odd"><p><strong>senders</strong> (<em>Account</em><em>, </em><em>Object</em><em>, </em><em>str</em><em> or </em><em>list</em>) – Senders to remove.
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">receivers</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.receivers"title="Link to this definition">¶</a></dt>
<dd><p>Getter. Allows for value = self.receivers.
Returns four lists of receivers: accounts, objects, scripts and</p>
<spanclass="sig-name descname"><spanclass="pre">remove_receiver</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">receivers</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.remove_receiver"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.Msg.remove_receiver"title="Link to this definition">¶</a></dt>
<dd><p>Remove a single receiver, a list of receivers, or a single extral receiver.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">hide_from</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.hide_from"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">access</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">accessing_obj</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'read'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#Msg.access"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.Msg.access"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.NotUpdated"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">get_next_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=True</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.Msg.get_next_by_db_date_created"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">get_previous_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.Msg.get_previous_by_db_date_created"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">header</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.header"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_header</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">id</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.id"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">lock_storage</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.lock_storage"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_lock_storage</strong>.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">message</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.message"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_message</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.comms.models.Msg'</span></em><aclass="headerlink"href="#evennia.comms.models.Msg.path"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">receiver_external</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.receiver_external"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_receiver_external</strong>.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">sender_external</span></span><aclass="headerlink"href="#evennia.comms.models.Msg.sender_external"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_sender_external</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'SharedMemoryModelBase'</span></em><aclass="headerlink"href="#evennia.comms.models.Msg.typename"title="Link to this definition">¶</a></dt>
<li><p><strong>senders</strong> (<em>any</em><em> or </em><em>list</em><em>, </em><em>optional</em>) – Senders of the message.</p></li>
<li><p><strong>receivers</strong> (<em>Account</em><em>, </em><em>Object</em><em>, </em><em>Script</em><em> or </em><em>list</em><em>, </em><em>optional</em>) – Receivers of this message.</p></li>
<li><p><strong>message</strong> (<em>str</em><em>, </em><em>optional</em>) – Message to send.</p></li>
<li><p><strong>header</strong> (<em>str</em><em>, </em><em>optional</em>) – Header of message.</p></li>
<li><p><strong>type</strong> (<em>str</em><em>, </em><em>optional</em>) – Message class, if any.</p></li>
<li><p><strong>lockstring</strong> (<em>str</em><em>, </em><em>optional</em>) – Lock for the message.</p></li>
<li><p><strong>hide_from</strong> (<em>Account</em><em>, </em><em>Object</em><em>, or </em><em>list</em><em>, </em><em>optional</em>) – Entities to hide this message from.</p></li>
<spanclass="sig-name descname"><spanclass="pre">locks</span></span><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.locks"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.locks"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">remove_sender</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">sender</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.remove_sender"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.remove_sender"title="Link to this definition">¶</a></dt>
<ddclass="field-odd"><p><strong>sender</strong> (<em>Object</em><em>, </em><em>Account</em><em>, </em><em>str</em><em> or </em><em>list</em>) – Senders to remove.</p>
<spanclass="sig-name descname"><spanclass="pre">remove_receiver</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">receiver</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.remove_receiver"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.remove_receiver"title="Link to this definition">¶</a></dt>
<dd><p>Remove a receiver or a list of receivers</p>
<spanclass="sig-name descname"><spanclass="pre">access</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">accessing_obj</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'read'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#TempMsg.access"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TempMsg.access"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">ChannelDB</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#ChannelDB"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.ChannelDB"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">db_account_subscriptions</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_account_subscriptions"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_object_subscriptions</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_object_subscriptions"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">objects</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre"><evennia.comms.managers.ChannelDBManager</span><spanclass="pre">object></span></em><aclass="headerlink"href="#evennia.comms.models.ChannelDB.objects"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.NotUpdated"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">db_attributes</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_attributes"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_date_created</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_date_created"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_key</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_key"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_lock_storage</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_lock_storage"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_tags</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_tags"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_typeclass_path</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.db_typeclass_path"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">get_next_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=True</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.get_next_by_db_date_created"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">get_previous_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.get_previous_by_db_date_created"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">id</span></span><aclass="headerlink"href="#evennia.comms.models.ChannelDB.id"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.comms.models.ChannelDB'</span></em><aclass="headerlink"href="#evennia.comms.models.ChannelDB.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'SharedMemoryModelBase'</span></em><aclass="headerlink"href="#evennia.comms.models.ChannelDB.typename"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">subscriptions</span></span><aclass="reference internal"href="../_modules/evennia/comms/models.html#ChannelDB.subscriptions"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.ChannelDB.subscriptions"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">SubscriptionHandler</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.__init__"title="Link to this definition">¶</a></dt>
<dd><p>Initialize the handler</p>
<dlclass="simple">
<dt>Attr:</dt><dd><p>obj (ChannelDB): The channel the handler sits on.</p>
<spanclass="sig-name descname"><spanclass="pre">has</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">entity</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler.has"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.has"title="Link to this definition">¶</a></dt>
<dd><p>Check if the given entity subscribe to this channel</p>
<spanclass="sig-name descname"><spanclass="pre">add</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">entity</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler.add"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.add"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">remove</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">entity</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler.remove"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.remove"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">all</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler.all"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.all"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">get</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.get"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">online</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler.online"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.online"title="Link to this definition">¶</a></dt>
<dd><p>Get all online accounts from our cache
:returns: <em>subscribers (list)</em>–</p>
<blockquote>
<div><dlclass="simple">
<dt>Subscribers who are online or</dt><dd><p>are puppeted by an online account.</p>
<spanclass="sig-name descname"><spanclass="pre">clear</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/comms/models.html#SubscriptionHandler.clear"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SubscriptionHandler.clear"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">LockHandler</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.__init__"title="Link to this definition">¶</a></dt>
<dd><p>Loads and pre-caches all relevant locks and their functions.</p>
<spanclass="sig-name descname"><spanclass="pre">add</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">lockstring</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">validate_only</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.add"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.add"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">all</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.all"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.all"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">append</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">lockstring</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">op</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'or'</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.append"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.append"title="Link to this definition">¶</a></dt>
<dd><p>Append a lock definition to access_type if it doesn’t already exist.</p>
<spanclass="sig-name descname"><spanclass="pre">cache_lock_bypass</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.cache_lock_bypass"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.cache_lock_bypass"title="Link to this definition">¶</a></dt>
<dd><p>We cache superuser bypass checks here for efficiency. This
needs to be re-run when an account is assigned to a character.
We need to grant access to superusers. We need to check both
directly on the object (accounts), through obj.account and using
the get_account() method (this sits on serversessions, in some
rare cases where a check is done before the login process has
<spanclass="sig-name descname"><spanclass="pre">check</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">accessing_obj</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">no_superuser_bypass</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.check"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.check"title="Link to this definition">¶</a></dt>
<dd><p>Checks a lock of the correct type by passing execution off to
<spanclass="sig-name descname"><spanclass="pre">check_lockstring</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">accessing_obj</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">lockstring</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">no_superuser_bypass</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.check_lockstring"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.check_lockstring"title="Link to this definition">¶</a></dt>
<dd><p>Do a direct check against a lockstring (‘atype:func()..’),
without any intermediary storage on the accessed object.</p>
<spanclass="sig-name descname"><spanclass="pre">clear</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.clear"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.clear"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">delete</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.LockHandler.delete"title="Link to this definition">¶</a></dt>
<dd><p>Remove a particular lock from the handler</p>
<spanclass="sig-name descname"><spanclass="pre">get</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.get"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.get"title="Link to this definition">¶</a></dt>
<dd><p>Get the full lockstring or the lockstring of a particular
<spanclass="sig-name descname"><spanclass="pre">remove</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.remove"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.remove"title="Link to this definition">¶</a></dt>
<dd><p>Remove a particular lock from the handler</p>
<spanclass="sig-name descname"><spanclass="pre">replace</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">lockstring</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.replace"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.replace"title="Link to this definition">¶</a></dt>
<ddclass="field-odd"><p><aclass="reference internal"href="evennia.commands.default.building.html#evennia.commands.default.building.LockException"title="evennia.commands.default.building.LockException"><strong>LockException</strong></a>– If a critical error occurred.
<spanclass="sig-name descname"><spanclass="pre">reset</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.reset"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.reset"title="Link to this definition">¶</a></dt>
<dd><p>Set the reset flag, so the the lock will be re-cached at next
checking. This is usually called by @reload.</p>
<spanclass="sig-name descname"><spanclass="pre">validate</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">lockstring</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/locks/lockhandler.html#LockHandler.validate"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.LockHandler.validate"title="Link to this definition">¶</a></dt>
<dd><p>Validate lockstring syntactically, without saving it.</p>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">SharedMemoryModel</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">Meta</span></span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.Meta"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.Meta"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">abstract</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.Meta.abstract"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_idmapper_flush</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.at_idmapper_flush"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.at_idmapper_flush"title="Link to this definition">¶</a></dt>
<dd><p>This is called when the idmapper cache is flushed and
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">cache_instance</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">instance</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">new</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.cache_instance"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.cache_instance"title="Link to this definition">¶</a></dt>
<dd><p>Method to store an instance in the cache.</p>
<spanclass="sig-name descname"><spanclass="pre">delete</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.delete"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.delete"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">flush_cached_instance</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">instance</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">force</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.flush_cached_instance"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.flush_cached_instance"title="Link to this definition">¶</a></dt>
<dd><p>Method to flush an instance from the cache. The instance will
always be flushed from the cache, since this is most likely
called from delete(), and we want to make sure we don’t cache
<spanclass="sig-name descname"><spanclass="pre">flush_from_cache</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">force</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.flush_from_cache"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.flush_from_cache"title="Link to this definition">¶</a></dt>
<dd><p>Flush this instance from the instance cache. Use
<strong>force</strong> to override the result of at_idmapper_flush() for the object.</p>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">flush_instance_cache</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">force</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.flush_instance_cache"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.flush_instance_cache"title="Link to this definition">¶</a></dt>
<dd><p>This will clean safe objects from the cache. Use <strong>force</strong>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">get_all_cached_instances</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.get_all_cached_instances"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.get_all_cached_instances"title="Link to this definition">¶</a></dt>
<dd><p>Return the objects so far cached by idmapper for this class.</p>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">get_cached_instance</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">id</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.get_cached_instance"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.get_cached_instance"title="Link to this definition">¶</a></dt>
<dd><p>Method to retrieve a cached instance by pk value. Returns None
when not found (which will always be the case when caching is
disabled for this class). Please note that the lookup will be
<spanclass="sig-name descname"><spanclass="pre">objects</span></span><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.objects"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.utils.idmapper.models.SharedMemoryModel'</span></em><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">save</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/idmapper/models.html#SharedMemoryModel.save"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.save"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'SharedMemoryModelBase'</span></em><aclass="headerlink"href="#evennia.comms.models.SharedMemoryModel.typename"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">Tag</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#Tag"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.Tag"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">DoesNotExist</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.DoesNotExist"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">MultipleObjectsReturned</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.MultipleObjectsReturned"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">exception</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">NotUpdated</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.NotUpdated"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">accountdb_set</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.accountdb_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">channeldb_set</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.channeldb_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_category</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.db_category"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_data</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.db_data"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_key</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.db_key"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_model</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.db_model"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_tagtype</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.db_tagtype"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">helpentry_set</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.helpentry_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">id</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.id"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">msg_set</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.msg_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">objectdb_set</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.objectdb_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">objects</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre"><django.db.models.manager.Manager</span><spanclass="pre">object></span></em><aclass="headerlink"href="#evennia.comms.models.Tag.objects"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">scriptdb_set</span></span><aclass="headerlink"href="#evennia.comms.models.Tag.scriptdb_set"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">TagHandler</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.__init__"title="Link to this definition">¶</a></dt>
<dd><p>Tags are stored internally in the TypedObject.db_tags m2m
field with an tag.db_model based on the obj the taghandler is
stored on and with a tagtype given by self.handlertype</p>
<spanclass="sig-name descname"><spanclass="pre">add</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">key</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">category</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">data</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.add"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.add"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">all</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">return_key_and_category</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">return_objs</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.all"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.all"title="Link to this definition">¶</a></dt>
<dd><p>Get all tags in this handler, regardless of category.</p>
<spanclass="sig-name descname"><spanclass="pre">batch_add</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.batch_add"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.batch_add"title="Link to this definition">¶</a></dt>
<ddclass="field-odd"><p><strong>*args</strong> (<em>tuple</em><em> or </em><em>str</em>) – Each argument should be a <strong>tagstr</strong> keys or tuple
<strong>(keystr, category)</strong> or <strong>(keystr, category, data)</strong>. It’s possible to mix input
types.</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This will generate a mimimal number of self.add calls,
based on the number of categories involved (including
<strong>None</strong>) (data is not unique and may be overwritten by the content
<spanclass="sig-name descname"><spanclass="pre">batch_remove</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.batch_remove"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.batch_remove"title="Link to this definition">¶</a></dt>
<dd><p>Batch-remove tags from a list of tuples.</p>
<ddclass="field-odd"><p><strong>*args</strong> (<em>tuple</em><em> or </em><em>str</em>) – Each argument should be a <strong>tagstr</strong> keys or tuple
<strong>(keystr, category)</strong> or <strong>(keystr, category, data)</strong> (the <strong>data</strong> field is ignored,
only <strong>keystr</strong>/<strong>category</strong> matters). It’s possible to mix input types.</p>
<spanclass="sig-name descname"><spanclass="pre">clear</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">category</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.clear"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.clear"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">has</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">key</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">category</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">return_list</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.has"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.has"title="Link to this definition">¶</a></dt>
<dd><p>Checks if the given Tag (or list of Tags) exists on the object.</p>
<spanclass="sig-name descname"><spanclass="pre">remove</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">key</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">category</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.remove"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.remove"title="Link to this definition">¶</a></dt>
<dd><p>Remove a tag from the handler based ond key and/or category.</p>
<spanclass="sig-name descname"><spanclass="pre">reset_cache</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/tags.html#TagHandler.reset_cache"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TagHandler.reset_cache"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">TypedObject</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">Meta</span></span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.Meta"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.Meta"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">abstract</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#evennia.comms.models.TypedObject.Meta.abstract"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">ordering</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">['-db_date_created',</span><spanclass="pre">'id',</span><spanclass="pre">'db_typeclass_path',</span><spanclass="pre">'db_key']</span></em><aclass="headerlink"href="#evennia.comms.models.TypedObject.Meta.ordering"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">verbose_name</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'Evennia</span><spanclass="pre">Database</span><spanclass="pre">Object'</span></em><aclass="headerlink"href="#evennia.comms.models.TypedObject.Meta.verbose_name"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o"><spanclass="pre">*</span></span><spanclass="n"><spanclass="pre">args</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.__init__"title="Link to this definition">¶</a></dt>
<dd><p>The <strong>__init__</strong> method of typeclasses is the core operational
code of the typeclass system, where it dynamically re-applies
a class based on the db_typeclass_path database field rather
<spanclass="sig-name descname"><spanclass="pre">access</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">accessing_obj</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">access_type</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'read'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">no_superuser_bypass</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.access"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.access"title="Link to this definition">¶</a></dt>
<dd><p>Determines if another object has permission to access this one.</p>
<spanclass="sig-name descname"><spanclass="pre">aliases</span></span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.aliases"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.aliases"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">at_idmapper_flush</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.at_idmapper_flush"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.at_idmapper_flush"title="Link to this definition">¶</a></dt>
<dd><p>This is called when the idmapper cache is flushed and
<spanclass="sig-name descname"><spanclass="pre">at_init</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.at_init"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.at_init"title="Link to this definition">¶</a></dt>
<dd><p>Called when this object is loaded into cache. This is more reliable
<spanclass="sig-name descname"><spanclass="pre">at_rename</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">oldname</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">newname</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.at_rename"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.at_rename"title="Link to this definition">¶</a></dt>
<dd><p>This Hook is called by @name on a successful rename.</p>
<spanclass="sig-name descname"><spanclass="pre">attributes</span></span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.attributes"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.attributes"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">check_permstring</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">permstring</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.check_permstring"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.check_permstring"title="Link to this definition">¶</a></dt>
<dd><p>This explicitly checks if we hold particular permission
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">date_created</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.date_created"title="Link to this definition">¶</a></dt>
<dd><p>Get the localized date created, based on settings.TIME_ZONE.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">db</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.db"title="Link to this definition">¶</a></dt>
<dd><p>Attribute handler wrapper. Allows for the syntax</p>
<spanclass="sig-name descname"><spanclass="pre">db_attributes</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.db_attributes"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_date_created</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.db_date_created"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_key</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.db_key"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_lock_storage</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.db_lock_storage"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<spanclass="sig-name descname"><spanclass="pre">db_tags</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.db_tags"title="Link to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<spanclass="sig-name descname"><spanclass="pre">db_typeclass_path</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.db_typeclass_path"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">dbid</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.dbid"title="Link to this definition">¶</a></dt>
<dd><p>Caches and returns the unique id of the object.
Use this instead of self.id, which is not cached.</p>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">dbref</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.dbref"title="Link to this definition">¶</a></dt>
<dd><p>Returns the object’s dbref on the form #NN.</p>
<spanclass="sig-name descname"><spanclass="pre">delete</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.delete"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.delete"title="Link to this definition">¶</a></dt>
<dd><p>Cleaning up handlers on the typeclass level</p>
<spanclass="sig-name descname"><spanclass="pre">get_absolute_url</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.TypedObject.get_absolute_url"title="Link to this definition">¶</a></dt>
<dd><p>Returns the URI path for a View that allows users to view details for
<spanclass="sig-name descname"><spanclass="pre">get_display_name</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">looker</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.get_display_name"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.get_display_name"title="Link to this definition">¶</a></dt>
<dd><p>Displays the name of the object in a viewer-aware manner.</p>
<ddclass="field-odd"><p><strong>looker</strong> (<aclass="reference internal"href="#evennia.comms.models.TypedObject"title="evennia.comms.models.TypedObject"><em>TypedObject</em></a><em>, </em><em>optional</em>) – The object or account that is looking
at/getting inforamtion for this object. If not given, some
<spanclass="sig-name descname"><spanclass="pre">get_extra_info</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">looker</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.get_extra_info"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.get_extra_info"title="Link to this definition">¶</a></dt>
<dd><p>Used when an object is in a list of ambiguous objects as an
additional information tag.</p>
<p>For instance, if you had potions which could have varying
levels of liquid left in them, you might want to display how
many drinks are left in each when selecting which to drop, but
<ddclass="field-odd"><p><strong>looker</strong> (<aclass="reference internal"href="#evennia.comms.models.TypedObject"title="evennia.comms.models.TypedObject"><em>TypedObject</em></a>) – The object or account that is looking
<spanclass="sig-name descname"><spanclass="pre">get_next_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=True</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.TypedObject.get_next_by_db_date_created"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">get_previous_by_db_date_created</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">*</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">field=<django.db.models.fields.DateTimeField:</span><spanclass="pre">db_date_created></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">is_next=False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">**kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.comms.models.TypedObject.get_previous_by_db_date_created"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">init_evennia_properties</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.init_evennia_properties"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.init_evennia_properties"title="Link to this definition">¶</a></dt>
<dd><p>Called by creation methods; makes sure to initialize Attribute/TagProperties
<spanclass="sig-name descname"><spanclass="pre">is_typeclass</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">typeclass</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">exact</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.is_typeclass"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.is_typeclass"title="Link to this definition">¶</a></dt>
<dd><p>Returns true if this object has this type OR has a typeclass
which is an subclass of the given typeclass. This operates on
the actually loaded typeclass (this is important since a
failing typeclass may instead have its default currently
loaded) typeclass - can be a class object or the python path
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">key</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.key"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">lock_storage</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.lock_storage"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_lock_storage</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">locks</span></span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.locks"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.locks"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">name</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.name"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">nattributes</span></span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.nattributes"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.nattributes"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">ndb</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.ndb"title="Link to this definition">¶</a></dt>
<dd><p>NonDataBase). Everything stored
to this is guaranteed to be cleared when a server is shutdown.
Syntax is same as for the _get_db_holder() method and
<spanclass="sig-name descname"><spanclass="pre">objects</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.objects"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">path</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'evennia.typeclasses.models.TypedObject'</span></em><aclass="headerlink"href="#evennia.comms.models.TypedObject.path"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">permissions</span></span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.permissions"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.permissions"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">search</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="o"><spanclass="pre">**</span></span><spanclass="n"><spanclass="pre">kwargs</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.search"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.search"title="Link to this definition">¶</a></dt>
<dd><p>Overridden by class children. This implements a common API.</p>
<spanclass="sig-name descname"><spanclass="pre">set_class_from_typeclass</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">typeclass_path</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.set_class_from_typeclass"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.set_class_from_typeclass"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">swap_typeclass</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">new_typeclass</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">clean_attributes</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">run_start_hooks</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'all'</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">no_default</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">True</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">clean_cmdsets</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.swap_typeclass"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.swap_typeclass"title="Link to this definition">¶</a></dt>
<dd><p>This performs an in-situ swap of the typeclass. This means
that in-game, this object will suddenly be something else.
Account will not be affected. To ‘move’ an account to a different
object entirely (while retaining this object’s type), use
self.account.swap_object().</p>
<p>Note that this might be an error prone operation if the
old/new typeclass was heavily customized - your code
might expect one and not the other, so be careful to
bug test your code if using this feature! Often its easiest
to create a new object and just swap the account over to
<spanclass="sig-name descname"><spanclass="pre">tags</span></span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.tags"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.tags"title="Link to this definition">¶</a></dt>
<emclass="property"><spanclass="k"><spanclass="pre">property</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">typeclass_path</span></span><aclass="headerlink"href="#evennia.comms.models.TypedObject.typeclass_path"title="Link to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_typeclass_path</strong>.</p>
<spanclass="sig-name descname"><spanclass="pre">typename</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'SharedMemoryModelBase'</span></em><aclass="headerlink"href="#evennia.comms.models.TypedObject.typename"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">web_get_admin_url</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.web_get_admin_url"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.web_get_admin_url"title="Link to this definition">¶</a></dt>
<dd><p>Returns the URI path for the Django Admin page for this object.</p>
<emclass="property"><spanclass="k"><spanclass="pre">classmethod</span></span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">web_get_create_url</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.web_get_create_url"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.web_get_create_url"title="Link to this definition">¶</a></dt>
<dd><p>Returns the URI path for a View that allows users to create new
instances of this object.</p>
<p>ex. Chargen = ‘/characters/create/’</p>
<p>For this to work, the developer must have defined a named view somewhere
in urls.py that follows the format ‘modelname-action’, so in this case
a named view of ‘character-create’ would be referenced by this method.</p>
<spanclass="sig-name descname"><spanclass="pre">web_get_delete_url</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.web_get_delete_url"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.web_get_delete_url"title="Link to this definition">¶</a></dt>
<dd><p>Returns the URI path for a View that allows users to delete this object.</p>
<spanclass="sig-name descname"><spanclass="pre">web_get_detail_url</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.web_get_detail_url"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.web_get_detail_url"title="Link to this definition">¶</a></dt>
<dd><p>Returns the URI path for a View that allows users to view details for
<spanclass="sig-name descname"><spanclass="pre">web_get_puppet_url</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.web_get_puppet_url"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.web_get_puppet_url"title="Link to this definition">¶</a></dt>
<dd><p>Returns the URI path for a View that allows users to puppet a specific
<spanclass="sig-name descname"><spanclass="pre">web_get_update_url</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/typeclasses/models.html#TypedObject.web_get_update_url"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.TypedObject.web_get_update_url"title="Link to this definition">¶</a></dt>
<dd><p>Returns the URI path for a View that allows users to update this
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">crop</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">width</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">suffix</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'[...]'</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#crop"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.crop"title="Link to this definition">¶</a></dt>
<dd><p>Crop text to a certain width, throwing away text from too-long
<emclass="property"><spanclass="k"><spanclass="pre">class</span></span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">lazy_property</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">func</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">...</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">TProp</span><spanclass="p"><spanclass="pre">]</span></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">name</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">doc</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#lazy_property"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.lazy_property"title="Link to this definition">¶</a></dt>
<spanclass="sig-name descname"><spanclass="pre">__init__</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">func</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">Callable</span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">[</span></span><spanclass="p"><spanclass="pre">...</span></span><spanclass="p"><spanclass="pre">]</span></span><spanclass="p"><spanclass="pre">,</span></span><spanclass="w"></span><spanclass="pre">TProp</span><spanclass="p"><spanclass="pre">]</span></span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">name</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">doc</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#lazy_property.__init__"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.lazy_property.__init__"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">evennia.comms.models.</span></span><spanclass="sig-name descname"><spanclass="pre">make_iter</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">obj</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/utils/utils.html#make_iter"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#evennia.comms.models.make_iter"title="Link to this definition">¶</a></dt>
<dd><p>Makes sure that the object is always iterable.</p>