mirror of
https://github.com/evennia/evennia.git
synced 2026-04-02 14:07:16 +02:00
Updated HTML docs.
This commit is contained in:
parent
507c68d1c1
commit
30170ecc64
35 changed files with 1887 additions and 100 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: ab89dffe171c5a8c17ad545e0b0bed4c
|
||||
config: ceb089cecf5213128ab45a61486bd2ef
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
|
|
|||
|
|
@ -246,6 +246,7 @@ a performance hit for loading cmdsets in rooms with a lot of objects (InspectorC
|
|||
<li><p>Fix: When an object was used as an On-Demand Task’s category, and that object was then deleted,
|
||||
it caused an OnDemandHandler save error on reload. Will now clean up on save. (Griatch)
|
||||
used as the task’s category (Griatch)</p></li>
|
||||
<li><p>Fix: Correct aws contrib’s use of legacy django string utils (Griatch)</p></li>
|
||||
<li><p>[Docs]: Fixes from InspectorCaracal, Griatch, ChrisLR</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
|
|
|||
182
docs/latest/_modules/django/utils/deconstruct.html
Normal file
182
docs/latest/_modules/django/utils/deconstruct.html
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>django.utils.deconstruct — Evennia latest 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" />
|
||||
</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="nav-item nav-item-0"><a href="../../../index.html">Evennia latest</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">django.utils.deconstruct</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><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>
|
||||
<h3>Doc Versions</h3>
|
||||
<ul>
|
||||
|
||||
<li><a href="deconstruct.html">latest (main branch)</a></li>
|
||||
|
||||
<li><a href="../4.x/index.html">v4.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../3.x/index.html">v3.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../2.x/index.html">v2.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../1.x/index.html">v1.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../0.x/index.html">v0.9.5 branch (outdated)</a></li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bodywrapper">
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for django.utils.deconstruct</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">importlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">import_module</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.utils.version</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_docs_version</span>
|
||||
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">deconstructible</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Class decorator that allows the decorated class to be serialized</span>
|
||||
<span class="sd"> by the migrations subsystem.</span>
|
||||
|
||||
<span class="sd"> The `path` kwarg specifies the import path.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">decorator</span><span class="p">(</span><span class="n">klass</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="c1"># We capture the arguments to make returning them trivial</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">_constructor_args</span> <span class="o">=</span> <span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">obj</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">deconstruct</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Return a 3-tuple of class import path, positional arguments,</span>
|
||||
<span class="sd"> and keyword arguments.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Fallback version</span>
|
||||
<span class="k">if</span> <span class="n">path</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="ow">is</span> <span class="n">klass</span><span class="p">:</span>
|
||||
<span class="n">module_name</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s2">"."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">module_name</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="vm">__module__</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span>
|
||||
<span class="c1"># Make sure it's actually there and not an inner class</span>
|
||||
<span class="n">module</span> <span class="o">=</span> <span class="n">import_module</span><span class="p">(</span><span class="n">module_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
<span class="s2">"Could not find object </span><span class="si">%s</span><span class="s2"> in </span><span class="si">%s</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"Please note that you cannot serialize things like inner "</span>
|
||||
<span class="s2">"classes. Please move the object into the main module "</span>
|
||||
<span class="s2">"body to use migrations.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"For more information, see "</span>
|
||||
<span class="s2">"https://docs.djangoproject.com/en/</span><span class="si">%s</span><span class="s2">/topics/migrations/"</span>
|
||||
<span class="s2">"#serializing-values"</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">module_name</span><span class="p">,</span> <span class="n">get_docs_version</span><span class="p">())</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">path</span>
|
||||
<span class="k">if</span> <span class="n">path</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="ow">is</span> <span class="n">klass</span>
|
||||
<span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">_constructor_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">_constructor_args</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">klass</span><span class="o">.</span><span class="fm">__new__</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="fm">__new__</span><span class="p">)</span>
|
||||
<span class="n">klass</span><span class="o">.</span><span class="n">deconstruct</span> <span class="o">=</span> <span class="n">deconstruct</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">klass</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">decorator</span>
|
||||
<span class="k">return</span> <span class="n">decorator</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
</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="nav-item nav-item-0"><a href="../../../index.html">Evennia latest</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">django.utils.deconstruct</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2024, The Evennia developer community.
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,988 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>evennia.contrib.base_systems.awsstorage.aws_s3_cdn — Evennia latest 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" />
|
||||
</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="nav-item nav-item-0"><a href="../../../../../index.html">Evennia latest</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-2"><a href="../../../../evennia.html" accesskey="U">evennia</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.awsstorage.aws_s3_cdn</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><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>
|
||||
<h3>Doc Versions</h3>
|
||||
<ul>
|
||||
|
||||
<li><a href="aws_s3_cdn.html">latest (main branch)</a></li>
|
||||
|
||||
<li><a href="../4.x/index.html">v4.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../3.x/index.html">v3.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../2.x/index.html">v2.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../1.x/index.html">v1.0.0 branch (outdated)</a></li>
|
||||
|
||||
<li><a href="../0.x/index.html">v0.9.5 branch (outdated)</a></li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="bodywrapper">
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for evennia.contrib.base_systems.awsstorage.aws_s3_cdn</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">AWS Storage System</span>
|
||||
<span class="sd">The Right Honourable Reverend (trhr) 2020</span>
|
||||
|
||||
<span class="sd">ABOUT THIS PLUGIN:</span>
|
||||
|
||||
<span class="sd">This plugin migrates the Web-based portion of Evennia, namely images,</span>
|
||||
<span class="sd">javascript, and other items located inside staticfiles into Amazon AWS (S3) for hosting.</span>
|
||||
|
||||
<span class="sd">Files hosted on S3 are "in the cloud," and while your personal</span>
|
||||
<span class="sd">server may be sufficient for serving multimedia to a minimal number of users,</span>
|
||||
<span class="sd">the perfect use case for this plugin would be:</span>
|
||||
|
||||
<span class="sd">1) Servers supporting heavy web-based traffic (webclient, etc)</span>
|
||||
<span class="sd">2) With a sizable number of users</span>
|
||||
<span class="sd">3) Where the users are globally distributed</span>
|
||||
<span class="sd">4) Where multimedia files are served to users as a part of gameplay</span>
|
||||
|
||||
<span class="sd">Bottom line - if you're sending an image to a player every time they traverse a</span>
|
||||
<span class="sd">map, the bandwidth reduction will be substantial. If not, probably skip</span>
|
||||
<span class="sd">this one.</span>
|
||||
|
||||
<span class="sd">Note that storing and serving files via S3 is not technically free outside of</span>
|
||||
<span class="sd">Amazon's "free tier" offering, which you may or may not be eligible for;</span>
|
||||
<span class="sd">evennia's base install currently requires 1.5MB of storage space on S3,</span>
|
||||
<span class="sd">making the current total cost to install this plugin ~$0.0005 per year. If</span>
|
||||
<span class="sd">you have substantial media assets and intend to serve them to many users,</span>
|
||||
<span class="sd">caveat emptor on a total cost of ownership - check AWS's pricing structure.</span>
|
||||
|
||||
<span class="sd">See the ./README.md file for details and install instructions.</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.core.exceptions</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">ImproperlyConfigured</span><span class="p">,</span>
|
||||
<span class="n">SuspiciousFileOperation</span><span class="p">,</span>
|
||||
<span class="n">SuspiciousOperation</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.conf</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span> <span class="k">as</span> <span class="n">ev_settings</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="ow">not</span> <span class="n">ev_settings</span><span class="o">.</span><span class="n">AWS_ACCESS_KEY_ID</span>
|
||||
<span class="ow">or</span> <span class="ow">not</span> <span class="n">ev_settings</span><span class="o">.</span><span class="n">AWS_SECRET_ACCESS_KEY</span>
|
||||
<span class="ow">or</span> <span class="ow">not</span> <span class="n">ev_settings</span><span class="o">.</span><span class="n">AWS_STORAGE_BUCKET_NAME</span>
|
||||
<span class="ow">or</span> <span class="ow">not</span> <span class="n">ev_settings</span><span class="o">.</span><span class="n">AWS_S3_REGION_NAME</span>
|
||||
<span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="p">(</span>
|
||||
<span class="s2">"You must add AWS-specific settings"</span>
|
||||
<span class="s2">"to mygame/server/conf/secret_settings.py to use this plugin."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"mygame-evennia"</span> <span class="o">==</span> <span class="n">ev_settings</span><span class="o">.</span><span class="n">AWS_STORAGE_BUCKET_NAME</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="p">(</span>
|
||||
<span class="s2">"You must customize your AWS_STORAGE_BUCKET_NAME"</span>
|
||||
<span class="s2">"in mygame/server/conf/secret_settings.py;"</span>
|
||||
<span class="s2">"it must be unique among ALL other S3 users"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">io</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">mimetypes</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">posixpath</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">threading</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">gzip</span><span class="w"> </span><span class="kn">import</span> <span class="n">GzipFile</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tempfile</span><span class="w"> </span><span class="kn">import</span> <span class="n">SpooledTemporaryFile</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.core.files.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">File</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.core.files.storage</span><span class="w"> </span><span class="kn">import</span> <span class="n">Storage</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.utils.deconstruct</span><span class="w"> </span><span class="kn">import</span> <span class="n">deconstructible</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.utils.encoding</span><span class="w"> </span><span class="kn">import</span> <span class="n">filepath_to_uri</span><span class="p">,</span> <span class="n">force_bytes</span><span class="p">,</span> <span class="n">force_str</span><span class="p">,</span> <span class="n">smart_str</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.utils.timezone</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_naive</span><span class="p">,</span> <span class="n">make_naive</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">django.utils.six.moves.urllib</span><span class="w"> </span><span class="kn">import</span> <span class="n">parse</span> <span class="k">as</span> <span class="n">urlparse</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">urllib</span><span class="w"> </span><span class="kn">import</span> <span class="n">parse</span> <span class="k">as</span> <span class="n">urlparse</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">boto3.session</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">boto3</span><span class="w"> </span><span class="kn">import</span> <span class="n">__version__</span> <span class="k">as</span> <span class="n">boto3_version</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">botocore.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">Config</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">botocore.exceptions</span><span class="w"> </span><span class="kn">import</span> <span class="n">ClientError</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span><span class="s2">"Couldn't load S3 bindings. </span><span class="si">%s</span><span class="s2"> Did you run 'pip install boto3?'"</span> <span class="o">%</span> <span class="n">e</span><span class="p">)</span>
|
||||
|
||||
<span class="n">boto3_version_info</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">([</span><span class="nb">int</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">boto3_version</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)])</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="setting"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.setting">[docs]</a><span class="k">def</span><span class="w"> </span><span class="nf">setting</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Helper function to get a Django setting by name. If setting doesn't exist</span>
|
||||
<span class="sd"> it will return a default.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> name (str): A Django setting name</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> The value of the setting variable by that name</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">ev_settings</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="safe_join"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.safe_join">[docs]</a><span class="k">def</span><span class="w"> </span><span class="nf">safe_join</span><span class="p">(</span><span class="n">base</span><span class="p">,</span> <span class="o">*</span><span class="n">paths</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Helper function, a version of django.utils._os.safe_join for S3 paths.</span>
|
||||
<span class="sd"> Joins one or more path components to the base path component</span>
|
||||
<span class="sd"> intelligently. Returns a normalized version of the final path.</span>
|
||||
<span class="sd"> The final path must be located inside of the base path component</span>
|
||||
<span class="sd"> (otherwise a ValueError is raised). Paths outside the base path</span>
|
||||
<span class="sd"> indicate a possible security sensitive operation.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> base (str): A path string to the base of the staticfiles</span>
|
||||
<span class="sd"> *paths (list): A list of paths as referenced from the base path</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> final_path (str): A joined path, base + filepath</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">base_path</span> <span class="o">=</span> <span class="n">force_str</span><span class="p">(</span><span class="n">base</span><span class="p">)</span>
|
||||
<span class="n">base_path</span> <span class="o">=</span> <span class="n">base_path</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="n">paths</span> <span class="o">=</span> <span class="p">[</span><span class="n">force_str</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">paths</span><span class="p">]</span>
|
||||
|
||||
<span class="n">final_path</span> <span class="o">=</span> <span class="n">base_path</span> <span class="o">+</span> <span class="s2">"/"</span>
|
||||
<span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">paths</span><span class="p">:</span>
|
||||
<span class="n">_final_path</span> <span class="o">=</span> <span class="n">posixpath</span><span class="o">.</span><span class="n">normpath</span><span class="p">(</span><span class="n">posixpath</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">final_path</span><span class="p">,</span> <span class="n">path</span><span class="p">))</span>
|
||||
<span class="c1"># posixpath.normpath() strips the trailing /. Add it back.</span>
|
||||
<span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">_final_path</span> <span class="o">+</span> <span class="s2">"/"</span> <span class="o">==</span> <span class="n">final_path</span><span class="p">:</span>
|
||||
<span class="n">_final_path</span> <span class="o">+=</span> <span class="s2">"/"</span>
|
||||
<span class="n">final_path</span> <span class="o">=</span> <span class="n">_final_path</span>
|
||||
<span class="k">if</span> <span class="n">final_path</span> <span class="o">==</span> <span class="n">base_path</span><span class="p">:</span>
|
||||
<span class="n">final_path</span> <span class="o">+=</span> <span class="s2">"/"</span>
|
||||
|
||||
<span class="c1"># Ensure final_path starts with base_path and that the next character after</span>
|
||||
<span class="c1"># the base path is /.</span>
|
||||
<span class="n">base_path_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">base_path</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">final_path</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">base_path</span><span class="p">)</span> <span class="ow">or</span> <span class="n">final_path</span><span class="p">[</span><span class="n">base_path_len</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"/"</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"the joined path is located outside of the base path"</span> <span class="s2">" component"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">final_path</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="check_location"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.check_location">[docs]</a><span class="k">def</span><span class="w"> </span><span class="nf">check_location</span><span class="p">(</span><span class="n">storage</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Helper function to make sure that the storage location is configured correctly.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> storage (Storage): A Storage object (Django)</span>
|
||||
|
||||
<span class="sd"> Raises:</span>
|
||||
<span class="sd"> ImproperlyConfigured: If the storage location is not configured correctly,</span>
|
||||
<span class="sd"> this is raised.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">storage</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"/"</span><span class="p">):</span>
|
||||
<span class="n">correct</span> <span class="o">=</span> <span class="n">storage</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">{}</span><span class="s2">.location cannot begin with a leading slash. Found '</span><span class="si">{}</span><span class="s2">'. Use '</span><span class="si">{}</span><span class="s2">' instead."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">storage</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span>
|
||||
<span class="n">storage</span><span class="o">.</span><span class="n">location</span><span class="p">,</span>
|
||||
<span class="n">correct</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="lookup_env"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.lookup_env">[docs]</a><span class="k">def</span><span class="w"> </span><span class="nf">lookup_env</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Helper function for looking up names in env vars. Returns the first element found.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> names (str): A list of environment variables</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> value (str): The value of the found environment variable.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">value</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="get_available_overwrite_name"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.get_available_overwrite_name">[docs]</a><span class="k">def</span><span class="w"> </span><span class="nf">get_available_overwrite_name</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">max_length</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Helper function indicating files that will be overwritten during trunc.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> name (str): The name of the file</span>
|
||||
<span class="sd"> max_length (int): The maximum length of a filename</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> joined (path): A joined path including directory, file, and extension</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">max_length</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="o"><=</span> <span class="n">max_length</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">name</span>
|
||||
|
||||
<span class="c1"># Adapted from Django</span>
|
||||
<span class="n">dir_name</span><span class="p">,</span> <span class="n">file_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">file_root</span><span class="p">,</span> <span class="n">file_ext</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span>
|
||||
<span class="n">truncation</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="o">-</span> <span class="n">max_length</span>
|
||||
|
||||
<span class="n">file_root</span> <span class="o">=</span> <span class="n">file_root</span><span class="p">[:</span><span class="o">-</span><span class="n">truncation</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">file_root</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">SuspiciousFileOperation</span><span class="p">(</span>
|
||||
<span class="s1">'aws-s3-cdn tried to truncate away entire filename "</span><span class="si">%s</span><span class="s1">". '</span>
|
||||
<span class="s2">"Please make sure that the corresponding file field "</span>
|
||||
<span class="s1">'allows sufficient "max_length".'</span> <span class="o">%</span> <span class="n">name</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">dir_name</span><span class="p">,</span> <span class="s2">"</span><span class="si">{}{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">file_root</span><span class="p">,</span> <span class="n">file_ext</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageFile"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile">[docs]</a><span class="nd">@deconstructible</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">S3Boto3StorageFile</span><span class="p">(</span><span class="n">File</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> The default file object used by the S3Boto3Storage backend.</span>
|
||||
<span class="sd"> This file implements file streaming using boto's multipart</span>
|
||||
<span class="sd"> uploading functionality. The file can be opened in read or</span>
|
||||
<span class="sd"> write mode.</span>
|
||||
<span class="sd"> This class extends Django's File class. However, the contained</span>
|
||||
<span class="sd"> data is only the data contained in the current buffer. So you</span>
|
||||
<span class="sd"> should not access the contained file object directly. You should</span>
|
||||
<span class="sd"> access the data via this class.</span>
|
||||
<span class="sd"> Warning: This file *must* be closed using the close() method in</span>
|
||||
<span class="sd"> order to properly write the file to S3. Be sure to close the file</span>
|
||||
<span class="sd"> in your application.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">buffer_size</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_FILE_BUFFER_SIZE"</span><span class="p">,</span> <span class="mi">5242880</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageFile.__init__"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.__init__">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">storage</span><span class="p">,</span> <span class="n">buffer_size</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Initializes the File object.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> name (str): The name of the file</span>
|
||||
<span class="sd"> mode (str): The access mode ('r' or 'w')</span>
|
||||
<span class="sd"> storage (Storage): The Django Storage object</span>
|
||||
<span class="sd"> buffer_size (int): The buffer size, for multipart uploads</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s2">"r"</span> <span class="ow">in</span> <span class="n">mode</span> <span class="ow">and</span> <span class="s2">"w"</span> <span class="ow">in</span> <span class="n">mode</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't combine 'r' and 'w' in mode."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_storage</span> <span class="o">=</span> <span class="n">storage</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_storage</span><span class="o">.</span><span class="n">location</span><span class="p">)</span> <span class="p">:]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_mode</span> <span class="o">=</span> <span class="n">mode</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_force_mode</span> <span class="o">=</span> <span class="p">(</span><span class="k">lambda</span> <span class="n">b</span><span class="p">:</span> <span class="n">b</span><span class="p">)</span> <span class="k">if</span> <span class="s2">"b"</span> <span class="ow">in</span> <span class="n">mode</span> <span class="k">else</span> <span class="n">force_str</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="o">=</span> <span class="n">storage</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="p">(</span><span class="n">storage</span><span class="o">.</span><span class="n">_encode_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="s2">"w"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mode</span><span class="p">:</span>
|
||||
<span class="c1"># Force early RAII-style exception if object does not exist</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_is_dirty</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_raw_bytes_written</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="c1"># 5 MB is the minimum part size (if there is more than one part).</span>
|
||||
<span class="c1"># Amazon allows up to 10,000 parts. The default supports uploads</span>
|
||||
<span class="c1"># up to roughly 50 GB. Increase the part size to accommodate</span>
|
||||
<span class="c1"># for files larger than this.</span>
|
||||
<span class="k">if</span> <span class="n">buffer_size</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">buffer_size</span> <span class="o">=</span> <span class="n">buffer_size</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_write_counter</span> <span class="o">=</span> <span class="mi">0</span></div>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Helper property to return filesize</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">content_length</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_get_file</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Helper function to manage zipping and temporary files</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="o">=</span> <span class="n">SpooledTemporaryFile</span><span class="p">(</span>
|
||||
<span class="n">max_size</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_storage</span><span class="o">.</span><span class="n">max_memory_size</span><span class="p">,</span>
|
||||
<span class="n">suffix</span><span class="o">=</span><span class="s2">".S3Boto3StorageFile"</span><span class="p">,</span>
|
||||
<span class="nb">dir</span><span class="o">=</span><span class="n">setting</span><span class="p">(</span><span class="s2">"FILE_UPLOAD_TEMP_DIR"</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s2">"r"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mode</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_is_dirty</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">download_fileobj</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_file</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_file</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_storage</span><span class="o">.</span><span class="n">gzip</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">content_encoding</span> <span class="o">==</span> <span class="s2">"gzip"</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="o">=</span> <span class="n">GzipFile</span><span class="p">(</span><span class="n">mode</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_mode</span><span class="p">,</span> <span class="n">fileobj</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_file</span><span class="p">,</span> <span class="n">mtime</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_file</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_set_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="o">=</span> <span class="n">value</span>
|
||||
|
||||
<span class="n">file</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_file</span><span class="p">,</span> <span class="n">_set_file</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageFile.read"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.read">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Checks if file is in read mode; then continues to boto3 operation</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s2">"r"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mode</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">"File was not opened in read mode."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_force_mode</span><span class="p">(</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageFile.readline"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.readline">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">readline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Checks if file is in read mode; then continues to boto3 operation</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s2">"r"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mode</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">"File was not opened in read mode."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_force_mode</span><span class="p">(</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">readline</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageFile.write"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.write">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">content</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Checks if file is in write mode or needs multipart handling,</span>
|
||||
<span class="sd"> then continues to boto3 operation.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s2">"w"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mode</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">"File was not opened in write mode."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_is_dirty</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">initiate_multipart_upload</span><span class="p">(</span>
|
||||
<span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">_storage</span><span class="o">.</span><span class="n">_get_write_parameters</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">buffer_size</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer_file_size</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_flush_write_buffer</span><span class="p">()</span>
|
||||
<span class="n">bstr</span> <span class="o">=</span> <span class="n">force_bytes</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_raw_bytes_written</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">bstr</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">bstr</span><span class="p">)</span></div>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_buffer_file_size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">pos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_END</span><span class="p">)</span>
|
||||
<span class="n">length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">length</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_flush_write_buffer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Flushes the write buffer.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer_file_size</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_write_counter</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span><span class="o">.</span><span class="n">Part</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_write_counter</span><span class="p">)</span>
|
||||
<span class="n">part</span><span class="o">.</span><span class="n">upload</span><span class="p">(</span><span class="n">Body</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">truncate</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_create_empty_on_close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Attempt to create an empty file for this key when this File is closed if no bytes</span>
|
||||
<span class="sd"> have been written and no object already exists on S3 for this key.</span>
|
||||
<span class="sd"> This behavior is meant to mimic the behavior of Django's builtin FileSystemStorage,</span>
|
||||
<span class="sd"> where files are always created after they are opened in write mode:</span>
|
||||
<span class="sd"> f = storage.open("file.txt", mode="w")</span>
|
||||
<span class="sd"> f.close()</span>
|
||||
|
||||
<span class="sd"> Raises:</span>
|
||||
<span class="sd"> Exception: Raised if a 404 error occurs</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">assert</span> <span class="s2">"w"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mode</span>
|
||||
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">_raw_bytes_written</span> <span class="o">==</span> <span class="mi">0</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c1"># Check if the object exists on the server; if so, don't do anything</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="n">ClientError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">err</span><span class="o">.</span><span class="n">response</span><span class="p">[</span><span class="s2">"ResponseMetadata"</span><span class="p">][</span><span class="s2">"HTTPStatusCode"</span><span class="p">]</span> <span class="o">==</span> <span class="mi">404</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="n">Body</span><span class="o">=</span><span class="sa">b</span><span class="s2">""</span><span class="p">,</span> <span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">_storage</span><span class="o">.</span><span class="n">_get_write_parameters</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageFile.close"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.close">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Manages file closing after multipart uploads</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_dirty</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_flush_write_buffer</span><span class="p">()</span>
|
||||
<span class="n">parts</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"ETag"</span><span class="p">:</span> <span class="n">part</span><span class="o">.</span><span class="n">e_tag</span><span class="p">,</span> <span class="s2">"PartNumber"</span><span class="p">:</span> <span class="n">part</span><span class="o">.</span><span class="n">part_number</span><span class="p">}</span>
|
||||
<span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span><span class="o">.</span><span class="n">parts</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span><span class="o">.</span><span class="n">complete</span><span class="p">(</span><span class="n">MultipartUpload</span><span class="o">=</span><span class="p">{</span><span class="s2">"Parts"</span><span class="p">:</span> <span class="n">parts</span><span class="p">})</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_multipart</span><span class="o">.</span><span class="n">abort</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="s2">"w"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mode</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_raw_bytes_written</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_create_empty_on_close</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="o">=</span> <span class="kc">None</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage">[docs]</a><span class="nd">@deconstructible</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">S3Boto3Storage</span><span class="p">(</span><span class="n">Storage</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Amazon Simple Storage Service using Boto3</span>
|
||||
<span class="sd"> This storage backend supports opening files in read or write</span>
|
||||
<span class="sd"> mode and supports streaming(buffering) data in chunks to S3</span>
|
||||
<span class="sd"> when writing.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">default_content_type</span> <span class="o">=</span> <span class="s2">"application/octet-stream"</span>
|
||||
<span class="c1"># If config provided in init, signature_version and addressing_style settings/args are ignored.</span>
|
||||
<span class="n">config</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="c1"># used for looking up the access and secret key from env vars</span>
|
||||
<span class="n">access_key_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"AWS_S3_ACCESS_KEY_ID"</span><span class="p">,</span> <span class="s2">"AWS_ACCESS_KEY_ID"</span><span class="p">]</span>
|
||||
<span class="n">secret_key_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"AWS_S3_SECRET_ACCESS_KEY"</span><span class="p">,</span> <span class="s2">"AWS_SECRET_ACCESS_KEY"</span><span class="p">]</span>
|
||||
<span class="n">security_token_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"AWS_SESSION_TOKEN"</span><span class="p">,</span> <span class="s2">"AWS_SECURITY_TOKEN"</span><span class="p">]</span>
|
||||
<span class="n">security_token</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="n">access_key</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_ACCESS_KEY_ID"</span><span class="p">,</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_ACCESS_KEY_ID"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="n">secret_key</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_SECRET_ACCESS_KEY"</span><span class="p">,</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_SECRET_ACCESS_KEY"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="n">file_overwrite</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_FILE_OVERWRITE"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">object_parameters</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_OBJECT_PARAMETERS"</span><span class="p">,</span> <span class="p">{})</span>
|
||||
<span class="n">bucket_name</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_STORAGE_BUCKET_NAME"</span><span class="p">)</span>
|
||||
<span class="n">auto_create_bucket</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_AUTO_CREATE_BUCKET"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">default_acl</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_DEFAULT_ACL"</span><span class="p">,</span> <span class="s2">"public-read"</span><span class="p">)</span>
|
||||
<span class="n">bucket_acl</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_BUCKET_ACL"</span><span class="p">,</span> <span class="n">default_acl</span><span class="p">)</span>
|
||||
<span class="n">querystring_auth</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_QUERYSTRING_AUTH"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">querystring_expire</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_QUERYSTRING_EXPIRE"</span><span class="p">,</span> <span class="mi">3600</span><span class="p">)</span>
|
||||
<span class="n">signature_version</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_SIGNATURE_VERSION"</span><span class="p">)</span>
|
||||
<span class="n">reduced_redundancy</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_REDUCED_REDUNDANCY"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">location</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_LOCATION"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">encryption</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_ENCRYPTION"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">custom_domain</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_CUSTOM_DOMAIN"</span><span class="p">)</span>
|
||||
<span class="n">addressing_style</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_ADDRESSING_STYLE"</span><span class="p">)</span>
|
||||
<span class="n">secure_urls</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_SECURE_URLS"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">file_name_charset</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_FILE_NAME_CHARSET"</span><span class="p">,</span> <span class="s2">"utf-8"</span><span class="p">)</span>
|
||||
<span class="n">gzip</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_IS_GZIPPED"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">preload_metadata</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_PRELOAD_METADATA"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">gzip_content_types</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span>
|
||||
<span class="s2">"GZIP_CONTENT_TYPES"</span><span class="p">,</span>
|
||||
<span class="p">(</span>
|
||||
<span class="s2">"text/css"</span><span class="p">,</span>
|
||||
<span class="s2">"text/javascript"</span><span class="p">,</span>
|
||||
<span class="s2">"application/javascript"</span><span class="p">,</span>
|
||||
<span class="s2">"application/x-javascript"</span><span class="p">,</span>
|
||||
<span class="s2">"image/svg+xml"</span><span class="p">,</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">url_protocol</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_URL_PROTOCOL"</span><span class="p">,</span> <span class="s2">"http:"</span><span class="p">)</span>
|
||||
<span class="n">endpoint_url</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_ENDPOINT_URL"</span><span class="p">)</span>
|
||||
<span class="n">proxies</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_PROXIES"</span><span class="p">)</span>
|
||||
<span class="n">region_name</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_REGION_NAME"</span><span class="p">)</span>
|
||||
<span class="n">use_ssl</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_USE_SSL"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">verify</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_VERIFY"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">max_memory_size</span> <span class="o">=</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"AWS_S3_MAX_MEMORY_SIZE"</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.__init__"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.__init__">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">acl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">bucket</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">settings</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Check if some of the settings we've provided as class attributes</span>
|
||||
<span class="sd"> need to be overwritten with values passed in here.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">settings</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="n">check_location</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Backward-compatibility: given the anteriority of the SECURE_URL setting</span>
|
||||
<span class="c1"># we fall back to https if specified in order to avoid the construction</span>
|
||||
<span class="c1"># of unsecure urls.</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">secure_urls</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">url_protocol</span> <span class="o">=</span> <span class="s2">"https:"</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_entries</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_bucket</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connections</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">local</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">access_key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">secret_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_access_keys</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">security_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_security_token</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">s3</span><span class="o">=</span><span class="p">{</span><span class="s2">"addressing_style"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">addressing_style</span><span class="p">},</span>
|
||||
<span class="n">signature_version</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">signature_version</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">boto3_version_info</span> <span class="o">>=</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"proxies"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">proxies</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">Config</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">__getstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">state</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
<span class="n">state</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"_connections"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">state</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"_bucket"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">state</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
|
||||
<span class="n">state</span><span class="p">[</span><span class="s2">"_connections"</span><span class="p">]</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">local</span><span class="p">()</span>
|
||||
<span class="n">state</span><span class="p">[</span><span class="s2">"_bucket"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span> <span class="o">=</span> <span class="n">state</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">connection</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Creates the actual connection to S3</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">connection</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_connections</span><span class="p">,</span> <span class="s2">"connection"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">connection</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="n">boto3</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_connections</span><span class="o">.</span><span class="n">connection</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">resource</span><span class="p">(</span>
|
||||
<span class="s2">"s3"</span><span class="p">,</span>
|
||||
<span class="n">aws_access_key_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">access_key</span><span class="p">,</span>
|
||||
<span class="n">aws_secret_access_key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">secret_key</span><span class="p">,</span>
|
||||
<span class="n">aws_session_token</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">security_token</span><span class="p">,</span>
|
||||
<span class="n">region_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">region_name</span><span class="p">,</span>
|
||||
<span class="n">use_ssl</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">use_ssl</span><span class="p">,</span>
|
||||
<span class="n">endpoint_url</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">endpoint_url</span><span class="p">,</span>
|
||||
<span class="n">config</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
|
||||
<span class="n">verify</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">verify</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_connections</span><span class="o">.</span><span class="n">connection</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">bucket</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Get the current bucket. If there is no current bucket object</span>
|
||||
<span class="sd"> create it.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bucket</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_bucket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_or_create_bucket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bucket_name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bucket</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">entries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Get the locally cached files for the bucket.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">preload_metadata</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_entries</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_entries</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_decode_name</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">key</span><span class="p">):</span> <span class="n">entry</span>
|
||||
<span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">Prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_entries</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_get_access_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Gets the access keys to use when accessing S3. If none is</span>
|
||||
<span class="sd"> provided in the settings then get them from the environment</span>
|
||||
<span class="sd"> variables.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">access_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">access_key</span> <span class="ow">or</span> <span class="n">lookup_env</span><span class="p">(</span><span class="n">S3Boto3Storage</span><span class="o">.</span><span class="n">access_key_names</span><span class="p">)</span>
|
||||
<span class="n">secret_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">secret_key</span> <span class="ow">or</span> <span class="n">lookup_env</span><span class="p">(</span><span class="n">S3Boto3Storage</span><span class="o">.</span><span class="n">secret_key_names</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">access_key</span><span class="p">,</span> <span class="n">secret_key</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_get_security_token</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Gets the security token to use when accessing S3. Get it from</span>
|
||||
<span class="sd"> the environment variables.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">security_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">security_token</span> <span class="ow">or</span> <span class="n">lookup_env</span><span class="p">(</span><span class="n">S3Boto3Storage</span><span class="o">.</span><span class="n">security_token_names</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">security_token</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_get_or_create_bucket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Retrieves a bucket if it exists, otherwise creates it.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">bucket</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">Bucket</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">auto_create_bucket</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c1"># Directly call head_bucket instead of bucket.load() because head_bucket()</span>
|
||||
<span class="c1"># fails on wrong region, while bucket.load() does not.</span>
|
||||
<span class="n">bucket</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">head_bucket</span><span class="p">(</span><span class="n">Bucket</span><span class="o">=</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">ClientError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">err</span><span class="o">.</span><span class="n">response</span><span class="p">[</span><span class="s2">"ResponseMetadata"</span><span class="p">][</span><span class="s2">"HTTPStatusCode"</span><span class="p">]</span> <span class="o">==</span> <span class="mi">301</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span>
|
||||
<span class="s2">"Bucket </span><span class="si">%s</span><span class="s2"> exists, but in a different "</span>
|
||||
<span class="s2">"region than we are connecting to. Set "</span>
|
||||
<span class="s2">"the region to connect to by setting "</span>
|
||||
<span class="s2">"AWS_S3_REGION_NAME to the correct region."</span> <span class="o">%</span> <span class="n">name</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">elif</span> <span class="n">err</span><span class="o">.</span><span class="n">response</span><span class="p">[</span><span class="s2">"ResponseMetadata"</span><span class="p">][</span><span class="s2">"HTTPStatusCode"</span><span class="p">]</span> <span class="o">==</span> <span class="mi">404</span><span class="p">:</span>
|
||||
<span class="c1"># Notes: When using the us-east-1 Standard endpoint, you can create</span>
|
||||
<span class="c1"># buckets in other regions. The same is not true when hitting region specific</span>
|
||||
<span class="c1"># endpoints. However, when you create the bucket not in the same region, the</span>
|
||||
<span class="c1"># connection will fail all future requests to the Bucket after the creation</span>
|
||||
<span class="c1"># (301 Moved Permanently).</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># For simplicity, we enforce in S3Boto3Storage that any auto-created</span>
|
||||
<span class="c1"># bucket must match the region that the connection is for.</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Also note that Amazon specifically disallows "us-east-1" when passing bucket</span>
|
||||
<span class="c1"># region names; LocationConstraint *must* be blank to create in US Standard.</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket_acl</span><span class="p">:</span>
|
||||
<span class="n">bucket_params</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ACL"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket_acl</span><span class="p">}</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">bucket_params</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">region_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">region_name</span>
|
||||
<span class="k">if</span> <span class="n">region_name</span> <span class="o">!=</span> <span class="s2">"us-east-1"</span><span class="p">:</span>
|
||||
<span class="n">bucket_params</span><span class="p">[</span><span class="s2">"CreateBucketConfiguration"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"LocationConstraint"</span><span class="p">:</span> <span class="n">region_name</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">bucket</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="o">**</span><span class="n">bucket_params</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">return</span> <span class="n">bucket</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_clean_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Cleans the name so that Windows style paths work</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Normalize Windows style paths</span>
|
||||
<span class="n">clean_name</span> <span class="o">=</span> <span class="n">posixpath</span><span class="o">.</span><span class="n">normpath</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># os.path.normpath() can strip trailing slashes so we implement</span>
|
||||
<span class="c1"># a workaround here.</span>
|
||||
<span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"/"</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">clean_name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"/"</span><span class="p">):</span>
|
||||
<span class="c1"># Add a trailing slash as it was stripped.</span>
|
||||
<span class="n">clean_name</span> <span class="o">+=</span> <span class="s2">"/"</span>
|
||||
<span class="k">return</span> <span class="n">clean_name</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Normalizes the name so that paths like /path/to/ignored/../something.txt</span>
|
||||
<span class="sd"> work. We check to make sure that the path pointed to is not outside</span>
|
||||
<span class="sd"> the directory specified by the LOCATION setting.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">safe_join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">SuspiciousOperation</span><span class="p">(</span><span class="s2">"Attempted access to '</span><span class="si">%s</span><span class="s2">' denied."</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_encode_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">smart_str</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name_charset</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_decode_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">force_str</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name_charset</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_compress_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">content</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Gzip a given string content."""</span>
|
||||
<span class="n">content</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">zbuf</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">BytesIO</span><span class="p">()</span>
|
||||
<span class="c1"># The GZIP header has a modification time attribute (see http://www.zlib.org/rfc-gzip.html)</span>
|
||||
<span class="c1"># Each time a file is compressed it changes even if the other contents don't change</span>
|
||||
<span class="c1"># For S3 this defeats detection of changes using MD5 sums on gzipped files</span>
|
||||
<span class="c1"># Fixing the mtime at 0.0 at compression time avoids this problem</span>
|
||||
<span class="n">zfile</span> <span class="o">=</span> <span class="n">GzipFile</span><span class="p">(</span><span class="n">mode</span><span class="o">=</span><span class="s2">"wb"</span><span class="p">,</span> <span class="n">fileobj</span><span class="o">=</span><span class="n">zbuf</span><span class="p">,</span> <span class="n">mtime</span><span class="o">=</span><span class="mf">0.0</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">zfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">force_bytes</span><span class="p">(</span><span class="n">content</span><span class="o">.</span><span class="n">read</span><span class="p">()))</span>
|
||||
<span class="k">finally</span><span class="p">:</span>
|
||||
<span class="n">zfile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="n">zbuf</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="c1"># Boto 2 returned the InMemoryUploadedFile with the file pointer replaced,</span>
|
||||
<span class="c1"># but Boto 3 seems to have issues with that. No need for fp.name in Boto3</span>
|
||||
<span class="c1"># so just returning the BytesIO directly</span>
|
||||
<span class="k">return</span> <span class="n">zbuf</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"rb"</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Opens the file, if it exists.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">S3Boto3StorageFile</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">ClientError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">err</span><span class="o">.</span><span class="n">response</span><span class="p">[</span><span class="s2">"ResponseMetadata"</span><span class="p">][</span><span class="s2">"HTTPStatusCode"</span><span class="p">]</span> <span class="o">==</span> <span class="mi">404</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s2">"File does not exist: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="c1"># Let it bubble up if it was some other error</span>
|
||||
<span class="k">return</span> <span class="n">f</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">content</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Stitches and cleans multipart uploads; normalizes file paths.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">cleaned_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">cleaned_name</span><span class="p">)</span>
|
||||
<span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_write_parameters</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">content</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">gzip</span>
|
||||
<span class="ow">and</span> <span class="n">params</span><span class="p">[</span><span class="s2">"ContentType"</span><span class="p">]</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">gzip_content_types</span>
|
||||
<span class="ow">and</span> <span class="s2">"ContentEncoding"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">params</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compress_content</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"ContentEncoding"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"gzip"</span>
|
||||
|
||||
<span class="n">encoded_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="p">(</span><span class="n">encoded_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">preload_metadata</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_entries</span><span class="p">[</span><span class="n">encoded_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">obj</span>
|
||||
|
||||
<span class="n">content</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_SET</span><span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">upload_fileobj</span><span class="p">(</span><span class="n">content</span><span class="p">,</span> <span class="n">ExtraArgs</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">cleaned_name</span>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.delete"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.delete">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Deletes a file from S3.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_encode_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_entries</span><span class="p">:</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_entries</span><span class="p">[</span><span class="n">name</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.exists"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.exists">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Checks if file exists.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">entries</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">entries</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">head_object</span><span class="p">(</span><span class="n">Bucket</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">bucket_name</span><span class="p">,</span> <span class="n">Key</span><span class="o">=</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
<span class="k">except</span> <span class="n">ClientError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.listdir"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.listdir">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">listdir</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Translational function to go from S3 file paths to the format</span>
|
||||
<span class="sd"> Django's listdir expects.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="c1"># The path needs to end with a slash, but if the root is empty, leave</span>
|
||||
<span class="c1"># it.</span>
|
||||
<span class="k">if</span> <span class="n">path</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">path</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"/"</span><span class="p">):</span>
|
||||
<span class="n">path</span> <span class="o">+=</span> <span class="s2">"/"</span>
|
||||
|
||||
<span class="n">directories</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">files</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">paginator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_paginator</span><span class="p">(</span><span class="s2">"list_objects"</span><span class="p">)</span>
|
||||
<span class="n">pages</span> <span class="o">=</span> <span class="n">paginator</span><span class="o">.</span><span class="n">paginate</span><span class="p">(</span><span class="n">Bucket</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">bucket_name</span><span class="p">,</span> <span class="n">Delimiter</span><span class="o">=</span><span class="s2">"/"</span><span class="p">,</span> <span class="n">Prefix</span><span class="o">=</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">page</span> <span class="ow">in</span> <span class="n">pages</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">page</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"CommonPrefixes"</span><span class="p">,</span> <span class="p">()):</span>
|
||||
<span class="n">directories</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">posixpath</span><span class="o">.</span><span class="n">relpath</span><span class="p">(</span><span class="n">entry</span><span class="p">[</span><span class="s2">"Prefix"</span><span class="p">],</span> <span class="n">path</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">page</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"Contents"</span><span class="p">,</span> <span class="p">()):</span>
|
||||
<span class="n">files</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">posixpath</span><span class="o">.</span><span class="n">relpath</span><span class="p">(</span><span class="n">entry</span><span class="p">[</span><span class="s2">"Key"</span><span class="p">],</span> <span class="n">path</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">directories</span><span class="p">,</span> <span class="n">files</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.size"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.size">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Gets the filesize of a remote file.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">entries</span><span class="p">:</span>
|
||||
<span class="n">entry</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">entries</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">entry</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">entry</span><span class="o">.</span><span class="n">size</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="s2">"size"</span><span class="p">)</span> <span class="k">else</span> <span class="n">entry</span><span class="o">.</span><span class="n">content_length</span>
|
||||
<span class="k">return</span> <span class="mi">0</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_encode_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span><span class="o">.</span><span class="n">content_length</span></div>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_get_write_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">params</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">encryption</span><span class="p">:</span>
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"ServerSideEncryption"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"AES256"</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">reduced_redundancy</span><span class="p">:</span>
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"StorageClass"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"REDUCED_REDUNDANCY"</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_acl</span><span class="p">:</span>
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"ACL"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_acl</span>
|
||||
|
||||
<span class="n">_type</span><span class="p">,</span> <span class="n">encoding</span> <span class="o">=</span> <span class="n">mimetypes</span><span class="o">.</span><span class="n">guess_type</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">content_type</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">content</span><span class="p">,</span> <span class="s2">"content_type"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">content_type</span> <span class="o">=</span> <span class="n">content_type</span> <span class="ow">or</span> <span class="n">_type</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_content_type</span>
|
||||
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"ContentType"</span><span class="p">]</span> <span class="o">=</span> <span class="n">content_type</span>
|
||||
<span class="k">if</span> <span class="n">encoding</span><span class="p">:</span>
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"ContentEncoding"</span><span class="p">]</span> <span class="o">=</span> <span class="n">encoding</span>
|
||||
|
||||
<span class="n">params</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_object_parameters</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">params</span>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.get_object_parameters"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_object_parameters">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">get_object_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns a dictionary that is passed to file upload. Override this</span>
|
||||
<span class="sd"> method to adjust this on a per-object basis to set e.g ContentDisposition.</span>
|
||||
<span class="sd"> By default, returns the value of AWS_S3_OBJECT_PARAMETERS.</span>
|
||||
<span class="sd"> Setting ContentEncoding will prevent objects from being automatically gzipped.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">object_parameters</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.get_modified_time"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_modified_time">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">get_modified_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns an (aware) datetime object containing the last modified time if</span>
|
||||
<span class="sd"> USE_TZ is True, otherwise returns a naive datetime in the local timezone.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="n">entry</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">entries</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="c1"># only call self.bucket.Object() if the key is not found</span>
|
||||
<span class="c1"># in the preloaded metadata.</span>
|
||||
<span class="k">if</span> <span class="n">entry</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">entry</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_encode_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">setting</span><span class="p">(</span><span class="s2">"USE_TZ"</span><span class="p">):</span>
|
||||
<span class="c1"># boto3 returns TZ aware timestamps</span>
|
||||
<span class="k">return</span> <span class="n">entry</span><span class="o">.</span><span class="n">last_modified</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">make_naive</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">last_modified</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.modified_time"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.modified_time">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">modified_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Returns a naive datetime object containing the last modified time.</span>
|
||||
<span class="sd"> If USE_TZ=False then get_modified_time will return a naive datetime</span>
|
||||
<span class="sd"> so we just return that, else we have to localize and strip the tz</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">mtime</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modified_time</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">mtime</span> <span class="k">if</span> <span class="n">is_naive</span><span class="p">(</span><span class="n">mtime</span><span class="p">)</span> <span class="k">else</span> <span class="n">make_naive</span><span class="p">(</span><span class="n">mtime</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_strip_signing_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Boto3 does not currently support generating URLs that are unsigned. Instead we</span>
|
||||
<span class="sd"> take the signed URLs and strip any querystring params related to signing and expiration.</span>
|
||||
<span class="sd"> Note that this may end up with URLs that are still invalid, especially if params are</span>
|
||||
<span class="sd"> passed in that only work with signed URLs, e.g. response header params.</span>
|
||||
<span class="sd"> The code attempts to strip all query parameters that match names of known parameters</span>
|
||||
<span class="sd"> from v2 and v4 signatures, regardless of the actual signature version used.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">split_url</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">urlsplit</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
||||
<span class="n">qs</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">parse_qsl</span><span class="p">(</span><span class="n">split_url</span><span class="o">.</span><span class="n">query</span><span class="p">,</span> <span class="n">keep_blank_values</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">blacklist</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"x-amz-algorithm"</span><span class="p">,</span>
|
||||
<span class="s2">"x-amz-credential"</span><span class="p">,</span>
|
||||
<span class="s2">"x-amz-date"</span><span class="p">,</span>
|
||||
<span class="s2">"x-amz-expires"</span><span class="p">,</span>
|
||||
<span class="s2">"x-amz-signedheaders"</span><span class="p">,</span>
|
||||
<span class="s2">"x-amz-signature"</span><span class="p">,</span>
|
||||
<span class="s2">"x-amz-security-token"</span><span class="p">,</span>
|
||||
<span class="s2">"awsaccesskeyid"</span><span class="p">,</span>
|
||||
<span class="s2">"expires"</span><span class="p">,</span>
|
||||
<span class="s2">"signature"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">filtered_qs</span> <span class="o">=</span> <span class="p">((</span><span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">qs</span> <span class="k">if</span> <span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">blacklist</span><span class="p">)</span>
|
||||
<span class="c1"># Note: Parameters that did not have a value in the original query string will have</span>
|
||||
<span class="c1"># an '=' sign appended to it, e.g ?foo&bar becomes ?foo=&bar=</span>
|
||||
<span class="n">joined_qs</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"="</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keyval</span><span class="p">)</span> <span class="k">for</span> <span class="n">keyval</span> <span class="ow">in</span> <span class="n">filtered_qs</span><span class="p">)</span>
|
||||
<span class="n">split_url</span> <span class="o">=</span> <span class="n">split_url</span><span class="o">.</span><span class="n">_replace</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="s2">"&"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">joined_qs</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">split_url</span><span class="o">.</span><span class="n">geturl</span><span class="p">()</span>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.url"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.url">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">url</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">parameters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">expire</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns the URL of a remotely-hosted file</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Preserve the trailing slash after normalizing the path.</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">custom_domain</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{}</span><span class="s2">//</span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url_protocol</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">custom_domain</span><span class="p">,</span> <span class="n">filepath_to_uri</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">expire</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">expire</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">querystring_expire</span>
|
||||
|
||||
<span class="n">params</span> <span class="o">=</span> <span class="n">parameters</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">parameters</span> <span class="k">else</span> <span class="p">{}</span>
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"Bucket"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">name</span>
|
||||
<span class="n">params</span><span class="p">[</span><span class="s2">"Key"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">url</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">generate_presigned_url</span><span class="p">(</span>
|
||||
<span class="s2">"get_object"</span><span class="p">,</span> <span class="n">Params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> <span class="n">ExpiresIn</span><span class="o">=</span><span class="n">expire</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">querystring_auth</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">url</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_strip_signing_parameters</span><span class="p">(</span><span class="n">url</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3Storage.get_available_name"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_available_name">[docs]</a> <span class="k">def</span><span class="w"> </span><span class="nf">get_available_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Overwrite existing file with the same name."""</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_clean_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">file_overwrite</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">get_available_overwrite_name</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">max_length</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_available_name</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">max_length</span><span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
</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="nav-item nav-item-0"><a href="../../../../../index.html">Evennia latest</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../../../index.html" >Module code</a> »</li>
|
||||
<li class="nav-item nav-item-2"><a href="../../../../evennia.html" >evennia</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">evennia.contrib.base_systems.awsstorage.aws_s3_cdn</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2024, The Evennia developer community.
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -93,6 +93,7 @@
|
|||
<li><a href="django/db/models/manager.html">django.db.models.manager</a></li>
|
||||
<li><a href="django/db/models/query.html">django.db.models.query</a></li>
|
||||
<li><a href="django/db/models/query_utils.html">django.db.models.query_utils</a></li>
|
||||
<li><a href="django/utils/deconstruct.html">django.utils.deconstruct</a></li>
|
||||
<li><a href="django/utils/functional.html">django.utils.functional</a></li>
|
||||
<li><a href="evennia.html">evennia</a></li>
|
||||
<ul><li><a href="evennia/accounts/accounts.html">evennia.accounts.accounts</a></li>
|
||||
|
|
@ -123,6 +124,7 @@
|
|||
<li><a href="evennia/comms/comms.html">evennia.comms.comms</a></li>
|
||||
<li><a href="evennia/comms/managers.html">evennia.comms.managers</a></li>
|
||||
<li><a href="evennia/comms/models.html">evennia.comms.models</a></li>
|
||||
<li><a href="evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html">evennia.contrib.base_systems.awsstorage.aws_s3_cdn</a></li>
|
||||
<li><a href="evennia/contrib/base_systems/awsstorage/tests.html">evennia.contrib.base_systems.awsstorage.tests</a></li>
|
||||
<li><a href="evennia/contrib/base_systems/building_menu/building_menu.html">evennia.contrib.base_systems.building_menu.building_menu</a></li>
|
||||
<li><a href="evennia/contrib/base_systems/building_menu/tests.html">evennia.contrib.base_systems.building_menu.tests</a></li>
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ This upgrade requires running `evennia migrate` on your existing database
|
|||
- Fix: When an object was used as an On-Demand Task's category, and that object was then deleted,
|
||||
it caused an OnDemandHandler save error on reload. Will now clean up on save. (Griatch)
|
||||
used as the task's category (Griatch)
|
||||
- Fix: Correct aws contrib's use of legacy django string utils (Griatch)
|
||||
- [Docs]: Fixes from InspectorCaracal, Griatch, ChrisLR
|
||||
|
||||
[pull3633]: https://github.com/evennia/evennia/pull/3633
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ to accounts respectively.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.admin.CmdEmit.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['pemit', 'remit']</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['remit', 'pemit']</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -362,7 +362,7 @@ to accounts respectively.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.admin.CmdEmit.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ skipping, reloading etc.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.batchprocess.CmdBatchCommands.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['batchcommand', 'batchcmd']</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['batchcmd', 'batchcommand']</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -183,7 +183,7 @@ skipping, reloading etc.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.batchprocess.CmdBatchCommands.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -651,7 +651,7 @@ You can specify the /force switch to bypass this confirmation.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.building.CmdDestroy.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@delete', '@del']</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@del', '@delete']</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -692,7 +692,7 @@ You can specify the /force switch to bypass this confirmation.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.building.CmdDestroy.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -1419,7 +1419,7 @@ server settings.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.building.CmdTypeclass.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@typeclasses', '@parent', '@update', '@swap', '@type']</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@swap', '@typeclasses', '@update', '@type', '@parent']</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -1450,7 +1450,7 @@ server settings.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.building.CmdTypeclass.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@typeclasses @parent @update @swap @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses parent update swap type', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@swap @typeclasses @update @type @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap typeclasses update type parent', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -282,7 +282,7 @@ for everyone to use, you need build privileges and the alias command.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.general.CmdNick.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['nickname', 'nicks']</em><a class="headerlink" href="#evennia.commands.default.general.CmdNick.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['nicks', 'nickname']</em><a class="headerlink" href="#evennia.commands.default.general.CmdNick.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -314,7 +314,7 @@ for everyone to use, you need build privileges and the alias command.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.general.CmdNick.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'nickname nicks', 'category': 'general', 'key': 'nick', 'no_prefix': ' nickname nicks', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\\\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdNick.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', 'no_prefix': ' nicks nickname', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\\\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdNick.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -611,7 +611,7 @@ placing it in their inventory.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.general.CmdSay.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ["'", '"']</em><a class="headerlink" href="#evennia.commands.default.general.CmdSay.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['"', "'"]</em><a class="headerlink" href="#evennia.commands.default.general.CmdSay.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -642,7 +642,7 @@ placing it in their inventory.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.general.CmdSay.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdSay.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdSay.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -786,7 +786,7 @@ which permission groups you are a member of.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.general.CmdAccess.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['groups', 'hierarchy']</em><a class="headerlink" href="#evennia.commands.default.general.CmdAccess.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['hierarchy', 'groups']</em><a class="headerlink" href="#evennia.commands.default.general.CmdAccess.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -817,7 +817,7 @@ which permission groups you are a member of.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.general.CmdAccess.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdAccess.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}</em><a class="headerlink" href="#evennia.commands.default.general.CmdAccess.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -985,7 +985,7 @@ main test suite started with</p>
|
|||
<p>Test the batch processor.</p>
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.tests.TestBatchProcess.red_button">
|
||||
<code class="sig-name descname">red_button</code><em class="property"> = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpgxptasqd/5b2963fc46efd1acfc1ad890e3b745ec9ba62729/evennia/contrib/tutorials/red_button/red_button.py'></em><a class="headerlink" href="#evennia.commands.default.tests.TestBatchProcess.red_button" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">red_button</code><em class="property"> = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpsrie53au/e30073fea6f33268eb7f4ca5a341baeb20d8c120/evennia/contrib/tutorials/red_button/red_button.py'></em><a class="headerlink" href="#evennia.commands.default.tests.TestBatchProcess.red_button" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ connect “account name” “pass word”</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedConnect.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['co', 'con', 'conn']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['con', 'conn', 'co']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -171,7 +171,7 @@ there is no object yet before the account has logged in)</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedConnect.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -195,7 +195,7 @@ create “account name” “pass word”</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedCreate.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['cr', 'cre']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedCreate.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['cre', 'cr']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedCreate.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -232,7 +232,7 @@ create “account name” “pass word”</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedCreate.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedCreate.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedCreate.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -306,7 +306,7 @@ All it does is display the connect screen.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedLook.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['look', 'l']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedLook.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'look']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedLook.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -332,7 +332,7 @@ All it does is display the connect screen.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedLook.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedLook.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedLook.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -355,7 +355,7 @@ for simplicity. It shows a pane of info.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -381,7 +381,7 @@ for simplicity. It shows a pane of info.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedHelp.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -115,8 +115,471 @@
|
|||
<div class="bodywrapper">
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="evennia-contrib-base-systems-awsstorage-aws-s3-cdn">
|
||||
<h1>evennia.contrib.base_systems.awsstorage.aws_s3_cdn<a class="headerlink" href="#evennia-contrib-base-systems-awsstorage-aws-s3-cdn" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="module-evennia.contrib.base_systems.awsstorage.aws_s3_cdn">
|
||||
<span id="evennia-contrib-base-systems-awsstorage-aws-s3-cdn"></span><h1>evennia.contrib.base_systems.awsstorage.aws_s3_cdn<a class="headerlink" href="#module-evennia.contrib.base_systems.awsstorage.aws_s3_cdn" title="Permalink to this headline">¶</a></h1>
|
||||
<p>AWS Storage System
|
||||
The Right Honourable Reverend (trhr) 2020</p>
|
||||
<p>ABOUT THIS PLUGIN:</p>
|
||||
<p>This plugin migrates the Web-based portion of Evennia, namely images,
|
||||
javascript, and other items located inside staticfiles into Amazon AWS (S3) for hosting.</p>
|
||||
<p>Files hosted on S3 are “in the cloud,” and while your personal
|
||||
server may be sufficient for serving multimedia to a minimal number of users,
|
||||
the perfect use case for this plugin would be:</p>
|
||||
<ol class="arabic simple">
|
||||
<li><p>Servers supporting heavy web-based traffic (webclient, etc)</p></li>
|
||||
<li><p>With a sizable number of users</p></li>
|
||||
<li><p>Where the users are globally distributed</p></li>
|
||||
<li><p>Where multimedia files are served to users as a part of gameplay</p></li>
|
||||
</ol>
|
||||
<p>Bottom line - if you’re sending an image to a player every time they traverse a
|
||||
map, the bandwidth reduction will be substantial. If not, probably skip
|
||||
this one.</p>
|
||||
<p>Note that storing and serving files via S3 is not technically free outside of
|
||||
Amazon’s “free tier” offering, which you may or may not be eligible for;
|
||||
evennia’s base install currently requires 1.5MB of storage space on S3,
|
||||
making the current total cost to install this plugin ~$0.0005 per year. If
|
||||
you have substantial media assets and intend to serve them to many users,
|
||||
caveat emptor on a total cost of ownership - check AWS’s pricing structure.</p>
|
||||
<p>See the ./README.md file for details and install instructions.</p>
|
||||
<dl class="py function">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.setting">
|
||||
<code class="sig-prename descclassname">evennia.contrib.base_systems.awsstorage.aws_s3_cdn.</code><code class="sig-name descname">setting</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">default</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#setting"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.setting" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Helper function to get a Django setting by name. If setting doesn’t exist
|
||||
it will return a default.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><p><strong>name</strong> (<em>str</em>) – A Django setting name</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p>The value of the setting variable by that name</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py function">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.safe_join">
|
||||
<code class="sig-prename descclassname">evennia.contrib.base_systems.awsstorage.aws_s3_cdn.</code><code class="sig-name descname">safe_join</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">base</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">paths</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#safe_join"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.safe_join" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Helper function, a version of django.utils._os.safe_join for S3 paths.
|
||||
Joins one or more path components to the base path component
|
||||
intelligently. Returns a normalized version of the final path.
|
||||
The final path must be located inside of the base path component
|
||||
(otherwise a ValueError is raised). Paths outside the base path
|
||||
indicate a possible security sensitive operation.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>base</strong> (<em>str</em>) – A path string to the base of the staticfiles</p></li>
|
||||
<li><p><strong>*paths</strong> (<em>list</em>) – A list of paths as referenced from the base path</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><em>final_path (str)</em> – A joined path, base + filepath</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py function">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.check_location">
|
||||
<code class="sig-prename descclassname">evennia.contrib.base_systems.awsstorage.aws_s3_cdn.</code><code class="sig-name descname">check_location</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">storage</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#check_location"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.check_location" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Helper function to make sure that the storage location is configured correctly.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><p><strong>storage</strong> (<em>Storage</em>) – A Storage object (Django)</p>
|
||||
</dd>
|
||||
<dt class="field-even">Raises</dt>
|
||||
<dd class="field-even"><p><strong>ImproperlyConfigured</strong> – If the storage location is not configured correctly,
|
||||
this is raised.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py function">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.lookup_env">
|
||||
<code class="sig-prename descclassname">evennia.contrib.base_systems.awsstorage.aws_s3_cdn.</code><code class="sig-name descname">lookup_env</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">names</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#lookup_env"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.lookup_env" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Helper function for looking up names in env vars. Returns the first element found.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><p><strong>names</strong> (<em>str</em>) – A list of environment variables</p>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><em>value (str)</em> – The value of the found environment variable.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py function">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.get_available_overwrite_name">
|
||||
<code class="sig-prename descclassname">evennia.contrib.base_systems.awsstorage.aws_s3_cdn.</code><code class="sig-name descname">get_available_overwrite_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">max_length</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#get_available_overwrite_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.get_available_overwrite_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Helper function indicating files that will be overwritten during trunc.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>name</strong> (<em>str</em>) – The name of the file</p></li>
|
||||
<li><p><strong>max_length</strong> (<em>int</em>) – The maximum length of a filename</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt class="field-even">Returns</dt>
|
||||
<dd class="field-even"><p><em>joined (path)</em> – A joined path including directory, file, and extension</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py class">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile">
|
||||
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.awsstorage.aws_s3_cdn.</code><code class="sig-name descname">S3Boto3StorageFile</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/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3StorageFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.files.base.File</span></code></p>
|
||||
<p>The default file object used by the S3Boto3Storage backend.
|
||||
This file implements file streaming using boto’s multipart
|
||||
uploading functionality. The file can be opened in read or
|
||||
write mode.
|
||||
This class extends Django’s File class. However, the contained
|
||||
data is only the data contained in the current buffer. So you
|
||||
should not access the contained file object directly. You should
|
||||
access the data via this class.
|
||||
Warning: This file <em>must</em> be closed using the close() method in
|
||||
order to properly write the file to S3. Be sure to close the file
|
||||
in your application.</p>
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.__init__">
|
||||
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">mode</span></em>, <em class="sig-param"><span class="n">storage</span></em>, <em class="sig-param"><span class="n">buffer_size</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3StorageFile.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.__init__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Initializes the File object.</p>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>name</strong> (<em>str</em>) – The name of the file</p></li>
|
||||
<li><p><strong>mode</strong> (<em>str</em>) – The access mode (‘r’ or ‘w’)</p></li>
|
||||
<li><p><strong>storage</strong> (<em>Storage</em>) – The Django Storage object</p></li>
|
||||
<li><p><strong>buffer_size</strong> (<em>int</em>) – The buffer size, for multipart uploads</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.buffer_size">
|
||||
<code class="sig-name descname">buffer_size</code><em class="property"> = 5242880</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.buffer_size" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.size">
|
||||
<em class="property">property </em><code class="sig-name descname">size</code><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.size" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Helper property to return filesize</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.file">
|
||||
<em class="property">property </em><code class="sig-name descname">file</code><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.file" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Helper function to manage zipping and temporary files</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.read">
|
||||
<code class="sig-name descname">read</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/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3StorageFile.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.read" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Checks if file is in read mode; then continues to boto3 operation</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.readline">
|
||||
<code class="sig-name descname">readline</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/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3StorageFile.readline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.readline" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Checks if file is in read mode; then continues to boto3 operation</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.write">
|
||||
<code class="sig-name descname">write</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">content</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3StorageFile.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.write" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Checks if file is in write mode or needs multipart handling,
|
||||
then continues to boto3 operation.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.close">
|
||||
<code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3StorageFile.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.close" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Manages file closing after multipart uploads</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.deconstruct">
|
||||
<code class="sig-name descname">deconstruct</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.deconstruct" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return a 3-tuple of class import path, positional arguments,
|
||||
and keyword arguments.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py class">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage">
|
||||
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.base_systems.awsstorage.aws_s3_cdn.</code><code class="sig-name descname">S3Boto3Storage</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/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.files.storage.base.Storage</span></code></p>
|
||||
<p>Amazon Simple Storage Service using Boto3
|
||||
This storage backend supports opening files in read or write
|
||||
mode and supports streaming(buffering) data in chunks to S3
|
||||
when writing.</p>
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.default_content_type">
|
||||
<code class="sig-name descname">default_content_type</code><em class="property"> = 'application/octet-stream'</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.default_content_type" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.access_key_names">
|
||||
<code class="sig-name descname">access_key_names</code><em class="property"> = ['AWS_S3_ACCESS_KEY_ID', 'AWS_ACCESS_KEY_ID']</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.access_key_names" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secret_key_names">
|
||||
<code class="sig-name descname">secret_key_names</code><em class="property"> = ['AWS_S3_SECRET_ACCESS_KEY', 'AWS_SECRET_ACCESS_KEY']</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secret_key_names" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.security_token_names">
|
||||
<code class="sig-name descname">security_token_names</code><em class="property"> = ['AWS_SESSION_TOKEN', 'AWS_SECURITY_TOKEN']</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.security_token_names" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.file_overwrite">
|
||||
<code class="sig-name descname">file_overwrite</code><em class="property"> = True</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.file_overwrite" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.object_parameters">
|
||||
<code class="sig-name descname">object_parameters</code><em class="property"> = {}</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.object_parameters" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket_name">
|
||||
<code class="sig-name descname">bucket_name</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.auto_create_bucket">
|
||||
<code class="sig-name descname">auto_create_bucket</code><em class="property"> = False</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.auto_create_bucket" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.default_acl">
|
||||
<code class="sig-name descname">default_acl</code><em class="property"> = 'public-read'</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.default_acl" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket_acl">
|
||||
<code class="sig-name descname">bucket_acl</code><em class="property"> = 'public-read'</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket_acl" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.querystring_auth">
|
||||
<code class="sig-name descname">querystring_auth</code><em class="property"> = True</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.querystring_auth" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.querystring_expire">
|
||||
<code class="sig-name descname">querystring_expire</code><em class="property"> = 3600</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.querystring_expire" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.signature_version">
|
||||
<code class="sig-name descname">signature_version</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.signature_version" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.reduced_redundancy">
|
||||
<code class="sig-name descname">reduced_redundancy</code><em class="property"> = False</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.reduced_redundancy" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.location">
|
||||
<code class="sig-name descname">location</code><em class="property"> = ''</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.location" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.encryption">
|
||||
<code class="sig-name descname">encryption</code><em class="property"> = False</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.encryption" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.custom_domain">
|
||||
<code class="sig-name descname">custom_domain</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.custom_domain" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.addressing_style">
|
||||
<code class="sig-name descname">addressing_style</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.addressing_style" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secure_urls">
|
||||
<code class="sig-name descname">secure_urls</code><em class="property"> = True</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secure_urls" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.file_name_charset">
|
||||
<code class="sig-name descname">file_name_charset</code><em class="property"> = 'utf-8'</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.file_name_charset" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.gzip">
|
||||
<code class="sig-name descname">gzip</code><em class="property"> = False</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.gzip" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.preload_metadata">
|
||||
<code class="sig-name descname">preload_metadata</code><em class="property"> = False</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.preload_metadata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.gzip_content_types">
|
||||
<code class="sig-name descname">gzip_content_types</code><em class="property"> = ('text/css', 'text/javascript', 'application/javascript', 'application/x-javascript', 'image/svg+xml')</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.gzip_content_types" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.endpoint_url">
|
||||
<code class="sig-name descname">endpoint_url</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.endpoint_url" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.proxies">
|
||||
<code class="sig-name descname">proxies</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.proxies" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.region_name">
|
||||
<code class="sig-name descname">region_name</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.region_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.use_ssl">
|
||||
<code class="sig-name descname">use_ssl</code><em class="property"> = True</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.use_ssl" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.verify">
|
||||
<code class="sig-name descname">verify</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.verify" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.max_memory_size">
|
||||
<code class="sig-name descname">max_memory_size</code><em class="property"> = 0</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.max_memory_size" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.__init__">
|
||||
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">acl</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">bucket</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">settings</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.__init__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Check if some of the settings we’ve provided as class attributes
|
||||
need to be overwritten with values passed in here.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.url_protocol">
|
||||
<code class="sig-name descname">url_protocol</code><em class="property"> = 'http:'</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.url_protocol" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.access_key">
|
||||
<code class="sig-name descname">access_key</code><em class="property"> = ''</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.access_key" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secret_key">
|
||||
<code class="sig-name descname">secret_key</code><em class="property"> = ''</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secret_key" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.security_token">
|
||||
<code class="sig-name descname">security_token</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.security_token" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.config">
|
||||
<code class="sig-name descname">config</code><em class="property"> = None</em><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.config" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.connection">
|
||||
<em class="property">property </em><code class="sig-name descname">connection</code><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.connection" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Creates the actual connection to S3</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket">
|
||||
<em class="property">property </em><code class="sig-name descname">bucket</code><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get the current bucket. If there is no current bucket object
|
||||
create it.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.entries">
|
||||
<em class="property">property </em><code class="sig-name descname">entries</code><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.entries" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get the locally cached files for the bucket.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.delete">
|
||||
<code class="sig-name descname">delete</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.delete"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.delete" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Deletes a file from S3.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.exists">
|
||||
<code class="sig-name descname">exists</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.exists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.exists" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Checks if file exists.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.listdir">
|
||||
<code class="sig-name descname">listdir</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.listdir"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.listdir" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Translational function to go from S3 file paths to the format
|
||||
Django’s listdir expects.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.size">
|
||||
<code class="sig-name descname">size</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.size"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.size" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Gets the filesize of a remote file.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.deconstruct">
|
||||
<code class="sig-name descname">deconstruct</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.deconstruct" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return a 3-tuple of class import path, positional arguments,
|
||||
and keyword arguments.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_object_parameters">
|
||||
<code class="sig-name descname">get_object_parameters</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.get_object_parameters"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_object_parameters" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a dictionary that is passed to file upload. Override this
|
||||
method to adjust this on a per-object basis to set e.g ContentDisposition.
|
||||
By default, returns the value of AWS_S3_OBJECT_PARAMETERS.
|
||||
Setting ContentEncoding will prevent objects from being automatically gzipped.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_modified_time">
|
||||
<code class="sig-name descname">get_modified_time</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.get_modified_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_modified_time" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns an (aware) datetime object containing the last modified time if
|
||||
USE_TZ is True, otherwise returns a naive datetime in the local timezone.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.modified_time">
|
||||
<code class="sig-name descname">modified_time</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.modified_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.modified_time" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a naive datetime object containing the last modified time.
|
||||
If USE_TZ=False then get_modified_time will return a naive datetime
|
||||
so we just return that, else we have to localize and strip the tz</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.url">
|
||||
<code class="sig-name descname">url</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">parameters</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">expire</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.url"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.url" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns the URL of a remotely-hosted file</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
<dt id="evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_available_name">
|
||||
<code class="sig-name descname">get_available_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">name</span></em>, <em class="sig-param"><span class="n">max_length</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/base_systems/awsstorage/aws_s3_cdn.html#S3Boto3Storage.get_available_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_available_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Overwrite existing file with the same name.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['co', 'con', 'conn']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['con', 'conn', 'co']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -183,7 +183,7 @@ there is no object yet before the account has logged in)</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedConnect.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -205,7 +205,7 @@ there is no object yet before the account has logged in)</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedCreate.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['cr', 'cre']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedCreate.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['cre', 'cr']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedCreate.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -247,7 +247,7 @@ name enclosed in quotes:</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedCreate.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedCreate.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedCreate.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -311,7 +311,7 @@ All it does is display the connect screen.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedLook.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['look', 'l']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedLook.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'look']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedLook.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -337,7 +337,7 @@ All it does is display the connect screen.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedLook.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedLook.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedLook.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -355,7 +355,7 @@ for simplicity. It shows a pane of info.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -381,7 +381,7 @@ for simplicity. It shows a pane of info.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.email_login.email_login.CmdUnconnectedHelp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.ingame_python.commands.CmdCallback.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@callback', '@callbacks', '@calls']</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@callbacks', '@callback', '@calls']</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -211,7 +211,7 @@ on user permission.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.ingame_python.commands.CmdCallback.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callbacks callback calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ aliases to an already joined channel.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['aliaschan', 'chanalias']</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['chanalias', 'aliaschan']</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -205,7 +205,7 @@ aliases to an already joined channel.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'aliaschan chanalias', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' aliaschan chanalias', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'chanalias aliaschan', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' chanalias aliaschan', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}</em><a class="headerlink" href="#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdAddCom.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ the operation will be general or on the room.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['chicken out', 'abort', 'q', 'quit']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['quit', 'chicken out', 'q', 'abort']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
|
|
@ -249,7 +249,7 @@ set in self.parse())</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'chicken out abort q quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out abort q quit', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'quit chicken out q abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit chicken out q abort', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGiveUp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -504,7 +504,7 @@ looks and what actions is available.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['e', 'unfocus', 'ex', 'examine']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['unfocus', 'e', 'examine', 'ex']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -533,7 +533,7 @@ set in self.parse())</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'e unfocus ex examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e unfocus ex examine', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'unfocus e examine ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus e examine ex', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdFocus.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -595,7 +595,7 @@ set in self.parse())</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGet.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['give', 'inventory', 'inv', 'i']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['inventory', 'i', 'inv', 'give']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
|
|
@ -619,7 +619,7 @@ set in self.parse())</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdGet.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'give inventory inv i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give inventory inv i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'inventory i inv give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory i inv give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdGet.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -640,7 +640,7 @@ set in self.parse())</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@dig', '@open']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@open', '@dig']</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
|
|
@ -663,7 +663,7 @@ to all the variables defined therein.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}</em><a class="headerlink" href="#evennia.contrib.full_systems.evscaperoom.commands.CmdRerouter.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ achievements/progress rats</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.game_systems.achievements.achievements.CmdAchieve.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['achieve', 'achievement', 'achieves']</em><a class="headerlink" href="#evennia.contrib.game_systems.achievements.achievements.CmdAchieve.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['achievement', 'achieve', 'achieves']</em><a class="headerlink" href="#evennia.contrib.game_systems.achievements.achievements.CmdAchieve.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -337,7 +337,7 @@ to all the variables defined therein.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.game_systems.achievements.achievements.CmdAchieve.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'achieve achievement achieves', 'category': 'general', 'key': 'achievements', 'no_prefix': ' achieve achievement achieves', 'tags': '', 'text': '\n view achievements\n\n Usage:\n achievements[/switches] [args]\n\n Switches:\n all View all achievements, including locked ones.\n completed View achievements you\'ve completed.\n progress View achievements you have partially completed\n\n Check your achievement statuses or browse the list. Providing a command argument\n will search all your currently unlocked achievements for matches, and the switches\n will filter the list to something other than "all unlocked". Combining a command\n argument with a switch will search only in that list.\n\n Examples:\n achievements apples\n achievements/all\n achievements/progress rats\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.achievements.achievements.CmdAchieve.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'achievement achieve achieves', 'category': 'general', 'key': 'achievements', 'no_prefix': ' achievement achieve achieves', 'tags': '', 'text': '\n view achievements\n\n Usage:\n achievements[/switches] [args]\n\n Switches:\n all View all achievements, including locked ones.\n completed View achievements you\'ve completed.\n progress View achievements you have partially completed\n\n Check your achievement statuses or browse the list. Providing a command argument\n will search all your currently unlocked achievements for matches, and the switches\n will filter the list to something other than "all unlocked". Combining a command\n argument with a switch will search only in that list.\n\n Examples:\n achievements apples\n achievements/all\n achievements/progress rats\n '}</em><a class="headerlink" href="#evennia.contrib.game_systems.achievements.achievements.CmdAchieve.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -759,7 +759,7 @@ try to influence the other part in the deal.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.game_systems.barter.barter.CmdStatus.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['offers', 'deal']</em><a class="headerlink" href="#evennia.contrib.game_systems.barter.barter.CmdStatus.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['deal', 'offers']</em><a class="headerlink" href="#evennia.contrib.game_systems.barter.barter.CmdStatus.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -785,7 +785,7 @@ try to influence the other part in the deal.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.game_systems.barter.barter.CmdStatus.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}</em><a class="headerlink" href="#evennia.contrib.game_systems.barter.barter.CmdStatus.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}</em><a class="headerlink" href="#evennia.contrib.game_systems.barter.barter.CmdStatus.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -436,7 +436,7 @@ there is no room above/below you, your movement will fail.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.grid.xyzgrid.commands.CmdFlyAndDive.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['fly', 'dive']</em><a class="headerlink" href="#evennia.contrib.grid.xyzgrid.commands.CmdFlyAndDive.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['dive', 'fly']</em><a class="headerlink" href="#evennia.contrib.grid.xyzgrid.commands.CmdFlyAndDive.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py method">
|
||||
|
|
@ -459,7 +459,7 @@ to all the variables defined therein.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.grid.xyzgrid.commands.CmdFlyAndDive.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'fly dive', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' fly dive', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}</em><a class="headerlink" href="#evennia.contrib.grid.xyzgrid.commands.CmdFlyAndDive.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'dive fly', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' dive fly', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}</em><a class="headerlink" href="#evennia.contrib.grid.xyzgrid.commands.CmdFlyAndDive.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ everyone but the person rolling.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.rpg.dice.dice.CmdDice.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['@dice', 'roll']</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['roll', '@dice']</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -366,7 +366,7 @@ everyone but the person rolling.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.rpg.dice.dice.CmdDice.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '@dice roll', 'category': 'general', 'key': 'dice', 'no_prefix': ' dice roll', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'roll @dice', 'category': 'general', 'key': 'dice', 'no_prefix': ' roll dice', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}</em><a class="headerlink" href="#evennia.contrib.rpg.dice.dice.CmdDice.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -736,7 +736,7 @@ commands the caller can use.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.rpg.rpsystem.rpsystem.CmdSay.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ["'", '"']</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdSay.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['"', "'"]</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdSay.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -767,7 +767,7 @@ commands the caller can use.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.rpg.rpsystem.rpsystem.CmdSay.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdSay.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}</em><a class="headerlink" href="#evennia.contrib.rpg.rpsystem.rpsystem.CmdSay.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -491,7 +491,7 @@ boost INT Wizard Goblin</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.evadventure.combat_twitch.CmdStunt.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['boost', 'foil']</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.combat_twitch.CmdStunt.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['foil', 'boost']</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.combat_twitch.CmdStunt.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -525,7 +525,7 @@ set in self.parse())</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.evadventure.combat_twitch.CmdStunt.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'boost foil', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' boost foil', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.combat_twitch.CmdStunt.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'foil boost', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' foil boost', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.evadventure.combat_twitch.CmdStunt.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ check if the lid is open or closed.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['smash lid', 'break lid', 'smash']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['smash', 'break lid', 'smash lid']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -293,7 +293,7 @@ break.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'smash lid break lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash lid break lid smash', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'smash break lid smash lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash break lid smash lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdSmashGlass.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -520,7 +520,7 @@ be mutually exclusive.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'listen', 'feel', 'examine', 'get', 'ex']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['get', 'listen', 'l', 'feel', 'examine', 'ex']</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -546,7 +546,7 @@ be mutually exclusive.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l listen feel examine get ex', 'category': 'general', 'key': 'look', 'no_prefix': ' l listen feel examine get ex', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'get listen l feel examine ex', 'category': 'general', 'key': 'look', 'no_prefix': ' get listen l feel examine ex', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}</em><a class="headerlink" href="#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -570,7 +570,7 @@ shift green root up/down</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['pull', 'push', 'move', 'shiftroot']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['shiftroot', 'push', 'pull', 'move']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -606,7 +606,7 @@ yellow/green - horizontal roots</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'pull push move shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull push move shiftroot', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'shiftroot push pull move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' shiftroot push pull move', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdShiftRoot.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -623,7 +623,7 @@ yellow/green - horizontal roots</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['push button', 'press button', 'button']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['push button', 'button', 'press button']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -649,7 +649,7 @@ yellow/green - horizontal roots</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'push button press button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button press button button', 'tags': '', 'text': '\n Presses a button.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'push button button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button button press button', 'tags': '', 'text': '\n Presses a button.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdPressButton.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -793,7 +793,7 @@ parry - forgoes your attack but will make you harder to hit on next</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['pierce', 'parry', 'kill', 'thrust', 'chop', 'slash', 'fight', 'bash', 'defend', 'hit', 'stab']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['bash', 'fight', 'slash', 'defend', 'stab', 'kill', 'parry', 'thrust', 'chop', 'hit', 'pierce']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -819,7 +819,7 @@ parry - forgoes your attack but will make you harder to hit on next</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'pierce parry kill thrust chop slash fight bash defend hit stab', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' pierce parry kill thrust chop slash fight bash defend hit stab', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'bash fight slash defend stab kill parry thrust chop hit pierce', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' bash fight slash defend stab kill parry thrust chop hit pierce', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.objects.CmdAttack.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -830,7 +830,7 @@ if they fall off the bridge.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -856,7 +856,7 @@ if they fall off the bridge.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdBridgeHelp.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
@ -982,7 +982,7 @@ to find something.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['l', 'feel around', 'feel', 'fiddle', 'search']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['feel around', 'l', 'fiddle', 'search', 'feel']</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -1010,7 +1010,7 @@ random chance of eventually finding a light source.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'l feel around feel fiddle search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel around feel fiddle search', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'feel around l fiddle search feel', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel around l fiddle search feel', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}</em><a class="headerlink" href="#evennia.contrib.tutorials.tutorial_world.rooms.CmdLookDark.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ git evennia pull - Pull the latest evennia code.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.utils.git_integration.git_integration.CmdGitEvennia.directory">
|
||||
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpgxptasqd/5b2963fc46efd1acfc1ad890e3b745ec9ba62729/evennia'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGitEvennia.directory" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpsrie53au/e30073fea6f33268eb7f4ca5a341baeb20d8c120/evennia'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGitEvennia.directory" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -283,7 +283,7 @@ git pull - Pull the latest code from your current branch.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.contrib.utils.git_integration.git_integration.CmdGit.directory">
|
||||
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpgxptasqd/5b2963fc46efd1acfc1ad890e3b745ec9ba62729/evennia/game_template'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGit.directory" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">directory</code><em class="property"> = '/tmp/tmpsrie53au/e30073fea6f33268eb7f4ca5a341baeb20d8c120/evennia/game_template'</em><a class="headerlink" href="#evennia.contrib.utils.git_integration.git_integration.CmdGit.directory" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
|
|||
|
|
@ -356,7 +356,7 @@ indentation.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.utils.eveditor.CmdEditorGroup.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = [':h', ':w', ':dw', ':uu', ':echo', ':p', ':j', ':A', ':UU', ':<', ':!', ':x', ':q!', ':S', '::', ':q', ':fd', ':wq', ':r', ':i', ':', ':f', ':I', ':y', ':::', ':>', ':DD', ':s', ':u', ':dd', ':=', ':fi']</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = [':s', ':DD', ':S', ':wq', ':q!', ':h', ':p', ':echo', ':::', ':A', ':UU', ':dd', ':I', ':y', ':q', ':j', ':<', ':i', ':dw', ':w', ':x', ':uu', ':f', ':', '::', ':!', ':>', ':fd', ':u', ':=', ':r', ':fi']</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -384,7 +384,7 @@ efficient presentation.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.utils.eveditor.CmdEditorGroup.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': ':h :w :dw :uu :echo :p :j :A :UU :< :! :x :q! :S :: :q :fd :wq :r :i : :f :I :y ::: :> :DD :s :u :dd := :fi', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :h :w :dw :uu :echo :p :j :A :UU :< :! :x :q! :S :: :q :fd :wq :r :i : :f :I :y ::: :> :DD :s :u :dd := :fi', 'tags': '', 'text': '\n Commands for the editor\n '}</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': ':s :DD :S :wq :q! :h :p :echo ::: :A :UU :dd :I :y :q :j :< :i :dw :w :x :uu :f : :: :! :> :fd :u := :r :fi', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :s :DD :S :wq :q! :h :p :echo ::: :A :UU :dd :I :y :q :j :< :i :dw :w :x :uu :f : :: :! :> :fd :u := :r :fi', 'tags': '', 'text': '\n Commands for the editor\n '}</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -955,7 +955,7 @@ single question.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.utils.evmenu.CmdYesNoQuestion.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['abort', 'n', 'no', '__nomatch_command', 'y', 'yes', 'a']</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['a', 'abort', 'n', 'yes', 'no', 'y', '__nomatch_command']</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -981,7 +981,7 @@ single question.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.utils.evmenu.CmdYesNoQuestion.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'abort n no __nomatch_command y yes a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' abort n no __nomatch_command y yes a', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'a abort n yes no y __nomatch_command', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a abort n yes no y __nomatch_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}</em><a class="headerlink" href="#evennia.utils.evmenu.CmdYesNoQuestion.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ the <strong>caller.msg()</strong> construct every time the page is updated.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.utils.evmore.CmdMore.aliases">
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['t', 'abort', 'n', 'q', 'e', 'quit', 'end', 'previous', 'next', 'a', 'p', 'top']</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">aliases</code><em class="property"> = ['next', 'a', 'top', 't', 'previous', 'abort', 'end', 'n', 'q', 'e', 'quit', 'p']</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.aliases" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="py attribute">
|
||||
|
|
@ -177,7 +177,7 @@ the <strong>caller.msg()</strong> construct every time the page is updated.</p>
|
|||
|
||||
<dl class="py attribute">
|
||||
<dt id="evennia.utils.evmore.CmdMore.search_index_entry">
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 't abort n q e quit end previous next a p top', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' t abort n q e quit end previous next a p top', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<code class="sig-name descname">search_index_entry</code><em class="property"> = {'aliases': 'next a top t previous abort end n q e quit p', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' next a top t previous abort end n q e quit p', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.search_index_entry" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
|
|
|||
|
|
@ -135,6 +135,10 @@
|
|||
<li><a href="api/evennia.comms.models.html#evennia.comms.models.SubscriptionHandler.__init__">(evennia.comms.models.SubscriptionHandler method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.comms.models.html#evennia.comms.models.TempMsg.__init__">(evennia.comms.models.TempMsg method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.__init__">(evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.__init__">(evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.building_menu.building_menu.html#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.__init__">(evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu method)</a>
|
||||
</li>
|
||||
|
|
@ -491,6 +495,10 @@
|
|||
<li><a href="api/evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject.access">(evennia.typeclasses.models.TypedObject method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.access_key">access_key (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.access_key_names">access_key_names (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.web.website.views.channels.html#evennia.web.website.views.channels.ChannelMixin.access_type">access_type (evennia.web.website.views.channels.ChannelMixin attribute)</a>
|
||||
|
||||
<ul>
|
||||
|
|
@ -800,6 +808,8 @@
|
|||
<li><a href="api/evennia.web.templatetags.addclass.html#evennia.web.templatetags.addclass.addclass">addclass() (in module evennia.web.templatetags.addclass)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.components.tests.html#evennia.contrib.base_systems.components.tests.RuntimeComponentTestC.added_tag">added_tag (evennia.contrib.base_systems.components.tests.RuntimeComponentTestC attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.addressing_style">addressing_style (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.web.admin.frontpage.html#evennia.web.admin.frontpage.admin_wrapper">admin_wrapper() (in module evennia.web.admin.frontpage)</a>
|
||||
</li>
|
||||
|
|
@ -1634,11 +1644,11 @@
|
|||
<li><a href="api/evennia.web.api.root.html#evennia.web.api.root.APIRootRouter">APIRootRouter (class in evennia.web.api.root)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.web.api.root.html#evennia.web.api.root.APIRootRouter.APIRootView">APIRootView (evennia.web.api.root.APIRootRouter attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.appearance_template">appearance_template (evennia.objects.objects.DefaultObject attribute)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.appearance_template">appearance_template (evennia.objects.objects.DefaultObject attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.locks.lockhandler.html#evennia.locks.lockhandler.LockHandler.append">append() (evennia.locks.lockhandler.LockHandler method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.telnet.html#evennia.server.portal.telnet.TelnetProtocol.applicationDataReceived">applicationDataReceived() (evennia.server.portal.telnet.TelnetProtocol method)</a>
|
||||
|
|
@ -2930,6 +2940,8 @@
|
|||
<li><a href="api/evennia.contrib.base_systems.ingame_python.callbackhandler.html#evennia.contrib.base_systems.ingame_python.callbackhandler.Callback.author">author (evennia.contrib.base_systems.ingame_python.callbackhandler.Callback attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.RedButton.auto_close_msg">auto_close_msg (evennia.contrib.tutorials.red_button.red_button.RedButton attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.auto_create_bucket">auto_create_bucket (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.commands.command.html#evennia.commands.command.Command.auto_help">auto_help (evennia.commands.command.Command attribute)</a>
|
||||
|
||||
|
|
@ -3200,6 +3212,12 @@
|
|||
<li><a href="api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIParser.brightbg_sub">brightbg_sub (evennia.utils.ansi.ANSIParser attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.amp.html#evennia.server.portal.amp.AMPMultiConnectionProtocol.broadcast">broadcast() (evennia.server.portal.amp.AMPMultiConnectionProtocol method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket">bucket() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket_acl">bucket_acl (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.bucket_name">bucket_name (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.rpg.buffs.tests.html#evennia.contrib.rpg.buffs.tests.BuffableObject">BuffableObject (class in evennia.contrib.rpg.buffs.tests)</a>
|
||||
</li>
|
||||
|
|
@ -3210,6 +3228,8 @@
|
|||
<li><a href="api/evennia.contrib.rpg.buffs.buff.html#evennia.contrib.rpg.buffs.buff.BuffableProperty">BuffableProperty (class in evennia.contrib.rpg.buffs.buff)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.rpg.buffs.buff.html#evennia.contrib.rpg.buffs.buff.BuffHandler.buffcache">buffcache() (evennia.contrib.rpg.buffs.buff.BuffHandler property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.buffer_size">buffer_size (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.rpg.buffs.buff.html#evennia.contrib.rpg.buffs.buff.BuffHandler">BuffHandler (class in evennia.contrib.rpg.buffs.buff)</a>
|
||||
</li>
|
||||
|
|
@ -3586,6 +3606,8 @@
|
|||
<li><a href="api/evennia.commands.default.building.html#evennia.commands.default.building.CmdCpAttr.check_has_attr">check_has_attr() (evennia.commands.default.building.CmdCpAttr method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.tutorial_world.rooms.html#evennia.contrib.tutorials.tutorial_world.rooms.DarkRoom.check_light_state">check_light_state() (evennia.contrib.tutorials.tutorial_world.rooms.DarkRoom method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.check_location">check_location() (in module evennia.contrib.base_systems.awsstorage.aws_s3_cdn)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.service.html#evennia.server.portal.service.EvenniaPortalService.check_lockdown">check_lockdown() (evennia.server.portal.service.EvenniaPortalService method)</a>
|
||||
</li>
|
||||
|
|
@ -3771,8 +3793,12 @@
|
|||
</li>
|
||||
<li><a href="api/evennia.contrib.full_systems.evscaperoom.objects.html#evennia.contrib.full_systems.evscaperoom.objects.Climbable.MultipleObjectsReturned">Climbable.MultipleObjectsReturned</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.building_menu.building_menu.html#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.close">close() (evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu method)</a>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.close">close() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="api/evennia.contrib.base_systems.building_menu.building_menu.html#evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu.close">(evennia.contrib.base_systems.building_menu.building_menu.BuildingMenu method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.tutorials.tutorial_world.intro_menu.html#evennia.contrib.tutorials.tutorial_world.intro_menu.TutorialEvMenu.close_menu">close_menu() (evennia.contrib.tutorials.tutorial_world.intro_menu.TutorialEvMenu method)</a>
|
||||
|
||||
<ul>
|
||||
|
|
@ -4684,6 +4710,8 @@
|
|||
<li><a href="api/evennia.utils.idmapper.models.html#evennia.utils.idmapper.models.conditional_flush">conditional_flush() (in module evennia.utils.idmapper.models)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.manager.html#evennia.server.manager.ServerConfigManager.conf">conf() (evennia.server.manager.ServerConfigManager method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.config">config (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.commands.default.building.html#evennia.commands.default.building.CmdDestroy.confirm">confirm (evennia.commands.default.building.CmdDestroy attribute)</a>
|
||||
|
||||
|
|
@ -4697,6 +4725,8 @@
|
|||
<li><a href="api/evennia.server.portal.portalsessionhandler.html#evennia.server.portal.portalsessionhandler.PortalSessionHandler.connect">(evennia.server.portal.portalsessionhandler.PortalSessionHandler method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.connection">connection() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.discord.html#evennia.server.portal.discord.DiscordClient.connection_ready">connection_ready() (evennia.server.portal.discord.DiscordClient method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.connection_time">connection_time() (evennia.accounts.accounts.DefaultAccount property)</a>
|
||||
|
|
@ -5036,6 +5066,8 @@
|
|||
<li><a href="api/evennia.contrib.tutorials.evadventure.quests.html#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.current_step">current_step() (evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.evadventure.combat_twitch.html#evennia.contrib.tutorials.evadventure.combat_twitch.EvAdventureCombatTwitchHandler.current_ticker_ref">current_ticker_ref (evennia.contrib.tutorials.evadventure.combat_twitch.EvAdventureCombatTwitchHandler attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.custom_domain">custom_domain (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.custom_gametime.custom_gametime.html#evennia.contrib.base_systems.custom_gametime.custom_gametime.custom_gametime">custom_gametime() (in module evennia.contrib.base_systems.custom_gametime.custom_gametime)</a>
|
||||
</li>
|
||||
|
|
@ -5467,6 +5499,12 @@
|
|||
</li>
|
||||
<li><a href="api/evennia.server.portal.telnet_oob.html#evennia.server.portal.telnet_oob.TelnetOOB.decode_msdp">decode_msdp() (evennia.server.portal.telnet_oob.TelnetOOB method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.deconstruct">deconstruct() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.deconstruct">(evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.utils.eveditor.html#evennia.utils.eveditor.EvEditor.decrease_indent">decrease_indent() (evennia.utils.eveditor.EvEditor method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.utils.html#evennia.utils.utils.dedent">dedent() (in module evennia.utils.utils)</a>
|
||||
|
|
@ -5487,6 +5525,8 @@
|
|||
<li><a href="api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.default">(in module evennia.server.inputfuncs)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.default_acl">default_acl (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.default_character_typeclass">default_character_typeclass (evennia.accounts.accounts.DefaultAccount attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.commands.default.building.html#evennia.commands.default.building.CmdDestroy.default_confirm">default_confirm (evennia.commands.default.building.CmdDestroy attribute)</a>
|
||||
|
|
@ -5495,6 +5535,8 @@
|
|||
<li><a href="api/evennia.contrib.game_systems.puzzles.puzzles.html#evennia.contrib.game_systems.puzzles.puzzles.CmdCreatePuzzleRecipe.default_confirm">(evennia.contrib.game_systems.puzzles.puzzles.CmdCreatePuzzleRecipe attribute)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.default_content_type">default_content_type (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.components.component.html#evennia.contrib.base_systems.components.component.Component.default_create">default_create() (evennia.contrib.base_systems.components.component.Component class method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.default_description">default_description (evennia.objects.objects.DefaultCharacter attribute)</a>
|
||||
|
|
@ -5567,12 +5609,12 @@
|
|||
</li>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.DoesNotExist">DefaultObject.DoesNotExist</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.MultipleObjectsReturned">DefaultObject.MultipleObjectsReturned</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultRoom">DefaultRoom (class in evennia.objects.objects)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultRoom.DoesNotExist">DefaultRoom.DoesNotExist</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultRoom.MultipleObjectsReturned">DefaultRoom.MultipleObjectsReturned</a>
|
||||
|
|
@ -5617,6 +5659,8 @@
|
|||
<li><a href="api/evennia.commands.cmdsethandler.html#evennia.commands.cmdsethandler.CmdSetHandler.delete">(evennia.commands.cmdsethandler.CmdSetHandler method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.delete">(evennia.comms.comms.DefaultChannel method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.delete">(evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.full_systems.evscaperoom.room.html#evennia.contrib.full_systems.evscaperoom.room.EvscapeRoom.delete">(evennia.contrib.full_systems.evscaperoom.room.EvscapeRoom method)</a>
|
||||
</li>
|
||||
|
|
@ -6152,14 +6196,20 @@
|
|||
<li><a href="api/evennia.server.portal.telnet_oob.html#evennia.server.portal.telnet_oob.TelnetOOB.encode_gmcp">encode_gmcp() (evennia.server.portal.telnet_oob.TelnetOOB method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.telnet_oob.html#evennia.server.portal.telnet_oob.TelnetOOB.encode_msdp">encode_msdp() (evennia.server.portal.telnet_oob.TelnetOOB method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.encryption">encryption (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.talking_npc.talking_npc.html#evennia.contrib.tutorials.talking_npc.talking_npc.END">END() (in module evennia.contrib.tutorials.talking_npc.talking_npc)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.endpoint_url">endpoint_url (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIString.endswith">endswith() (evennia.utils.ansi.ANSIString method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.building_menu.building_menu.html#evennia.contrib.base_systems.building_menu.building_menu.Choice.enter">enter() (evennia.contrib.base_systems.building_menu.building_menu.Choice method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.grid.wilderness.wilderness.html#evennia.contrib.grid.wilderness.wilderness.enter_wilderness">enter_wilderness() (in module evennia.contrib.grid.wilderness.wilderness)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.entries">entries() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.help.filehelp.html#evennia.help.filehelp.FileHelpEntry.entrytext">entrytext (evennia.help.filehelp.FileHelpEntry attribute)</a>
|
||||
</li>
|
||||
|
|
@ -6668,6 +6718,13 @@
|
|||
|
||||
<ul>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.html#module-evennia.contrib.base_systems.awsstorage">module</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li>
|
||||
evennia.contrib.base_systems.awsstorage.aws_s3_cdn
|
||||
|
||||
<ul>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#module-evennia.contrib.base_systems.awsstorage.aws_s3_cdn">module</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li>
|
||||
|
|
@ -7762,6 +7819,8 @@
|
|||
<li><a href="api/evennia.contrib.tutorials.evadventure.combat_base.html#module-evennia.contrib.tutorials.evadventure.combat_base">module</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li>
|
||||
evennia.contrib.tutorials.evadventure.combat_turnbased
|
||||
|
||||
|
|
@ -7769,8 +7828,6 @@
|
|||
<li><a href="api/evennia.contrib.tutorials.evadventure.combat_turnbased.html#module-evennia.contrib.tutorials.evadventure.combat_turnbased">module</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li>
|
||||
evennia.contrib.tutorials.evadventure.combat_twitch
|
||||
|
||||
|
|
@ -9470,9 +9527,11 @@
|
|||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.utils.random_string_generator.random_string_generator.html#evennia.contrib.utils.random_string_generator.random_string_generator.ExhaustedGenerator">ExhaustedGenerator</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.scripts.taskhandler.html#evennia.scripts.taskhandler.TaskHandler.exists">exists() (evennia.scripts.taskhandler.TaskHandler method)</a>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.exists">exists() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="api/evennia.scripts.taskhandler.html#evennia.scripts.taskhandler.TaskHandler.exists">(evennia.scripts.taskhandler.TaskHandler method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.scripts.taskhandler.html#evennia.scripts.taskhandler.TaskHandlerTask.exists">(evennia.scripts.taskhandler.TaskHandlerTask method)</a>, <a href="api/evennia.scripts.taskhandler.html#id7">[1]</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
|
|
@ -9662,6 +9721,12 @@
|
|||
<li><a href="api/evennia.web.admin.tags.html#evennia.web.admin.tags.TagAdmin.fieldsets">(evennia.web.admin.tags.TagAdmin attribute)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.file">file() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.file_name_charset">file_name_charset (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.file_overwrite">file_overwrite (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.help.filehelp.html#evennia.help.filehelp.FileHelpEntry">FileHelpEntry (class in evennia.help.filehelp)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.help.filehelp.html#evennia.help.filehelp.FileHelpStorageHandler">FileHelpStorageHandler (class in evennia.help.filehelp)</a>
|
||||
|
|
@ -10723,6 +10788,10 @@
|
|||
<li><a href="api/evennia.web.api.serializers.html#evennia.web.api.serializers.TypeclassSerializerMixin.get_attributes">get_attributes() (evennia.web.api.serializers.TypeclassSerializerMixin static method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.get_available_character_slots">get_available_character_slots() (evennia.accounts.accounts.DefaultAccount method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_available_name">get_available_name() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.get_available_overwrite_name">get_available_overwrite_name() (in module evennia.contrib.base_systems.awsstorage.aws_s3_cdn)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.evadventure.objects.html#evennia.contrib.tutorials.evadventure.objects.get_bare_hands">get_bare_hands() (in module evennia.contrib.tutorials.evadventure.objects)</a>
|
||||
</li>
|
||||
|
|
@ -11137,6 +11206,8 @@
|
|||
<li><a href="api/evennia.utils.evtable.html#evennia.utils.evtable.EvCell.get_min_height">get_min_height() (evennia.utils.evtable.EvCell method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.evtable.html#evennia.utils.evtable.EvCell.get_min_width">get_min_width() (evennia.utils.evtable.EvCell method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_modified_time">get_modified_time() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.rss.html#evennia.server.portal.rss.RSSReader.get_new">get_new() (evennia.server.portal.rss.RSSReader method)</a>
|
||||
</li>
|
||||
|
|
@ -11194,6 +11265,8 @@
|
|||
<li><a href="api/evennia.web.website.views.objects.html#evennia.web.website.views.objects.ObjectDetailView.get_object">(evennia.web.website.views.objects.ObjectDetailView method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.get_object_parameters">get_object_parameters() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.commands.default.building.html#evennia.commands.default.building.ObjManipCommand.get_object_typeclass">get_object_typeclass() (evennia.commands.default.building.ObjManipCommand method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.objects.manager.html#evennia.objects.manager.ObjectDBManager.get_object_with_account">get_object_with_account() (evennia.objects.manager.ObjectDBManager method)</a>
|
||||
|
|
@ -11487,6 +11560,10 @@
|
|||
<li><a href="api/evennia.utils.utils.html#evennia.utils.utils.group_objects_by_key_and_desc">group_objects_by_key_and_desc() (in module evennia.utils.utils)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.accounts.models.html#evennia.accounts.models.AccountDB.groups">groups (evennia.accounts.models.AccountDB attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.gzip">gzip (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.gzip_content_types">gzip_content_types (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
|
@ -13735,6 +13812,8 @@
|
|||
<li><a href="api/evennia.contrib.base_systems.ingame_python.commands.html#evennia.contrib.base_systems.ingame_python.commands.CmdCallback.list_tasks">list_tasks() (evennia.contrib.base_systems.ingame_python.commands.CmdCallback method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.utils.html#evennia.utils.utils.list_to_string">list_to_string() (in module evennia.utils.utils)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.listdir">listdir() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.full_systems.evscaperoom.objects.html#evennia.contrib.full_systems.evscaperoom.objects.Listenable">Listenable (class in evennia.contrib.full_systems.evscaperoom.objects)</a>
|
||||
</li>
|
||||
|
|
@ -13791,6 +13870,8 @@
|
|||
<li><a href="api/evennia.server.session.html#evennia.server.session.Session.load_sync_data">load_sync_data() (evennia.server.session.Session method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.amp.html#evennia.server.portal.amp.loads">loads() (in module evennia.server.portal.amp)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.location">location (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.objects.models.html#evennia.objects.models.ObjectDB.location">location() (evennia.objects.models.ObjectDB property)</a>
|
||||
</li>
|
||||
|
|
@ -14887,6 +14968,8 @@
|
|||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.grid.extended_room.extended_room.html#evennia.contrib.grid.extended_room.extended_room.CmdExtendedRoomLook.look_detail">look_detail() (evennia.contrib.grid.extended_room.extended_room.CmdExtendedRoomLook method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.lookup_env">lookup_env() (in module evennia.contrib.base_systems.awsstorage.aws_s3_cdn)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIString.lower">lower() (evennia.utils.ansi.ANSIString method)</a>
|
||||
</li>
|
||||
|
|
@ -15029,6 +15112,8 @@
|
|||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.rpg.llm.llm_npc.html#evennia.contrib.rpg.llm.llm_npc.LLMNPC.max_chat_memory_size">max_chat_memory_size (evennia.contrib.rpg.llm.llm_npc.LLMNPC attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.max_memory_size">max_memory_size (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.evadventure.dungeon.html#evennia.contrib.tutorials.evadventure.dungeon.EvAdventureDungeonBranch.max_new_exits_per_room">max_new_exits_per_room (evennia.contrib.tutorials.evadventure.dungeon.EvAdventureDungeonBranch attribute)</a>
|
||||
</li>
|
||||
|
|
@ -15391,6 +15476,8 @@
|
|||
<li><a href="api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.ModelAttributeBackend">ModelAttributeBackend (class in evennia.typeclasses.attributes)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.web.admin.comms.html#evennia.web.admin.comms.MsgForm.Meta.models">models (evennia.web.admin.comms.MsgForm.Meta attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.modified_time">modified_time() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.rpg.buffs.buff.html#evennia.contrib.rpg.buffs.buff.Mod.modifier">modifier (evennia.contrib.rpg.buffs.buff.Mod attribute)</a>
|
||||
</li>
|
||||
|
|
@ -15475,6 +15562,8 @@
|
|||
<li><a href="api/evennia.contrib.base_systems.html#module-evennia.contrib.base_systems">evennia.contrib.base_systems</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.html#module-evennia.contrib.base_systems.awsstorage">evennia.contrib.base_systems.awsstorage</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#module-evennia.contrib.base_systems.awsstorage.aws_s3_cdn">evennia.contrib.base_systems.awsstorage.aws_s3_cdn</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.tests.html#module-evennia.contrib.base_systems.awsstorage.tests">evennia.contrib.base_systems.awsstorage.tests</a>
|
||||
</li>
|
||||
|
|
@ -16940,6 +17029,8 @@
|
|||
<li><a href="api/evennia.scripts.models.html#evennia.scripts.models.ScriptDB.object">object() (evennia.scripts.models.ScriptDB property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.utils.html#evennia.utils.utils.object_from_module">object_from_module() (in module evennia.utils.utils)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.object_parameters">object_parameters (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.objects.manager.html#evennia.objects.manager.ObjectDBManager.object_search">object_search() (evennia.objects.manager.ObjectDBManager method)</a>
|
||||
</li>
|
||||
|
|
@ -18056,6 +18147,8 @@
|
|||
<li><a href="api/evennia.utils.picklefield.html#evennia.utils.picklefield.PickledObjectField.pre_save">pre_save() (evennia.utils.picklefield.PickledObjectField method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.pre_send_message">pre_send_message() (evennia.comms.comms.DefaultChannel method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.preload_metadata">preload_metadata (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.grid.wilderness.wilderness.html#evennia.contrib.grid.wilderness.wilderness.WildernessScript.preserve_items">preserve_items (evennia.contrib.grid.wilderness.wilderness.WildernessScript attribute)</a>
|
||||
</li>
|
||||
|
|
@ -18204,6 +18297,8 @@
|
|||
<li><a href="api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.prototype_to_str">prototype_to_str() (in module evennia.prototypes.prototypes)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.PrototypeEvMore">PrototypeEvMore (class in evennia.prototypes.prototypes)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.proxies">proxies (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.utils.git_integration.git_integration.html#evennia.contrib.utils.git_integration.git_integration.GitCommand.pull">pull() (evennia.contrib.utils.git_integration.git_integration.GitCommand method)</a>
|
||||
</li>
|
||||
|
|
@ -18294,6 +18389,10 @@
|
|||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.utils.evmore.html#evennia.utils.evmore.queryset_maxsize">queryset_maxsize() (in module evennia.utils.evmore)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.querystring_auth">querystring_auth (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.querystring_expire">querystring_expire (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.evadventure.enums.html#evennia.contrib.tutorials.evadventure.enums.ObjType.QUEST">QUEST (evennia.contrib.tutorials.evadventure.enums.ObjType attribute)</a>
|
||||
</li>
|
||||
|
|
@ -18396,6 +18495,8 @@
|
|||
<li><a href="api/evennia.utils.text2html.html#evennia.utils.text2html.TextToHTMLparser.re_url">re_url (evennia.utils.text2html.TextToHTMLparser attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.text2html.html#evennia.utils.text2html.TextToHTMLparser.re_valid_no_protocol">re_valid_no_protocol (evennia.utils.text2html.TextToHTMLparser attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.read">read() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.batchprocessors.html#evennia.utils.batchprocessors.read_batchfile">read_batchfile() (in module evennia.utils.batchprocessors)</a>
|
||||
</li>
|
||||
|
|
@ -18424,6 +18525,8 @@
|
|||
<li><a href="api/evennia.contrib.full_systems.evscaperoom.objects.html#evennia.contrib.full_systems.evscaperoom.objects.Readable.DoesNotExist">Readable.DoesNotExist</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.full_systems.evscaperoom.objects.html#evennia.contrib.full_systems.evscaperoom.objects.Readable.MultipleObjectsReturned">Readable.MultipleObjectsReturned</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.readline">readline() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.logger.html#evennia.utils.logger.EvenniaLogFile.readlines">readlines() (evennia.utils.logger.EvenniaLogFile method)</a>
|
||||
</li>
|
||||
|
|
@ -18496,6 +18599,8 @@
|
|||
<li><a href="api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.RedButton.DoesNotExist">RedButton.DoesNotExist</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.RedButton.MultipleObjectsReturned">RedButton.MultipleObjectsReturned</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.reduced_redundancy">reduced_redundancy (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.evtable.html#evennia.utils.evtable.EvCell.reformat">reformat() (evennia.utils.evtable.EvCell method)</a>
|
||||
|
||||
|
|
@ -18516,6 +18621,8 @@
|
|||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.tutorials.evadventure.objects.html#evennia.contrib.tutorials.evadventure.objects.EvAdventureRunestone.refresh">refresh() (evennia.contrib.tutorials.evadventure.objects.EvAdventureRunestone method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.region_name">region_name (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.service.html#evennia.server.portal.service.EvenniaPortalService.register_amp">register_amp() (evennia.server.portal.service.EvenniaPortalService method)</a>
|
||||
|
||||
|
|
@ -18745,6 +18852,8 @@
|
|||
</li>
|
||||
<li><a href="api/evennia.scripts.models.html#evennia.scripts.models.ScriptDB.repeats">repeats() (evennia.scripts.models.ScriptDB property)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.locks.lockhandler.html#evennia.locks.lockhandler.LockHandler.replace">replace() (evennia.locks.lockhandler.LockHandler method)</a>
|
||||
|
||||
<ul>
|
||||
|
|
@ -18753,8 +18862,6 @@
|
|||
<li><a href="api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIString.replace">(evennia.utils.ansi.ANSIString method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.utils.evtable.html#evennia.utils.evtable.EvCell.replace_data">replace_data() (evennia.utils.evtable.EvCell method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.grid.extended_room.extended_room.html#evennia.contrib.grid.extended_room.extended_room.ExtendedRoom.replace_legacy_time_of_day_markup">replace_legacy_time_of_day_markup() (evennia.contrib.grid.extended_room.extended_room.ExtendedRoom method)</a>
|
||||
|
|
@ -19173,11 +19280,17 @@
|
|||
<h2 id="S">S</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage">S3Boto3Storage (class in evennia.contrib.base_systems.awsstorage.aws_s3_cdn)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile">S3Boto3StorageFile (class in evennia.contrib.base_systems.awsstorage.aws_s3_cdn)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests">S3Boto3StorageTests (class in evennia.contrib.base_systems.awsstorage.tests)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3TestCase">S3Boto3TestCase (class in evennia.contrib.base_systems.awsstorage.tests)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.utils.html#evennia.utils.utils.safe_convert_to_types">safe_convert_to_types() (in module evennia.utils.utils)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.safe_join">safe_join() (in module evennia.contrib.base_systems.awsstorage.aws_s3_cdn)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.rpg.buffs.samplebuffs.html#evennia.contrib.rpg.buffs.samplebuffs.Sated">Sated (class in evennia.contrib.rpg.buffs.samplebuffs)</a>
|
||||
</li>
|
||||
|
|
@ -20040,8 +20153,18 @@
|
|||
<li><a href="api/evennia.contrib.grid.extended_room.extended_room.html#evennia.contrib.grid.extended_room.extended_room.ExtendedRoom.seasons_per_year">seasons_per_year (evennia.contrib.grid.extended_room.extended_room.ExtendedRoom attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.logger.html#evennia.utils.logger.sec">sec() (in module evennia.utils.logger)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secret_key">secret_key (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secret_key_names">secret_key_names (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.secure_urls">secure_urls (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.logger.html#evennia.utils.logger.security">security() (in module evennia.utils.logger)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.security_token">security_token (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.security_token_names">security_token_names (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.game_systems.crafting.crafting.html#evennia.contrib.game_systems.crafting.crafting.CraftingRecipe.seed">seed() (evennia.contrib.game_systems.crafting.crafting.CraftingRecipe class method)</a>
|
||||
</li>
|
||||
|
|
@ -20181,6 +20304,8 @@
|
|||
<li><a href="api/evennia.utils.optionclasses.html#evennia.utils.optionclasses.Timezone.serialize">(evennia.utils.optionclasses.Timezone method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.web.admin.accounts.html#evennia.web.admin.accounts.AccountAdmin.serialized_string">serialized_string() (evennia.web.admin.accounts.AccountAdmin method)</a>
|
||||
|
||||
<ul>
|
||||
|
|
@ -20193,8 +20318,6 @@
|
|||
<li><a href="api/evennia.web.admin.scripts.html#evennia.web.admin.scripts.ScriptAdmin.serialized_string">(evennia.web.admin.scripts.ScriptAdmin method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.web.api.views.html#evennia.web.api.views.AccountDBViewSet.serializer_class">serializer_class (evennia.web.api.views.AccountDBViewSet attribute)</a>
|
||||
|
||||
<ul>
|
||||
|
|
@ -20358,6 +20481,8 @@
|
|||
<li><a href="api/evennia.contrib.game_systems.gendersub.gendersub.html#evennia.contrib.game_systems.gendersub.gendersub.SetGender">SetGender (class in evennia.contrib.game_systems.gendersub.gendersub)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.grid.simpledoor.simpledoor.html#evennia.contrib.grid.simpledoor.simpledoor.SimpleDoor.setlock">setlock() (evennia.contrib.grid.simpledoor.simpledoor.SimpleDoor method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.setting">setting() (in module evennia.contrib.base_systems.awsstorage.aws_s3_cdn)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.logger.html#evennia.utils.logger.EvenniaLogFile.settings">settings (evennia.utils.logger.EvenniaLogFile attribute)</a>
|
||||
</li>
|
||||
|
|
@ -20582,6 +20707,8 @@
|
|||
<li><a href="api/evennia.contrib.base_systems.components.holder.html#evennia.contrib.base_systems.components.holder.ComponentHolderMixin.signals">signals() (evennia.contrib.base_systems.components.holder.ComponentHolderMixin property)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.components.signals.html#evennia.contrib.base_systems.components.signals.SignalsHandler">SignalsHandler (class in evennia.contrib.base_systems.components.signals)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.signature_version">signature_version (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.validatorfuncs.html#evennia.utils.validatorfuncs.signed_integer">signed_integer() (in module evennia.utils.validatorfuncs)</a>
|
||||
</li>
|
||||
|
|
@ -20625,6 +20752,12 @@
|
|||
<li><a href="api/evennia.contrib.tutorials.evadventure.objects.html#evennia.contrib.tutorials.evadventure.objects.EvAdventureObject.size">(evennia.contrib.tutorials.evadventure.objects.EvAdventureObject attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.evadventure.shops.html#evennia.contrib.tutorials.evadventure.shops.BuyItem.size">(evennia.contrib.tutorials.evadventure.shops.BuyItem attribute)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.size">size() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.size">(evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile property)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.game_systems.crafting.example_recipes.html#evennia.contrib.game_systems.crafting.example_recipes.FireballRecipe.skill_requirements">skill_requirements (evennia.contrib.game_systems.crafting.example_recipes.FireballRecipe attribute)</a>
|
||||
|
|
@ -24783,10 +24916,10 @@
|
|||
</li>
|
||||
<li><a href="api/evennia.utils.idmapper.models.html#evennia.utils.idmapper.models.update_cached_instance">update_cached_instance() (in module evennia.utils.idmapper.models)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.server.service.html#evennia.server.service.EvenniaServerService.update_defaults">update_defaults() (evennia.server.service.EvenniaServerService method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
<li><a href="api/evennia.server.serversession.html#evennia.server.serversession.ServerSession.update_flags">update_flags() (evennia.server.serversession.ServerSession method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.web.api.permissions.html#evennia.web.api.permissions.EvenniaPermission.update_locks">update_locks (evennia.web.api.permissions.EvenniaPermission attribute)</a>
|
||||
|
|
@ -24816,6 +24949,8 @@
|
|||
<li><a href="api/evennia.contrib.tutorials.evadventure.npcs.html#evennia.contrib.tutorials.evadventure.npcs.EvAdventureShopKeeper.upsell_factor">upsell_factor (evennia.contrib.tutorials.evadventure.npcs.EvAdventureShopKeeper attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.gametime.html#evennia.utils.gametime.uptime">uptime() (in module evennia.utils.gametime)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.url">url() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.godotwebsocket.text2bbcode.html#evennia.contrib.base_systems.godotwebsocket.text2bbcode.UrlTag.url_data">url_data (evennia.contrib.base_systems.godotwebsocket.text2bbcode.UrlTag attribute)</a>
|
||||
</li>
|
||||
|
|
@ -24859,6 +24994,8 @@
|
|||
<li><a href="api/evennia.web.website.tests.html#evennia.web.website.tests.WebclientTest.url_name">(evennia.web.website.tests.WebclientTest attribute)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.url_protocol">url_protocol (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.godotwebsocket.text2bbcode.html#evennia.contrib.base_systems.godotwebsocket.text2bbcode.UrlTag">UrlTag (class in evennia.contrib.base_systems.godotwebsocket.text2bbcode)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.full_systems.evscaperoom.objects.html#evennia.contrib.full_systems.evscaperoom.objects.Usable">Usable (class in evennia.contrib.full_systems.evscaperoom.objects)</a>
|
||||
|
|
@ -24878,6 +25015,8 @@
|
|||
<li><a href="api/evennia.contrib.game_systems.turnbattle.tb_items.html#evennia.contrib.game_systems.turnbattle.tb_items.ItemCombatRules.use_item">use_item() (evennia.contrib.game_systems.turnbattle.tb_items.ItemCombatRules method)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.tutorials.evadventure.shops.html#evennia.contrib.tutorials.evadventure.shops.BuyItem.use_slot">use_slot (evennia.contrib.tutorials.evadventure.shops.BuyItem attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.use_ssl">use_ssl (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.web.admin.accounts.html#evennia.web.admin.accounts.AccountAdmin.user_change_password">user_change_password() (evennia.web.admin.accounts.AccountAdmin method)</a>
|
||||
</li>
|
||||
|
|
@ -25051,6 +25190,8 @@
|
|||
<li><a href="api/evennia.web.admin.tags.html#evennia.web.admin.tags.TagInline.verbose_name_plural">(evennia.web.admin.tags.TagInline attribute)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage.verify">verify (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3Storage attribute)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.contrib.utils.fieldfill.fieldfill.html#evennia.contrib.utils.fieldfill.fieldfill.verify_online_player">verify_online_player() (in module evennia.contrib.utils.fieldfill.fieldfill)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.server.portal.telnet_ssl.html#evennia.server.portal.telnet_ssl.verify_or_create_SSL_key_and_cert">verify_or_create_SSL_key_and_cert() (in module evennia.server.portal.telnet_ssl)</a>
|
||||
|
|
@ -25273,8 +25414,12 @@
|
|||
</ul></li>
|
||||
<li><a href="api/evennia.utils.picklefield.html#evennia.utils.picklefield.wrap_conflictual_object">wrap_conflictual_object() (in module evennia.utils.picklefield)</a>
|
||||
</li>
|
||||
<li><a href="api/evennia.utils.logger.html#evennia.utils.logger.WeeklyLogFile.write">write() (evennia.utils.logger.WeeklyLogFile method)</a>
|
||||
<li><a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile.write">write() (evennia.contrib.base_systems.awsstorage.aws_s3_cdn.S3Boto3StorageFile method)</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="api/evennia.utils.logger.html#evennia.utils.logger.WeeklyLogFile.write">(evennia.utils.logger.WeeklyLogFile method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="api/evennia.server.webserver.html#evennia.server.webserver.WSGIWebServer">WSGIWebServer (class in evennia.server.webserver)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -277,6 +277,11 @@
|
|||
<td>   
|
||||
<a href="api/evennia.contrib.base_systems.awsstorage.html#module-evennia.contrib.base_systems.awsstorage"><code class="xref">evennia.contrib.base_systems.awsstorage</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="api/evennia.contrib.base_systems.awsstorage.aws_s3_cdn.html#module-evennia.contrib.base_systems.awsstorage.aws_s3_cdn"><code class="xref">evennia.contrib.base_systems.awsstorage.aws_s3_cdn</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue