evennia/docs/2.x/api/evennia.locks.lockfuncs.html
2023-12-20 18:20:52 +01:00

515 lines
No EOL
39 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.locks.lockfuncs &#8212; Evennia 2.x documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.locks.lockhandler" href="evennia.locks.lockhandler.html" />
<link rel="prev" title="evennia.locks" href="evennia.locks.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.locks.lockhandler.html" title="evennia.locks.lockhandler"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.locks.html" title="evennia.locks"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.locks.html" accesskey="U">evennia.locks</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.locks.lockfuncs</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.locks.html"
title="previous chapter">evennia.locks</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.locks.lockhandler.html"
title="next chapter">evennia.locks.lockhandler</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.locks.lockfuncs.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.locks.lockfuncs">
<span id="evennia-locks-lockfuncs"></span><h1>evennia.locks.lockfuncs<a class="headerlink" href="#module-evennia.locks.lockfuncs" title="Permalink to this headline"></a></h1>
<p>This module provides a set of permission lock functions for use
with Evennias permissions system.</p>
<p>To call these locks, make sure this module is included in the
settings tuple <strong>PERMISSION_FUNC_MODULES</strong> then define a lock on the form
&lt;access_type&gt;:func(args) and add it to the objects lockhandler.
Run the <strong>access()</strong> method of the handler to execute the lock check.</p>
<p>Note that <strong>accessing_obj</strong> and <strong>accessed_obj</strong> can be any object type
with a lock variable/field, so be careful to not expect
a certain object type.</p>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.true">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">true</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#true"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.true" title="Permalink to this definition"></a></dt>
<dd><p>Always returns True.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.all">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">all</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.all" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.false">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">false</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#false"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.false" title="Permalink to this definition"></a></dt>
<dd><p>Always returns False</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.none">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">none</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#none"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.none" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.superuser">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">superuser</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#superuser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.superuser" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.self">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">self</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#self"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.self" title="Permalink to this definition"></a></dt>
<dd><p>Check if accessing_obj is the same as accessed_obj</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>self()</p>
</dd>
</dl>
<p>This can be used to lock specifically only to
the same object that the lock is defined on.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.perm">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">perm</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#perm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.perm" title="Permalink to this definition"></a></dt>
<dd><p>The basic permission-checker. Ignores case.</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>perm(&lt;permission&gt;)</p>
</dd>
</dl>
<p>where &lt;permission&gt; is the permission accessing_obj must
have in order to pass the lock.</p>
<p>If the given permission is part of settings.PERMISSION_HIERARCHY,
permission is also granted to all ranks higher up in the hierarchy.</p>
<p>If accessing_object is an Object controlled by an Account, the
permissions of the Account is used unless the Attribute _quell
is set to True on the Object. In this case however, the
LOWEST hieararcy-permission of the Account/Object-pair will be used
(this is order to avoid Accounts potentially escalating their own permissions
by use of a higher-level Object)</p>
<p>For non-hierarchical permissions, a puppeted objects account is checked first,
followed by the puppet (unless quelled, when only puppets access is checked).</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.perm_above">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">perm_above</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#perm_above"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.perm_above" title="Permalink to this definition"></a></dt>
<dd><p>Only allow objects with a permission <em>higher</em> in the permission
hierarchy than the one given. If there is no such higher rank,
its assumed we refer to superuser. If no hierarchy is defined,
this function has no meaning and returns False.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.pperm">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">pperm</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#pperm"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.pperm" title="Permalink to this definition"></a></dt>
<dd><p>The basic permission-checker only for Account objects. Ignores case.</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>pperm(&lt;permission&gt;)</p>
</dd>
</dl>
<p>where &lt;permission&gt; is the permission accessing_obj must
have in order to pass the lock. If the given permission
is part of _PERMISSION_HIERARCHY, permission is also granted
to all ranks higher up in the hierarchy.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.pperm_above">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">pperm_above</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#pperm_above"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.pperm_above" title="Permalink to this definition"></a></dt>
<dd><p>Only allow Account objects with a permission <em>higher</em> in the permission
hierarchy than the one given. If there is no such higher rank,
its assumed we refer to superuser. If no hierarchy is defined,
this function has no meaning and returns False.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.dbref">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">dbref</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#dbref"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.dbref" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>dbref(3)</p>
</dd>
</dl>
<p>This lock type checks if the checking object
has a particular dbref. Note that this only
works for checking objects that are stored
in the database (e.g. not for commands)</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.pdbref">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">pdbref</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#pdbref"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.pdbref" title="Permalink to this definition"></a></dt>
<dd><p>Same as dbref, but making sure accessing_obj is an account.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.id">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">id</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.id" title="Permalink to this definition"></a></dt>
<dd><p>Alias to dbref</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.pid">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">pid</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#pid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.pid" title="Permalink to this definition"></a></dt>
<dd><p>Alias to dbref, for Accounts</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.attr">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">attr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#attr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.attr" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>attr(attrname)
attr(attrname, value)
attr(attrname, value, compare=type)</p>
</dd>
</dl>
<p>where compares type is one of (eq,gt,lt,ge,le,ne) and signifies
how the value should be compared with one on accessing_obj (so
compare=gt means the accessing_obj must have a value greater than
the one given).</p>
<p>Searches attributes <em>and</em> properties stored on the accessing_obj.
if accessing_obj has a property “obj”, then this is used as
accessing_obj (this makes this usable for Commands too)</p>
<p>The first form works like a flag - if the attribute/property
exists on the object, the value is checked for True/False. The
second form also requires that the value of the attribute/property
matches. Note that all retrieved values will be converted to
strings before doing the comparison.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.objattr">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">objattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#objattr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.objattr" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>objattr(attrname)
objattr(attrname, value)
objattr(attrname, value, compare=type)</p>
</dd>
</dl>
<p>Works like attr, except it looks for an attribute on
accessed_obj instead.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.locattr">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">locattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#locattr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.locattr" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>locattr(attrname)
locattr(attrname, value)
locattr(attrname, value, compare=type)</p>
</dd>
</dl>
<p>Works like attr, except it looks for an attribute on
accessing_obj.location, if such an entity exists.</p>
<p>if accessing_obj has a property “.obj” (such as is the case for a
Command), then accessing_obj.obj.location is used instead.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.objlocattr">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">objlocattr</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#objlocattr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.objlocattr" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>locattr(attrname)
locattr(attrname, value)
locattr(attrname, value, compare=type)</p>
</dd>
</dl>
<p>Works like attr, except it looks for an attribute on
accessed_obj.location, if such an entity exists.</p>
<p>if accessed_obj has a property “.obj” (such as is the case for a
Command), then accessing_obj.obj.location is used instead.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.attr_eq">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">attr_eq</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#attr_eq"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.attr_eq" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>attr_gt(attrname, 54)</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.attr_gt">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">attr_gt</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#attr_gt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.attr_gt" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>attr_gt(attrname, 54)</p>
</dd>
</dl>
<p>Only true if access_objs attribute &gt; the value given.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.attr_ge">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">attr_ge</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#attr_ge"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.attr_ge" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>attr_gt(attrname, 54)</p>
</dd>
</dl>
<p>Only true if access_objs attribute &gt;= the value given.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.attr_lt">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">attr_lt</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#attr_lt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.attr_lt" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>attr_gt(attrname, 54)</p>
</dd>
</dl>
<p>Only true if access_objs attribute &lt; the value given.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.attr_le">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">attr_le</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#attr_le"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.attr_le" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>attr_gt(attrname, 54)</p>
</dd>
</dl>
<p>Only true if access_objs attribute &lt;= the value given.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.attr_ne">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">attr_ne</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#attr_ne"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.attr_ne" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>attr_gt(attrname, 54)</p>
</dd>
</dl>
<p>Only true if access_objs attribute != the value given.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.tag">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">tag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#tag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.tag" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>tag(tagkey)
tag(tagkey, category)</p>
</dd>
</dl>
<p>Only true if accessing_obj has the specified tag and optional
category.
If accessing_obj has the “.obj” property (such as is the case for
a command), then accessing_obj.obj is used instead.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.objloctag">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">objloctag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#objloctag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.objloctag" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>objloctag(tagkey)
objloctag(tagkey, category):</p>
</dd>
</dl>
<p>Only true if <strong>accessed_obj.location</strong> has the given tag and optional category.
If obj has no location, this lockfunc fails.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.is_ooc">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">is_ooc</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#is_ooc"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.is_ooc" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>is_ooc()</p>
</dd>
</dl>
<p>This is normally used to lock a Command, so it can be used
only when out of character. When not logged in at all, this
function will still return True.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.objtag">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">objtag</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#objtag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.objtag" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>objtag(tagkey)
objtag(tagkey, category)</p>
</dd>
</dl>
<p>Only true if accessed_obj has the specified tag and optional
category.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.inside">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">inside</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#inside"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.inside" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>inside()</p>
</dd>
</dl>
<p>True if accessing_obj is inside accessing_obj. Note that this only checks
one level down. So if if the lock is on a room, you will pass but not your
inventory (since their location is you, not the locked object). If you
want also nested objects to pass the lock, use the <strong>insiderecursive</strong>
lockfunc.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.inside_rec">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">inside_rec</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#inside_rec"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.inside_rec" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><p>inside_rec()</p>
</dd>
</dl>
<p>True if accessing_obj is inside the accessed obj, at up to 10 levels
of recursion (so if this lock is on a room, then an object inside a box
in your inventory will also pass the lock).</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.holds">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">holds</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#holds"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.holds" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Usage:</dt><dd><dl class="simple">
<dt>holds() checks if accessed_obj or accessed_obj.obj</dt><dd><p>is held by accessing_obj</p>
</dd>
<dt>holds(key/dbref) checks if accessing_obj holds an object</dt><dd><p>with given key/dbref</p>
</dd>
<dt>holds(attrname, value) checks if accessing_obj holds an</dt><dd><p>object with the given attrname and value</p>
</dd>
</dl>
</dd>
</dl>
<p>This is passed if accessed_obj is carried by accessing_obj (that is,
accessed_obj.location == accessing_obj), or if accessing_obj itself holds
an object matching the given key.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.has_account">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">has_account</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#has_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.has_account" title="Permalink to this definition"></a></dt>
<dd><p>Only returns true if accessing_obj has_account is true, that is,
this is an account-controlled object. It fails on actual accounts!</p>
<p>This is a useful lock for traverse-locking Exits to restrain NPC
mobiles from moving outside their areas.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.locks.lockfuncs.serversetting">
<code class="sig-prename descclassname">evennia.locks.lockfuncs.</code><code class="sig-name descname">serversetting</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">accessing_obj</span></em>, <em class="sig-param"><span class="n">accessed_obj</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/locks/lockfuncs.html#serversetting"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.locks.lockfuncs.serversetting" title="Permalink to this definition"></a></dt>
<dd><p>Only returns true if the Evennia settings exists, alternatively has
a certain value.</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>serversetting(IRC_ENABLED)
serversetting(BASE_SCRIPT_PATH, [types])</p>
</dd>
</dl>
<p>A given True/False or integers will be converted properly. Note that
everything will enter this function as strings, so they have to be
unpacked to their real value. We only support basic properties.</p>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.locks.lockhandler.html" title="evennia.locks.lockhandler"
>next</a> |</li>
<li class="right" >
<a href="evennia.locks.html" title="evennia.locks"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.locks.html" >evennia.locks</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.locks.lockfuncs</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>