mirror of
https://github.com/evennia/evennia.git
synced 2026-04-04 15:07:16 +02:00
Updated HTML docs
This commit is contained in:
parent
781788f2e5
commit
76bce04295
170 changed files with 6650 additions and 1911 deletions
|
|
@ -490,13 +490,17 @@
|
|||
<span class="c1"># Stopped at breakpoint. Press 'n' to continue into the code.</span>
|
||||
<span class="n">dbg</span><span class="o">.</span><span class="n">set_trace</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<span class="c1"># initialize the doc string</span>
|
||||
<span class="k">global</span> <span class="vm">__doc__</span>
|
||||
<span class="vm">__doc__</span> <span class="o">=</span> <span class="n">DOCSTRING</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">- "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">- "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"evennia.</span><span class="si">{key}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">globals</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span>
|
||||
<span class="ow">and</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DOCSTRING"</span><span class="p">,</span> <span class="p">)))</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">- "</span>
|
||||
<span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">- "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"evennia.</span><span class="si">{key}</span><span class="s2">"</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">globals</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DOCSTRING"</span><span class="p">,)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -692,6 +692,53 @@
|
|||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="n">f</span><span class="s2">"Password successfully changed for </span><span class="si">{self}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_password_change</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.create_character"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.create_character">[docs]</a> <span class="k">def</span> <span class="nf">create_character</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="sd">"""</span>
|
||||
<span class="sd"> Create a character linked to this account.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> key (str, optional): If not given, use the same name as the account.</span>
|
||||
<span class="sd"> typeclass (str, optional): Typeclass to use for this character. If</span>
|
||||
<span class="sd"> not given, use settings.BASE_CHARACTER_TYPECLASS.</span>
|
||||
<span class="sd"> permissions (list, optional): If not given, use the account's permissions.</span>
|
||||
<span class="sd"> ip (str, optiona): The client IP creating this character. Will fall back to the</span>
|
||||
<span class="sd"> one stored for the account if not given.</span>
|
||||
<span class="sd"> kwargs (any): Other kwargs will be used in the create_call.</span>
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> Object: A new character of the `character_typeclass` type. None on an error.</span>
|
||||
<span class="sd"> list or None: A list of errors, or None.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># parse inputs</span>
|
||||
<span class="n">character_key</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="n">character_ip</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"ip"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">creator_ip</span><span class="p">)</span>
|
||||
<span class="n">character_permissions</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"permissions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">permissions</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Load the appropriate Character class</span>
|
||||
<span class="n">character_typeclass</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"typeclass"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">character_typeclass</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">character_typeclass</span> <span class="k">if</span> <span class="n">character_typeclass</span> <span class="k">else</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">Character</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">character_typeclass</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Create the character</span>
|
||||
<span class="n">character</span><span class="p">,</span> <span class="n">errs</span> <span class="o">=</span> <span class="n">Character</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
|
||||
<span class="n">character_key</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">ip</span><span class="o">=</span><span class="n">character_ip</span><span class="p">,</span>
|
||||
<span class="n">typeclass</span><span class="o">=</span><span class="n">character_typeclass</span><span class="p">,</span>
|
||||
<span class="n">permissions</span><span class="o">=</span><span class="n">character_permissions</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">character</span><span class="p">:</span>
|
||||
<span class="c1"># Update playable character list</span>
|
||||
<span class="k">if</span> <span class="n">character</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">characters</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">character</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># We need to set this to have @ic auto-connect to this character</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="o">=</span> <span class="n">character</span>
|
||||
<span class="k">return</span> <span class="n">character</span><span class="p">,</span> <span class="n">errs</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.create"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.create">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">create</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="sd">"""</span>
|
||||
|
|
@ -800,31 +847,13 @@
|
|||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">account</span> <span class="ow">and</span> <span class="n">settings</span><span class="o">.</span><span class="n">MULTISESSION_MODE</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="c1"># Load the appropriate Character class</span>
|
||||
<span class="n">character_typeclass</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"character_typeclass"</span><span class="p">,</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span>
|
||||
<span class="c1"># Auto-create a character to go with this account</span>
|
||||
|
||||
<span class="n">character</span><span class="p">,</span> <span class="n">errs</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">create_character</span><span class="p">(</span>
|
||||
<span class="n">typeclass</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"character_typeclass"</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">character_home</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"home"</span><span class="p">)</span>
|
||||
<span class="n">Character</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">character_typeclass</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Create the character</span>
|
||||
<span class="n">character</span><span class="p">,</span> <span class="n">errs</span> <span class="o">=</span> <span class="n">Character</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">account</span><span class="p">,</span>
|
||||
<span class="n">ip</span><span class="o">=</span><span class="n">ip</span><span class="p">,</span>
|
||||
<span class="n">typeclass</span><span class="o">=</span><span class="n">character_typeclass</span><span class="p">,</span>
|
||||
<span class="n">permissions</span><span class="o">=</span><span class="n">permissions</span><span class="p">,</span>
|
||||
<span class="n">home</span><span class="o">=</span><span class="n">character_home</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">errs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">character</span><span class="p">:</span>
|
||||
<span class="c1"># Update playable character list</span>
|
||||
<span class="k">if</span> <span class="n">character</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">account</span><span class="o">.</span><span class="n">characters</span><span class="p">:</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">character</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># We need to set this to have @ic auto-connect to this character</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="o">=</span> <span class="n">character</span>
|
||||
<span class="k">if</span> <span class="n">errs</span><span class="p">:</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">errs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="c1"># We are in the middle between logged in and -not, so we have</span>
|
||||
|
|
@ -961,6 +990,7 @@
|
|||
<span class="n">nofound_string</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">multimatch_string</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">use_nicks</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">quiet</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -987,9 +1017,13 @@
|
|||
<span class="sd"> message to echo if `searchdata` leads to multiple matches.</span>
|
||||
<span class="sd"> If not given, will fall back to the default handler.</span>
|
||||
<span class="sd"> use_nicks (bool, optional): Use account-level nick replacement.</span>
|
||||
<span class="sd"> quiet (bool, optional): If set, will not show any error to the user,</span>
|
||||
<span class="sd"> and will also lead to returning a list of matches.</span>
|
||||
|
||||
<span class="sd"> Return:</span>
|
||||
<span class="sd"> match (Account, Object or None): A single Account or Object match.</span>
|
||||
<span class="sd"> list: If `quiet=True` this is a list of 0, 1 or more Account or Object matches.</span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> Extra keywords are ignored, but are allowed in call in</span>
|
||||
<span class="sd"> order to make API more consistent with</span>
|
||||
|
|
@ -1001,28 +1035,31 @@
|
|||
<span class="c1"># handle wrapping of common terms</span>
|
||||
<span class="k">if</span> <span class="n">searchdata</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"me"</span><span class="p">,</span> <span class="s2">"*me"</span><span class="p">,</span> <span class="s2">"self"</span><span class="p">,</span> <span class="s2">"*self"</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
<span class="k">if</span> <span class="n">search_object</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">object_search</span><span class="p">(</span>
|
||||
<span class="n">searchdata</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span><span class="p">,</span> <span class="n">use_nicks</span><span class="o">=</span><span class="n">use_nicks</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">searchdata</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span>
|
||||
<span class="n">searchdata</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"account"</span><span class="p">,),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">False</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">account_search</span><span class="p">(</span><span class="n">searchdata</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">_AT_SEARCH_RESULT</span><span class="p">(</span>
|
||||
<span class="n">matches</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">query</span><span class="o">=</span><span class="n">searchdata</span><span class="p">,</span>
|
||||
<span class="n">nofound_string</span><span class="o">=</span><span class="n">nofound_string</span><span class="p">,</span>
|
||||
<span class="n">multimatch_string</span><span class="o">=</span><span class="n">multimatch_string</span><span class="p">,</span>
|
||||
<span class="n">searchdata</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span>
|
||||
<span class="n">searchdata</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"account"</span><span class="p">,),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">False</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">matches</span> <span class="ow">and</span> <span class="n">return_puppet</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">matches</span><span class="o">.</span><span class="n">puppet</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="n">search_object</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">object_search</span><span class="p">(</span><span class="n">searchdata</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">account_search</span><span class="p">(</span><span class="n">searchdata</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">quiet</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">matches</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">return_puppet</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="p">[</span><span class="n">match</span><span class="o">.</span><span class="n">puppet</span> <span class="k">for</span> <span class="n">match</span> <span class="ow">in</span> <span class="n">matches</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">_AT_SEARCH_RESULT</span><span class="p">(</span>
|
||||
<span class="n">matches</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">query</span><span class="o">=</span><span class="n">searchdata</span><span class="p">,</span>
|
||||
<span class="n">nofound_string</span><span class="o">=</span><span class="n">nofound_string</span><span class="p">,</span>
|
||||
<span class="n">multimatch_string</span><span class="o">=</span><span class="n">multimatch_string</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">matches</span> <span class="ow">and</span> <span class="n">return_puppet</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">matches</span><span class="o">.</span><span class="n">puppet</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">matches</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.access"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.access">[docs]</a> <span class="k">def</span> <span class="nf">access</span><span class="p">(</span>
|
||||
|
|
@ -1589,7 +1626,7 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c1"># Find an available guest name.</span>
|
||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">settings</span><span class="o">.</span><span class="n">GUEST_LIST</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">AccountDB</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">username__iexact</span><span class="o">=</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">AccountDB</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">username__iexact</span><span class="o">=</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
||||
<span class="n">username</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="k">break</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">username</span><span class="p">:</span>
|
||||
|
|
@ -1615,6 +1652,15 @@
|
|||
<span class="n">ip</span><span class="o">=</span><span class="n">ip</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">errs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">characters</span><span class="p">:</span>
|
||||
<span class="c1"># this can happen for multisession_mode > 1. For guests we</span>
|
||||
<span class="c1"># always auto-create a character, regardless of multi-session-mode.</span>
|
||||
<span class="n">character</span><span class="p">,</span> <span class="n">errs</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">create_character</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">errs</span><span class="p">:</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">errs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">account</span><span class="p">,</span> <span class="n">errors</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>
|
||||
|
|
|
|||
|
|
@ -45,13 +45,26 @@
|
|||
<span class="c1">#</span>
|
||||
<span class="kn">from</span> <span class="nn">django</span> <span class="k">import</span> <span class="n">forms</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="k">import</span> <span class="n">admin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="k">import</span> <span class="n">admin</span><span class="p">,</span> <span class="n">messages</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.options</span> <span class="k">import</span> <span class="n">IS_POPUP_VAR</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.admin</span> <span class="k">import</span> <span class="n">UserAdmin</span> <span class="k">as</span> <span class="n">BaseUserAdmin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.forms</span> <span class="k">import</span> <span class="n">UserChangeForm</span><span class="p">,</span> <span class="n">UserCreationForm</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.utils</span> <span class="k">import</span> <span class="n">unquote</span>
|
||||
<span class="kn">from</span> <span class="nn">django.template.response</span> <span class="k">import</span> <span class="n">TemplateResponse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">Http404</span><span class="p">,</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">PermissionDenied</span>
|
||||
<span class="kn">from</span> <span class="nn">django.views.decorators.debug</span> <span class="k">import</span> <span class="n">sensitive_post_parameters</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.decorators</span> <span class="k">import</span> <span class="n">method_decorator</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.html</span> <span class="k">import</span> <span class="n">escape</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="k">import</span> <span class="n">path</span><span class="p">,</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">update_session_auth_hash</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.admin</span> <span class="k">import</span> <span class="n">AttributeInline</span><span class="p">,</span> <span class="n">TagInline</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span>
|
||||
|
||||
<span class="n">sensitive_post_parameters_m</span> <span class="o">=</span> <span class="n">method_decorator</span><span class="p">(</span><span class="n">sensitive_post_parameters</span><span class="p">())</span>
|
||||
|
||||
|
||||
<span class="c1"># handle the custom User editor</span>
|
||||
<div class="viewcode-block" id="AccountDBChangeForm"><a class="viewcode-back" href="../../../api/evennia.accounts.admin.html#evennia.accounts.admin.AccountDBChangeForm">[docs]</a><span class="k">class</span> <span class="nc">AccountDBChangeForm</span><span class="p">(</span><span class="n">UserChangeForm</span><span class="p">):</span>
|
||||
|
|
@ -128,7 +141,8 @@
|
|||
|
||||
<div class="viewcode-block" id="AccountForm.Meta"><a class="viewcode-back" href="../../../api/evennia.accounts.admin.html#evennia.accounts.admin.AccountForm.Meta">[docs]</a> <span class="k">class</span> <span class="nc">Meta</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">AccountDB</span>
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="s2">"__all__"</span></div>
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="s2">"__all__"</span>
|
||||
<span class="n">app_label</span> <span class="o">=</span> <span class="s2">"accounts"</span></div>
|
||||
|
||||
<span class="n">db_key</span> <span class="o">=</span> <span class="n">forms</span><span class="o">.</span><span class="n">RegexField</span><span class="p">(</span>
|
||||
<span class="n">label</span><span class="o">=</span><span class="s2">"Username"</span><span class="p">,</span>
|
||||
|
|
@ -300,6 +314,70 @@
|
|||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="AccountDBAdmin.user_change_password"><a class="viewcode-back" href="../../../api/evennia.accounts.admin.html#evennia.accounts.admin.AccountDBAdmin.user_change_password">[docs]</a> <span class="nd">@sensitive_post_parameters_m</span>
|
||||
<span class="k">def</span> <span class="nf">user_change_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">form_url</span><span class="o">=</span><span class="s2">""</span><span class="p">):</span>
|
||||
<span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_object</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">unquote</span><span class="p">(</span><span class="nb">id</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">has_change_permission</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">user</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">PermissionDenied</span>
|
||||
<span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Http404</span><span class="p">(</span><span class="s2">"</span><span class="si">%(name)s</span><span class="s2"> object with primary key </span><span class="si">%(key)r</span><span class="s2"> does not exist."</span><span class="p">)</span> <span class="o">%</span> <span class="p">{</span>
|
||||
<span class="s2">"name"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">verbose_name</span><span class="p">,</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="n">escape</span><span class="p">(</span><span class="nb">id</span><span class="p">),</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span>
|
||||
<span class="n">form</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">change_password_form</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span>
|
||||
<span class="n">form</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="n">change_message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">construct_change_message</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">log_change</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">change_message</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"Password changed successfully."</span>
|
||||
<span class="n">messages</span><span class="o">.</span><span class="n">success</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
|
||||
<span class="n">update_session_auth_hash</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">form</span><span class="o">.</span><span class="n">user</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span>
|
||||
<span class="n">reverse</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s</span><span class="s2">_change"</span>
|
||||
<span class="o">%</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">admin_site</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
<span class="n">user</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">app_label</span><span class="p">,</span>
|
||||
<span class="c1"># the model_name is something we need to hardcode</span>
|
||||
<span class="c1"># since our accountdb is a proxy:</span>
|
||||
<span class="s2">"accountdb"</span><span class="p">,</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="n">user</span><span class="o">.</span><span class="n">pk</span><span class="p">,),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">form</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">change_password_form</span><span class="p">(</span><span class="n">user</span><span class="p">)</span>
|
||||
|
||||
<span class="n">fieldsets</span> <span class="o">=</span> <span class="p">[(</span><span class="kc">None</span><span class="p">,</span> <span class="p">{</span><span class="s2">"fields"</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">base_fields</span><span class="p">)})]</span>
|
||||
<span class="n">adminForm</span> <span class="o">=</span> <span class="n">admin</span><span class="o">.</span><span class="n">helpers</span><span class="o">.</span><span class="n">AdminForm</span><span class="p">(</span><span class="n">form</span><span class="p">,</span> <span class="n">fieldsets</span><span class="p">,</span> <span class="p">{})</span>
|
||||
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"title"</span><span class="p">:</span> <span class="s2">"Change password: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">escape</span><span class="p">(</span><span class="n">user</span><span class="o">.</span><span class="n">get_username</span><span class="p">()),</span>
|
||||
<span class="s2">"adminForm"</span><span class="p">:</span> <span class="n">adminForm</span><span class="p">,</span>
|
||||
<span class="s2">"form_url"</span><span class="p">:</span> <span class="n">form_url</span><span class="p">,</span>
|
||||
<span class="s2">"form"</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span>
|
||||
<span class="s2">"is_popup"</span><span class="p">:</span> <span class="p">(</span><span class="n">IS_POPUP_VAR</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span> <span class="ow">or</span> <span class="n">IS_POPUP_VAR</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="p">),</span>
|
||||
<span class="s2">"add"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s2">"change"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="s2">"has_delete_permission"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="s2">"has_change_permission"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s2">"has_absolute_url"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="s2">"opts"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="p">,</span>
|
||||
<span class="s2">"original"</span><span class="p">:</span> <span class="n">user</span><span class="p">,</span>
|
||||
<span class="s2">"save_as"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="s2">"show_save"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">admin_site</span><span class="o">.</span><span class="n">each_context</span><span class="p">(</span><span class="n">request</span><span class="p">),</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">request</span><span class="o">.</span><span class="n">current_app</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">admin_site</span><span class="o">.</span><span class="n">name</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">TemplateResponse</span><span class="p">(</span>
|
||||
<span class="n">request</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">change_user_password_template</span> <span class="ow">or</span> <span class="s2">"admin/auth/user/change_password.html"</span><span class="p">,</span>
|
||||
<span class="n">context</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="AccountDBAdmin.save_model"><a class="viewcode-back" href="../../../api/evennia.accounts.admin.html#evennia.accounts.admin.AccountDBAdmin.save_model">[docs]</a> <span class="k">def</span> <span class="nf">save_model</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">form</span><span class="p">,</span> <span class="n">change</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Custom save actions.</span>
|
||||
|
|
|
|||
|
|
@ -150,8 +150,8 @@
|
|||
<span class="n">__applabel__</span> <span class="o">=</span> <span class="s2">"accounts"</span>
|
||||
<span class="n">__settingsclasspath__</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_SCRIPT_TYPECLASS</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Meta</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="n">verbose_name</span> <span class="o">=</span> <span class="s2">"Account"</span>
|
||||
<span class="c1"># class Meta:</span>
|
||||
<span class="c1"># verbose_name = "Account"</span>
|
||||
|
||||
<span class="c1"># cmdset_storage property</span>
|
||||
<span class="c1"># This seems very sensitive to caching, so leaving it be for now /Griatch</span>
|
||||
|
|
|
|||
|
|
@ -513,13 +513,13 @@
|
|||
<span class="n">tempmergers</span><span class="p">[</span><span class="n">prio</span><span class="p">]</span> <span class="o">=</span> <span class="n">cmdset</span>
|
||||
|
||||
<span class="c1"># sort cmdsets after reverse priority (highest prio are merged in last)</span>
|
||||
<span class="n">cmdsets</span> <span class="o">=</span> <span class="k">yield</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">tempmergers</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">priority</span><span class="p">)</span>
|
||||
<span class="n">sorted_cmdsets</span> <span class="o">=</span> <span class="k">yield</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">tempmergers</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">priority</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Merge all command sets into one, beginning with the lowest-prio one</span>
|
||||
<span class="n">cmdset</span> <span class="o">=</span> <span class="n">cmdsets</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">merging_cmdset</span> <span class="ow">in</span> <span class="n">cmdsets</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
<span class="n">cmdset</span> <span class="o">=</span> <span class="n">sorted_cmdsets</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">merging_cmdset</span> <span class="ow">in</span> <span class="n">sorted_cmdsets</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
<span class="n">cmdset</span> <span class="o">=</span> <span class="k">yield</span> <span class="n">cmdset</span> <span class="o">+</span> <span class="n">merging_cmdset</span>
|
||||
<span class="c1"># store the full sets for diagnosis</span>
|
||||
<span class="c1"># store the original, ungrouped set for diagnosis</span>
|
||||
<span class="n">cmdset</span><span class="o">.</span><span class="n">merged_from</span> <span class="o">=</span> <span class="n">cmdsets</span>
|
||||
<span class="c1"># cache</span>
|
||||
<span class="n">_CMDSET_MERGE_CACHE</span><span class="p">[</span><span class="n">mergehash</span><span class="p">]</span> <span class="o">=</span> <span class="n">cmdset</span>
|
||||
|
|
|
|||
|
|
@ -484,12 +484,12 @@
|
|||
<span class="c1"># print "__add__ for %s (prio %i) called with %s (prio %i)." % (self.key, self.priority, cmdset_a.key, cmdset_a.priority)</span>
|
||||
|
||||
<span class="c1"># return the system commands to the cmdset</span>
|
||||
<span class="n">cmdset_c</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sys_commands</span><span class="p">)</span>
|
||||
<span class="n">cmdset_c</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sys_commands</span><span class="p">,</span> <span class="n">allow_duplicates</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">cmdset_c</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdSet.add"><a class="viewcode-back" href="../../../api/evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CmdSet.add"><a class="viewcode-back" href="../../../api/evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">allow_duplicates</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Add a new command or commands to this CmdSetcommand, a list of</span>
|
||||
<span class="sd"> Add a new command or commands to this CmdSet, a list of</span>
|
||||
<span class="sd"> commands or a cmdset to this cmdset. Note that this is *not*</span>
|
||||
<span class="sd"> a merge operation (that is handled by the + operator).</span>
|
||||
|
||||
|
|
@ -497,6 +497,9 @@
|
|||
<span class="sd"> cmd (Command, list, Cmdset): This allows for adding one or</span>
|
||||
<span class="sd"> more commands to this Cmdset in one go. If another Cmdset</span>
|
||||
<span class="sd"> is given, all its commands will be added.</span>
|
||||
<span class="sd"> allow_duplicates (bool, optional): If set, will not try to remove</span>
|
||||
<span class="sd"> duplicate cmds in the set. This is needed during the merge process</span>
|
||||
<span class="sd"> to avoid wiping commands coming from cmdsets with duplicate=True.</span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> If cmd already exists in set, it will replace the old one</span>
|
||||
|
|
@ -539,8 +542,10 @@
|
|||
<span class="n">commands</span><span class="p">[</span><span class="n">ic</span><span class="p">]</span> <span class="o">=</span> <span class="n">cmd</span> <span class="c1"># replace</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="n">commands</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span>
|
||||
<span class="c1"># extra run to make sure to avoid doublets</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">commands</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">commands</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">commands</span> <span class="o">=</span> <span class="n">commands</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">allow_duplicates</span><span class="p">:</span>
|
||||
<span class="c1"># extra run to make sure to avoid doublets</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">commands</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">commands</span><span class="p">))</span>
|
||||
<span class="c1"># add system_command to separate list as well,</span>
|
||||
<span class="c1"># for quick look-up</span>
|
||||
<span class="k">if</span> <span class="n">cmd</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"__"</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -195,7 +195,8 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">is_superuser</span> <span class="ow">and</span> <span class="p">(</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">)</span> <span class="o">>=</span> <span class="n">charmax</span>
|
||||
<span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You may only create a maximum of </span><span class="si">%i</span><span class="s2"> characters."</span> <span class="o">%</span> <span class="n">charmax</span><span class="p">)</span>
|
||||
<span class="n">plural</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">charmax</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">"s"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You may only create a maximum of </span><span class="si">{charmax}</span><span class="s2"> character</span><span class="si">{plural}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="k">import</span> <span class="n">ObjectDB</span>
|
||||
|
||||
|
|
@ -341,27 +342,68 @@
|
|||
<span class="n">session</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span>
|
||||
|
||||
<span class="n">new_character</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">character_candidates</span> <span class="o">=</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">args</span><span class="p">:</span>
|
||||
<span class="n">new_character</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">new_character</span><span class="p">:</span>
|
||||
<span class="n">character_candidates</span> <span class="o">=</span> <span class="p">[</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span><span class="p">]</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">character_candidates</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: ic <character>"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">new_character</span><span class="p">:</span>
|
||||
<span class="c1"># search for a matching character</span>
|
||||
<span class="n">new_character</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">char</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">search</span><span class="o">.</span><span class="n">object_search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span> <span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"puppet"</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">new_character</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That is not a valid character choice."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_character</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Multiple targets with the same name:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span>
|
||||
<span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">(#</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">new_character</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># argument given</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">:</span>
|
||||
<span class="c1"># look at the playable_characters list first</span>
|
||||
<span class="n">character_candidates</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">search</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
|
||||
<span class="n">candidates</span><span class="o">=</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">,</span>
|
||||
<span class="n">search_object</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">new_character</span> <span class="o">=</span> <span class="n">new_character</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">check_lockstring</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"perm(Builder)"</span><span class="p">):</span>
|
||||
<span class="c1"># builders and higher should be able to puppet more than their</span>
|
||||
<span class="c1"># playable characters.</span>
|
||||
<span class="k">if</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span><span class="p">:</span>
|
||||
<span class="c1"># start by local search - this helps to avoid the user</span>
|
||||
<span class="c1"># getting locked into their playable characters should one</span>
|
||||
<span class="c1"># happen to be named the same as another. We replace the suggestion</span>
|
||||
<span class="c1"># from playable_characters here - this allows builders to puppet objects</span>
|
||||
<span class="c1"># with the same name as their playable chars should it be necessary</span>
|
||||
<span class="c1"># (by going to the same location).</span>
|
||||
<span class="n">character_candidates</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">char</span>
|
||||
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"puppet"</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">character_candidates</span><span class="p">:</span>
|
||||
<span class="c1"># fall back to global search only if Builder+ has no</span>
|
||||
<span class="c1"># playable_characers in list and is not standing in a room</span>
|
||||
<span class="c1"># with a matching char.</span>
|
||||
<span class="n">character_candidates</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
||||
<span class="p">[</span>
|
||||
<span class="n">char</span>
|
||||
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">search</span><span class="o">.</span><span class="n">object_search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"puppet"</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># handle possible candidates</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">character_candidates</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That is not a valid character choice."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">character_candidates</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Multiple targets with the same name:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span>
|
||||
<span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2">(#</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">character_candidates</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">new_character</span> <span class="o">=</span> <span class="n">character_candidates</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># do the puppet puppet</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">new_character</span><span class="p">)</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="o">=</span> <span class="n">new_character</span>
|
||||
|
|
|
|||
|
|
@ -91,35 +91,6 @@
|
|||
<span class="s2"> Error reported was: '</span><span class="si">%s</span><span class="s2">'</span>
|
||||
<span class="s2">"""</span>
|
||||
|
||||
<span class="n">_PROCPOOL_BATCHCMD_SOURCE</span> <span class="o">=</span> <span class="s2">"""</span>
|
||||
<span class="s2">from evennia.commands.default.batchprocess import batch_cmd_exec, step_pointer, BatchSafeCmdSet</span>
|
||||
<span class="s2">caller.ndb.batch_stack = commands</span>
|
||||
<span class="s2">caller.ndb.batch_stackptr = 0</span>
|
||||
<span class="s2">caller.ndb.batch_batchmode = "batch_commands"</span>
|
||||
<span class="s2">caller.cmdset.add(BatchSafeCmdSet)</span>
|
||||
<span class="s2">for inum in range(len(commands)):</span>
|
||||
<span class="s2"> print "command:", inum</span>
|
||||
<span class="s2"> caller.cmdset.add(BatchSafeCmdSet)</span>
|
||||
<span class="s2"> if not batch_cmd_exec(caller):</span>
|
||||
<span class="s2"> break</span>
|
||||
<span class="s2"> step_pointer(caller, 1)</span>
|
||||
<span class="s2">print "leaving run ..."</span>
|
||||
<span class="s2">"""</span>
|
||||
<span class="n">_PROCPOOL_BATCHCODE_SOURCE</span> <span class="o">=</span> <span class="s2">"""</span>
|
||||
<span class="s2">from evennia.commands.default.batchprocess import batch_code_exec, step_pointer, BatchSafeCmdSet</span>
|
||||
<span class="s2">caller.ndb.batch_stack = codes</span>
|
||||
<span class="s2">caller.ndb.batch_stackptr = 0</span>
|
||||
<span class="s2">caller.ndb.batch_batchmode = "batch_code"</span>
|
||||
<span class="s2">caller.cmdset.add(BatchSafeCmdSet)</span>
|
||||
<span class="s2">for inum in range(len(codes)):</span>
|
||||
<span class="s2"> print "code:", inum</span>
|
||||
<span class="s2"> caller.cmdset.add(BatchSafeCmdSet)</span>
|
||||
<span class="s2"> if not batch_code_exec(caller):</span>
|
||||
<span class="s2"> break</span>
|
||||
<span class="s2"> step_pointer(caller, 1)</span>
|
||||
<span class="s2">print "leaving run ..."</span>
|
||||
<span class="s2">"""</span>
|
||||
|
||||
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
<span class="c1"># Helper functions</span>
|
||||
|
|
@ -341,42 +312,17 @@
|
|||
<span class="s2">"for </span><span class="si">%s</span><span class="s2"> (this might take some time) ..."</span> <span class="o">%</span> <span class="n">python_path</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">procpool</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">if</span> <span class="s2">"PythonProcPool"</span> <span class="ow">in</span> <span class="n">utils</span><span class="o">.</span><span class="n">server_services</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">utils</span><span class="o">.</span><span class="n">uses_database</span><span class="p">(</span><span class="s2">"sqlite3"</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Batchprocessor disabled ProcPool under SQLite3."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">procpool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">procpool</span><span class="p">:</span>
|
||||
<span class="c1"># run in parallel process</span>
|
||||
<span class="k">def</span> <span class="nf">callback</span><span class="p">(</span><span class="n">r</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">" |GBatchfile '</span><span class="si">%s</span><span class="s2">' applied."</span> <span class="o">%</span> <span class="n">python_path</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">errback</span><span class="p">(</span><span class="n">e</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">" |RError from processor: '</span><span class="si">%s</span><span class="s2">'"</span> <span class="o">%</span> <span class="n">e</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>
|
||||
|
||||
<span class="n">utils</span><span class="o">.</span><span class="n">run_async</span><span class="p">(</span>
|
||||
<span class="n">_PROCPOOL_BATCHCMD_SOURCE</span><span class="p">,</span>
|
||||
<span class="n">commands</span><span class="o">=</span><span class="n">commands</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">at_return</span><span class="o">=</span><span class="n">callback</span><span class="p">,</span>
|
||||
<span class="n">at_err</span><span class="o">=</span><span class="n">errback</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># run in-process (might block)</span>
|
||||
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">commands</span><span class="p">)):</span>
|
||||
<span class="c1"># loop through the batch file</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">batch_cmd_exec</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">step_pointer</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="c1"># clean out the safety cmdset and clean out all other</span>
|
||||
<span class="c1"># temporary attrs.</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">" Batchfile '</span><span class="si">%s</span><span class="s2">' applied."</span> <span class="o">%</span> <span class="n">python_path</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|G</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">string</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
<span class="c1"># run in-process (might block)</span>
|
||||
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">commands</span><span class="p">)):</span>
|
||||
<span class="c1"># loop through the batch file</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">batch_cmd_exec</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">step_pointer</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="c1"># clean out the safety cmdset and clean out all other</span>
|
||||
<span class="c1"># temporary attrs.</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">" Batchfile '</span><span class="si">%s</span><span class="s2">' applied."</span> <span class="o">%</span> <span class="n">python_path</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|G</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">string</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdBatchCode"><a class="viewcode-back" href="../../../../api/evennia.commands.default.batchprocess.html#evennia.commands.default.batchprocess.CmdBatchCode">[docs]</a><span class="k">class</span> <span class="nc">CmdBatchCode</span><span class="p">(</span><span class="n">_COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
|
|
@ -461,41 +407,16 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Running Batch-code processor - Automatic mode for </span><span class="si">%s</span><span class="s2"> ..."</span> <span class="o">%</span> <span class="n">python_path</span><span class="p">)</span>
|
||||
|
||||
<span class="n">procpool</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">if</span> <span class="s2">"PythonProcPool"</span> <span class="ow">in</span> <span class="n">utils</span><span class="o">.</span><span class="n">server_services</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">utils</span><span class="o">.</span><span class="n">uses_database</span><span class="p">(</span><span class="s2">"sqlite3"</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Batchprocessor disabled ProcPool under SQLite3."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">procpool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="n">procpool</span><span class="p">:</span>
|
||||
<span class="c1"># run in parallel process</span>
|
||||
<span class="k">def</span> <span class="nf">callback</span><span class="p">(</span><span class="n">r</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">" |GBatchfile '</span><span class="si">%s</span><span class="s2">' applied."</span> <span class="o">%</span> <span class="n">python_path</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">errback</span><span class="p">(</span><span class="n">e</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">" |RError from processor: '</span><span class="si">%s</span><span class="s2">'"</span> <span class="o">%</span> <span class="n">e</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>
|
||||
|
||||
<span class="n">utils</span><span class="o">.</span><span class="n">run_async</span><span class="p">(</span>
|
||||
<span class="n">_PROCPOOL_BATCHCODE_SOURCE</span><span class="p">,</span>
|
||||
<span class="n">codes</span><span class="o">=</span><span class="n">codes</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">at_return</span><span class="o">=</span><span class="n">callback</span><span class="p">,</span>
|
||||
<span class="n">at_err</span><span class="o">=</span><span class="n">errback</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># un in-process (will block)</span>
|
||||
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">codes</span><span class="p">)):</span>
|
||||
<span class="c1"># loop through the batch file</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">batch_code_exec</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">step_pointer</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="c1"># clean out the safety cmdset and clean out all other</span>
|
||||
<span class="c1"># temporary attrs.</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">" Batchfile '</span><span class="si">%s</span><span class="s2">' applied."</span> <span class="o">%</span> <span class="n">python_path</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|G</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">string</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">codes</span><span class="p">)):</span>
|
||||
<span class="c1"># loop through the batch file</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">batch_code_exec</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">step_pointer</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="c1"># clean out the safety cmdset and clean out all other</span>
|
||||
<span class="c1"># temporary attrs.</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">" Batchfile '</span><span class="si">%s</span><span class="s2">' applied."</span> <span class="o">%</span> <span class="n">python_path</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|G</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">string</span><span class="p">)</span>
|
||||
<span class="n">purge_processor</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
|
|
|
|||
|
|
@ -57,11 +57,13 @@
|
|||
<span class="n">dbref</span><span class="p">,</span>
|
||||
<span class="n">interactive</span><span class="p">,</span>
|
||||
<span class="n">list_to_string</span><span class="p">,</span>
|
||||
<span class="n">display_len</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="k">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evmore</span> <span class="k">import</span> <span class="n">EvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="k">import</span> <span class="n">spawner</span><span class="p">,</span> <span class="n">prototypes</span> <span class="k">as</span> <span class="n">protlib</span><span class="p">,</span> <span class="n">menus</span> <span class="k">as</span> <span class="n">olc_menus</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">raw</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">ansi_raw</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.inlinefuncs</span> <span class="k">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">inlinefunc_raw</span>
|
||||
|
||||
<span class="n">COMMAND_DEFAULT_CLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -1448,6 +1450,7 @@
|
|||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:perm(open) or perm(Builder)"</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"Building"</span>
|
||||
|
||||
<span class="n">new_obj_lockstring</span> <span class="o">=</span> <span class="s2">"control:id(</span><span class="si">{id}</span><span class="s2">) or perm(Admin);delete:id(</span><span class="si">{id}</span><span class="s2">) or perm(Admin)"</span>
|
||||
<span class="c1"># a custom member method to chug out exits and do checks</span>
|
||||
<div class="viewcode-block" id="CmdOpen.create_exit"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdOpen.create_exit">[docs]</a> <span class="k">def</span> <span class="nf">create_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exit_name</span><span class="p">,</span> <span class="n">location</span><span class="p">,</span> <span class="n">destination</span><span class="p">,</span> <span class="n">exit_aliases</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -1493,10 +1496,16 @@
|
|||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># exit does not exist before. Create a new one.</span>
|
||||
<span class="n">lockstring</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">new_obj_lockstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">caller</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">typeclass</span><span class="p">:</span>
|
||||
<span class="n">typeclass</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_EXIT_TYPECLASS</span>
|
||||
<span class="n">exit_obj</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_object</span><span class="p">(</span>
|
||||
<span class="n">typeclass</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="n">exit_name</span><span class="p">,</span> <span class="n">location</span><span class="o">=</span><span class="n">location</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="n">exit_aliases</span><span class="p">,</span> <span class="n">report_to</span><span class="o">=</span><span class="n">caller</span>
|
||||
<span class="n">typeclass</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">exit_name</span><span class="p">,</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="n">location</span><span class="p">,</span>
|
||||
<span class="n">aliases</span><span class="o">=</span><span class="n">exit_aliases</span><span class="p">,</span>
|
||||
<span class="n">locks</span><span class="o">=</span><span class="n">lockstring</span><span class="p">,</span>
|
||||
<span class="n">report_to</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit_obj</span><span class="p">:</span>
|
||||
<span class="c1"># storing a destination is what makes it an exit!</span>
|
||||
|
|
@ -2396,116 +2405,160 @@
|
|||
<span class="n">arg_regex</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"(/\w+?(\s|$))|\s|$"</span>
|
||||
|
||||
<span class="n">account_mode</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">detail_color</span> <span class="o">=</span> <span class="s2">"|c"</span>
|
||||
<span class="n">header_color</span> <span class="o">=</span> <span class="s2">"|w"</span>
|
||||
<span class="n">quell_color</span> <span class="o">=</span> <span class="s2">"|r"</span>
|
||||
<span class="n">separator</span> <span class="o">=</span> <span class="s2">"-"</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.list_attribute"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.list_attribute">[docs]</a> <span class="k">def</span> <span class="nf">list_attribute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">crop</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">category</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Formats a single attribute line.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> crop (bool): If output should be cropped if too long.</span>
|
||||
<span class="sd"> attr (str): Attribute key.</span>
|
||||
<span class="sd"> category (str): Attribute category.</span>
|
||||
<span class="sd"> value (any): Attribute value.</span>
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">attr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"No such attribute was found."</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">to_str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">crop</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">to_str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">inlinefunc_raw</span><span class="p">(</span><span class="n">ansi_raw</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">category</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">[</span><span class="si">%s</span><span class="s2">] = </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">category</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{attr}</span><span class="s2">[</span><span class="si">{category}</span><span class="s2">] = </span><span class="si">{value}</span><span class="s2">"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2"> = </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">raw</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">string</span></div>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{attr}</span><span class="s2"> = </span><span class="si">{value}</span><span class="s2">"</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_attributes"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_attributes">[docs]</a> <span class="k">def</span> <span class="nf">format_attributes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">attrname</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">crop</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Helper function that returns info about attributes and/or</span>
|
||||
<span class="sd"> non-persistent data stored on object</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">attrname</span><span class="p">:</span>
|
||||
<span class="n">db_attr</span> <span class="o">=</span> <span class="p">[(</span><span class="n">attrname</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">attrname</span><span class="p">),</span> <span class="kc">None</span><span class="p">)]</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">has</span><span class="p">(</span><span class="n">attrname</span><span class="p">):</span>
|
||||
<span class="n">db_attr</span> <span class="o">=</span> <span class="p">[(</span><span class="n">attrname</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">attrname</span><span class="p">),</span> <span class="kc">None</span><span class="p">)]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">db_attr</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">ndb_attr</span> <span class="o">=</span> <span class="p">[(</span><span class="n">attrname</span><span class="p">,</span> <span class="nb">object</span><span class="o">.</span><span class="fm">__getattribute__</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">ndb</span><span class="p">,</span> <span class="n">attrname</span><span class="p">))]</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">ndb_attr</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">db_attr</span> <span class="ow">or</span> <span class="n">ndb_attr</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">{</span><span class="s2">"Attribue(s)"</span><span class="p">:</span> <span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> No Attribute '</span><span class="si">{attrname}</span><span class="s2">' found on </span><span class="si">{obj.name}</span><span class="s2">"</span><span class="p">}</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">db_attr</span> <span class="o">=</span> <span class="p">[(</span><span class="n">attr</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">category</span><span class="p">)</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_attributes</span><span class="o">.</span><span class="n">all</span><span class="p">()]</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">ndb_attr</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">nattributes</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">return_tuples</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">ndb_attr</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">ndb_attr</span> <span class="o">=</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">if</span> <span class="n">db_attr</span> <span class="ow">and</span> <span class="n">db_attr</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wPersistent attributes|n:"</span>
|
||||
<span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">db_attr</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_attribute</span><span class="p">(</span><span class="n">crop</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">category</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Persistent attribute(s)"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">list_attribute</span><span class="p">(</span><span class="n">crop</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">category</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">db_attr</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">ndb_attr</span> <span class="ow">and</span> <span class="n">ndb_attr</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wNon-Persistent attributes|n:"</span>
|
||||
<span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">ndb_attr</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_attribute</span><span class="p">(</span><span class="n">crop</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">string</span></div>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Non-Persistent attribute(s)"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">" </span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">" </span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">list_attribute</span><span class="p">(</span><span class="n">crop</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">ndb_attr</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">output</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_output"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_output">[docs]</a> <span class="k">def</span> <span class="nf">format_output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">avail_cmdset</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Helper function that creates a nice report about an object.</span>
|
||||
|
||||
<span class="sd"> returns a string.</span>
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> obj (any): Object to analyze.</span>
|
||||
<span class="sd"> avail_cmdset (CmdSet): Current cmdset for object.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> str: The formatted string.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wName/key|n: |c</span><span class="si">%s</span><span class="s2">|n (</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
|
||||
<span class="n">hclr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">header_color</span>
|
||||
<span class="n">dclr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">detail_color</span>
|
||||
<span class="n">qclr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">quell_color</span>
|
||||
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="c1"># main key</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Name/key"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{dclr}{obj.name}</span><span class="s2">|n (</span><span class="si">{obj.dbref}</span><span class="s2">)"</span>
|
||||
<span class="c1"># aliases</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"aliases"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wAliases|n: </span><span class="si">%s</span><span class="s2">"</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">utils</span><span class="o">.</span><span class="n">make_iter</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">aliases</span><span class="p">))))</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Aliases"</span><span class="p">]</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">utils</span><span class="o">.</span><span class="n">make_iter</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">aliases</span><span class="p">)))</span>
|
||||
<span class="c1"># typeclass</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Typeclass"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{obj.typename}</span><span class="s2"> (</span><span class="si">{obj.typeclass_path}</span><span class="s2">)"</span>
|
||||
<span class="c1"># sessions</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"sessions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wSession id(s)|n: </span><span class="si">%s</span><span class="s2">"</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="s2">"#</span><span class="si">%i</span><span class="s2">"</span> <span class="o">%</span> <span class="n">sess</span><span class="o">.</span><span class="n">sessid</span> <span class="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Session id(s)"</span><span class="p">]</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">f</span><span class="s2">"#</span><span class="si">{sess.sessid}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
||||
<span class="c1"># email, if any</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"email"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">email</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wEmail|n: |c</span><span class="si">%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">email</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Email"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{dclr}{obj.email}</span><span class="s2">|n"</span>
|
||||
<span class="c1"># account, for puppeted objects</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"has_account"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">has_account</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wAccount|n: |c</span><span class="si">%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">name</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Account"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{dclr}{obj.account.name}</span><span class="s2">|n (</span><span class="si">{obj.account.dbref}</span><span class="s2">)"</span>
|
||||
<span class="c1"># account typeclass</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">" Account Typeclass"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{obj.account.typename}</span><span class="s2"> (</span><span class="si">{obj.account.typeclass_path}</span><span class="s2">)"</span>
|
||||
<span class="c1"># account permissions</span>
|
||||
<span class="n">perms</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">is_superuser</span><span class="p">:</span>
|
||||
<span class="n">perms</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"<Superuser>"</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="n">perms</span><span class="p">:</span>
|
||||
<span class="n">perms</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"<None>"</span><span class="p">]</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wAccount Perms|n: </span><span class="si">%s</span><span class="s2">"</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">perms</span><span class="p">))</span>
|
||||
<span class="n">perms</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">perms</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">has</span><span class="p">(</span><span class="s2">"_quell"</span><span class="p">):</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">" |r(quelled)|n"</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wTypeclass|n: </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">typename</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">typeclass_path</span><span class="p">)</span>
|
||||
<span class="n">perms</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" </span><span class="si">{qclr}</span><span class="s2">(quelled)|n"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">" Account Permissions"</span><span class="p">]</span> <span class="o">=</span> <span class="n">perms</span>
|
||||
<span class="c1"># location</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"location"</span><span class="p">):</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wLocation|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span>
|
||||
<span class="n">loc</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">" (#</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">id</span>
|
||||
<span class="n">loc</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" (#</span><span class="si">{obj.location.id}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Location"</span><span class="p">]</span> <span class="o">=</span> <span class="n">loc</span>
|
||||
<span class="c1"># home</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"home"</span><span class="p">):</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wHome|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">home</span>
|
||||
<span class="n">home</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">" (#</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="o">.</span><span class="n">id</span>
|
||||
<span class="n">home</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" (#</span><span class="si">{obj.home.id}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Home"</span><span class="p">]</span> <span class="o">=</span> <span class="n">home</span>
|
||||
<span class="c1"># destination, for exits</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"destination"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wDestination|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span>
|
||||
<span class="n">dest</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">" (#</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="o">.</span><span class="n">id</span>
|
||||
<span class="n">dest</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" (#</span><span class="si">{obj.destination.id}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Destination"</span><span class="p">]</span> <span class="o">=</span> <span class="n">dest</span>
|
||||
<span class="c1"># main permissions</span>
|
||||
<span class="n">perms</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="n">perms_string</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">perms</span><span class="p">:</span>
|
||||
<span class="n">perms_string</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">perms</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">perms_string</span> <span class="o">=</span> <span class="s2">"<None>"</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">is_superuser</span><span class="p">:</span>
|
||||
<span class="n">perms_string</span> <span class="o">+=</span> <span class="s2">" [Superuser]"</span>
|
||||
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wPermissions|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">perms_string</span>
|
||||
|
||||
<span class="n">perms_string</span> <span class="o">+=</span> <span class="s2">" <Superuser>"</span>
|
||||
<span class="k">if</span> <span class="n">perms_string</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Permissions"</span><span class="p">]</span> <span class="o">=</span> <span class="n">perms_string</span>
|
||||
<span class="c1"># locks</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">locks</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">locks</span><span class="p">:</span>
|
||||
<span class="n">locks_string</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</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">lock</span> <span class="k">for</span> <span class="n">lock</span> <span class="ow">in</span> <span class="n">locks</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">";"</span><span class="p">)]),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">6</span><span class="p">)</span>
|
||||
<span class="n">locks_string</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</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">lock</span> <span class="k">for</span> <span class="n">lock</span> <span class="ow">in</span> <span class="n">locks</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">";"</span><span class="p">)]),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">locks_string</span> <span class="o">=</span> <span class="s2">" Default"</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wLocks|n:</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">locks_string</span>
|
||||
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Locks"</span><span class="p">]</span> <span class="o">=</span> <span class="n">locks_string</span>
|
||||
<span class="c1"># cmdsets</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">current</span><span class="o">.</span><span class="n">key</span> <span class="o">==</span> <span class="s2">"_EMPTY_CMDSET"</span><span class="p">):</span>
|
||||
<span class="c1"># all() returns a 'stack', so make a copy to sort.</span>
|
||||
<span class="n">stored_cmdsets</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">priority</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wStored Cmdset(s)|n:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2"> [</span><span class="si">%s</span><span class="s2">] (</span><span class="si">%s</span><span class="s2">, prio </span><span class="si">%s</span><span class="s2">)"</span>
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">cmdset</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">mergetype</span><span class="p">,</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">priority</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">stored_cmdsets</span>
|
||||
<span class="k">if</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">key</span> <span class="o">!=</span> <span class="s2">"_EMPTY_CMDSET"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Stored Cmdset(s)"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{cmdset.path}</span><span class="s2"> [</span><span class="si">{cmdset.key}</span><span class="s2">] (</span><span class="si">{cmdset.mergetype}</span><span class="s2">, prio </span><span class="si">{cmdset.priority}</span><span class="s2">)"</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">stored_cmdsets</span>
|
||||
<span class="k">if</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">key</span> <span class="o">!=</span> <span class="s2">"_EMPTY_CMDSET"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># this gets all components of the currently merged set</span>
|
||||
|
|
@ -2539,40 +2592,28 @@
|
|||
<span class="k">pass</span>
|
||||
<span class="n">all_cmdsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">cmdset</span> <span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="nb">dict</span><span class="p">(</span><span class="n">all_cmdsets</span><span class="p">)</span><span class="o">.</span><span class="n">values</span><span class="p">()]</span>
|
||||
<span class="n">all_cmdsets</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">priority</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wMerged Cmdset(s)|n:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2"> [</span><span class="si">%s</span><span class="s2">] (</span><span class="si">%s</span><span class="s2">, prio </span><span class="si">%s</span><span class="s2">)"</span>
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">cmdset</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">mergetype</span><span class="p">,</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">priority</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">all_cmdsets</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Merged Cmdset(s)"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{cmdset.path}</span><span class="s2"> [</span><span class="si">{cmdset.key}</span><span class="s2">] (</span><span class="si">{cmdset.mergetype}</span><span class="s2"> prio </span><span class="si">{cmdset.priority}</span><span class="s2">)"</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">all_cmdsets</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># list the commands available to this object</span>
|
||||
<span class="n">avail_cmdset</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([</span><span class="n">cmd</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">avail_cmdset</span> <span class="k">if</span> <span class="n">cmd</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"cmd"</span><span class="p">)])</span>
|
||||
|
||||
<span class="n">cmdsetstr</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</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">avail_cmdset</span><span class="p">),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wCommands available to </span><span class="si">%s</span><span class="s2"> (result of Merged CmdSets)|n:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">cmdsetstr</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">cmdsetstr</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</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">avail_cmdset</span><span class="p">),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="n">f</span><span class="s2">"Commands available to </span><span class="si">{obj.key}</span><span class="s2"> (result of Merged CmdSets)"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmdsetstr</span><span class="p">)</span>
|
||||
<span class="c1"># scripts</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"scripts"</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">scripts</span><span class="p">,</span> <span class="s2">"all"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">scripts</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wScripts|n:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">scripts</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Scripts"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="n">f</span><span class="s2">"</span><span class="si">{obj.scripts}</span><span class="s2">"</span>
|
||||
<span class="c1"># add the attributes</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_attributes</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># display Tags</span>
|
||||
<span class="n">tags_string</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span>
|
||||
<span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2">[</span><span class="si">%s</span><span class="s2">]"</span> <span class="o">%</span> <span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="n">category</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">tag</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">return_key_and_category</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
|
||||
<span class="n">output</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">format_attributes</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span>
|
||||
<span class="c1"># Tags</span>
|
||||
<span class="n">tags</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">return_key_and_category</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">tags_string</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span>
|
||||
<span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{tag}</span><span class="s2">[</span><span class="si">{category}</span><span class="s2">]"</span> <span class="k">for</span> <span class="n">tag</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">tags</span><span class="p">)),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">tags_string</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wTags[category]|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">tags_string</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># add the contents</span>
|
||||
<span class="k">if</span> <span class="n">tags</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Tags[category]"</span><span class="p">]</span> <span class="o">=</span> <span class="n">tags_string</span>
|
||||
<span class="c1"># Contents of object</span>
|
||||
<span class="n">exits</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">pobjs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">things</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
|
@ -2585,24 +2626,28 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">things</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wExits|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="p">[</span><span class="s2">"</span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">exit</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span> <span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">exits</span><span class="p">]</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Exits (has .destination)"</span><span class="p">]</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">f</span><span class="s2">"</span><span class="si">{exit.name}</span><span class="s2">(</span><span class="si">{exit.dbref}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">exits</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pobjs</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wCharacters|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="p">[</span><span class="s2">"|c</span><span class="si">%s</span><span class="s2">|n(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">pobj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">pobj</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span> <span class="k">for</span> <span class="n">pobj</span> <span class="ow">in</span> <span class="n">pobjs</span><span class="p">]</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Characters"</span><span class="p">]</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">f</span><span class="s2">"</span><span class="si">{dclr}{pobj.name}</span><span class="s2">|n(</span><span class="si">{pobj.dbref}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">pobj</span> <span class="ow">in</span> <span class="n">pobjs</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">things</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|wContents|n: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="p">[</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">cont</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">cont</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">if</span> <span class="n">cont</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exits</span> <span class="ow">and</span> <span class="n">cont</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pobjs</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Contents"</span><span class="p">]</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">f</span><span class="s2">"</span><span class="si">{cont.name}</span><span class="s2">(</span><span class="si">{cont.dbref}</span><span class="s2">)"</span>
|
||||
<span class="k">for</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">if</span> <span class="n">cont</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exits</span> <span class="ow">and</span> <span class="n">cont</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pobjs</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">separator</span> <span class="o">=</span> <span class="s2">"-"</span> <span class="o">*</span> <span class="n">_DEFAULT_WIDTH</span>
|
||||
<span class="c1"># output info</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">separator</span><span class="p">,</span> <span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="n">separator</span><span class="p">)</span></div>
|
||||
<span class="c1"># format output</span>
|
||||
<span class="n">max_width</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">for</span> <span class="n">block</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
<span class="n">max_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">max_width</span><span class="p">,</span> <span class="nb">max</span><span class="p">(</span><span class="n">display_len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">block</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)))</span>
|
||||
<span class="n">max_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">client_width</span><span class="p">(),</span> <span class="n">max_width</span><span class="p">))</span>
|
||||
|
||||
<span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span> <span class="o">*</span> <span class="n">max_width</span>
|
||||
<span class="n">mainstr</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{hclr}{header}</span><span class="s2">|n: </span><span class="si">{block}</span><span class="s2">"</span> <span class="k">for</span> <span class="p">(</span><span class="n">header</span><span class="p">,</span> <span class="n">block</span><span class="p">)</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{sep}</span><span class="se">\n</span><span class="si">{mainstr}</span><span class="se">\n</span><span class="si">{sep}</span><span class="s2">"</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Process command"""</span>
|
||||
|
|
@ -2617,8 +2662,7 @@
|
|||
<span class="sd"> that function finishes. Taking the resulting cmdset, we continue</span>
|
||||
<span class="sd"> to format and output the result.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_output</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_output</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">)</span><span class="o">.</span><span class="n">strip</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">args</span><span class="p">:</span>
|
||||
<span class="c1"># If no arguments are provided, examine the invoker's location.</span>
|
||||
|
|
@ -2672,7 +2716,13 @@
|
|||
<span class="k">if</span> <span class="n">obj_attrs</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">attrname</span> <span class="ow">in</span> <span class="n">obj_attrs</span><span class="p">:</span>
|
||||
<span class="c1"># we are only interested in specific attributes</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_attributes</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">attrname</span><span class="p">,</span> <span class="n">crop</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{self.header_color}{header}</span><span class="s2">|n:</span><span class="si">{value}</span><span class="s2">"</span>
|
||||
<span class="k">for</span> <span class="n">header</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_attributes</span><span class="p">(</span>
|
||||
<span class="n">obj</span><span class="p">,</span> <span class="n">attrname</span><span class="p">,</span> <span class="n">crop</span><span class="o">=</span><span class="kc">False</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">count</span><span class="p">():</span>
|
||||
|
|
|
|||
|
|
@ -467,11 +467,16 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">at_before_get</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You pick up </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> picks up </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="c1"># calling at_get hook method</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">at_get</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
<span class="n">success</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">success</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"This can't be picked up."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You pick up </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">%s</span><span class="s2"> picks up </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># calling at_get hook method</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">at_get</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdDrop"><a class="viewcode-back" href="../../../../api/evennia.commands.default.general.html#evennia.commands.default.general.CmdDrop">[docs]</a><span class="k">class</span> <span class="nc">CmdDrop</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
|
|
@ -512,11 +517,14 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">at_before_drop</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You drop </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> drops </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="c1"># Call the object script's at_drop() method.</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">at_drop</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
<span class="n">success</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">success</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"This couldn't be dropped."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You drop </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> drops </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="c1"># Call the object script's at_drop() method.</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">at_drop</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdGive"><a class="viewcode-back" href="../../../../api/evennia.commands.default.general.html#evennia.commands.default.general.CmdGive">[docs]</a><span class="k">class</span> <span class="nc">CmdGive</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
|
|
@ -563,11 +571,14 @@
|
|||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># give object</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You give </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">to_give</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">target</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> gives you </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="c1"># Call the object script's at_give() method.</span>
|
||||
<span class="n">to_give</span><span class="o">.</span><span class="n">at_give</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span></div></div>
|
||||
<span class="n">success</span> <span class="o">=</span> <span class="n">to_give</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">success</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"This could not be given."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You give </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">target</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> gives you </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="c1"># Call the object script's at_give() method.</span>
|
||||
<span class="n">to_give</span><span class="o">.</span><span class="n">at_give</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdSetDesc"><a class="viewcode-back" href="../../../../api/evennia.commands.default.general.html#evennia.commands.default.general.CmdSetDesc">[docs]</a><span class="k">class</span> <span class="nc">CmdSetDesc</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -243,12 +243,6 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">character</span> <span class="o">=</span> <span class="kc">None</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_command_info</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Update of parent class's get_command_info() for MuxCommand.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_command_info</span><span class="p">()</span>
|
||||
|
||||
<div class="viewcode-block" id="MuxCommand.get_command_info"><a class="viewcode-back" href="../../../../api/evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand.get_command_info">[docs]</a> <span class="k">def</span> <span class="nf">get_command_info</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Update of parent class's get_command_info() for MuxCommand.</span>
|
||||
|
|
|
|||
|
|
@ -489,7 +489,9 @@
|
|||
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">id</span><span class="p">,</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span> <span class="k">if</span> <span class="p">(</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">script</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">script</span><span class="o">.</span><span class="n">obj</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"<Global>"</span><span class="p">,</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{script.obj.key}</span><span class="s2">(</span><span class="si">{script.obj.dbref}</span><span class="s2">)"</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">script</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">script</span><span class="o">.</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">else</span> <span class="s2">"<Global>"</span><span class="p">,</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">interval</span> <span class="k">if</span> <span class="n">script</span><span class="o">.</span><span class="n">interval</span> <span class="o">></span> <span class="mi">0</span> <span class="k">else</span> <span class="s2">"--"</span><span class="p">,</span>
|
||||
<span class="n">nextrep</span><span class="p">,</span>
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
<span class="kn">from</span> <span class="nn">anything</span> <span class="k">import</span> <span class="n">Anything</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">mock</span> <span class="k">import</span> <span class="n">Mock</span><span class="p">,</span> <span class="n">mock</span>
|
||||
<span class="kn">from</span> <span class="nn">unittest.mock</span> <span class="k">import</span> <span class="n">patch</span><span class="p">,</span> <span class="n">Mock</span><span class="p">,</span> <span class="n">MagicMock</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">DefaultRoom</span><span class="p">,</span> <span class="n">DefaultExit</span><span class="p">,</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.cmdset_character</span> <span class="k">import</span> <span class="n">CharacterCmdSet</span>
|
||||
|
|
@ -97,7 +97,8 @@
|
|||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CommandTest"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.CommandTest">[docs]</a><span class="k">class</span> <span class="nc">CommandTest</span><span class="p">(</span><span class="n">EvenniaTest</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CommandTest"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.CommandTest">[docs]</a><span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.server.portal.portal.LoopingCall"</span><span class="p">,</span> <span class="n">new</span><span class="o">=</span><span class="n">MagicMock</span><span class="p">())</span>
|
||||
<span class="k">class</span> <span class="nc">CommandTest</span><span class="p">(</span><span class="n">EvenniaTest</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Tests a command</span>
|
||||
<span class="sd"> """</span>
|
||||
|
|
@ -190,11 +191,18 @@
|
|||
<span class="n">returned_msg</span> <span class="o">=</span> <span class="n">msg_sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">_RE</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">ansi</span><span class="o">.</span><span class="n">parse_ansi</span><span class="p">(</span><span class="n">mess</span><span class="p">,</span> <span class="n">strip_ansi</span><span class="o">=</span><span class="n">noansi</span><span class="p">))</span> <span class="k">for</span> <span class="n">mess</span> <span class="ow">in</span> <span class="n">stored_msg</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">msg</span> <span class="o">==</span> <span class="s2">""</span> <span class="ow">and</span> <span class="n">returned_msg</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">returned_msg</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">strip</span><span class="p">()):</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="n">msg</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">msg</span> <span class="o">==</span> <span class="s2">""</span> <span class="ow">and</span> <span class="n">returned_msg</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">returned_msg</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span>
|
||||
<span class="n">prt</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="n">ic</span><span class="p">,</span> <span class="n">char</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
|
||||
<span class="n">prt</span> <span class="o">+=</span> <span class="n">char</span>
|
||||
|
||||
<span class="n">sep1</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">*</span> <span class="mi">30</span> <span class="o">+</span> <span class="s2">"Wanted message"</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">*</span> <span class="mi">34</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">sep2</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">*</span> <span class="mi">30</span> <span class="o">+</span> <span class="s2">"Returned message"</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">*</span> <span class="mi">32</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">sep3</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">*</span> <span class="mi">78</span>
|
||||
<span class="n">retval</span> <span class="o">=</span> <span class="n">sep1</span> <span class="o">+</span> <span class="n">msg</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">+</span> <span class="n">sep2</span> <span class="o">+</span> <span class="n">returned_msg</span> <span class="o">+</span> <span class="n">sep3</span>
|
||||
<span class="n">retval</span> <span class="o">=</span> <span class="n">sep1</span> <span class="o">+</span> <span class="n">msg</span> <span class="o">+</span> <span class="n">sep2</span> <span class="o">+</span> <span class="n">returned_msg</span> <span class="o">+</span> <span class="n">sep3</span>
|
||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="n">retval</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">returned_msg</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="n">stored_msg</span><span class="p">)</span>
|
||||
|
|
@ -400,11 +408,29 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">CmdOOC</span><span class="p">(),</span> <span class="s2">""</span><span class="p">,</span> <span class="s2">"You go OOC."</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestAccount.test_ic"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestAccount.test_ic">[docs]</a> <span class="k">def</span> <span class="nf">test_ic</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">unpuppet_object</span><span class="p">(</span><span class="bp">self</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">call</span><span class="p">(</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">CmdIC</span><span class="p">(),</span> <span class="s2">"Char"</span><span class="p">,</span> <span class="s2">"You become Char."</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">,</span> <span class="n">receiver</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestAccount.test_ic__other_object"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestAccount.test_ic__other_object">[docs]</a> <span class="k">def</span> <span class="nf">test_ic__other_object</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">obj1</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">unpuppet_object</span><span class="p">(</span><span class="bp">self</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">call</span><span class="p">(</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">CmdIC</span><span class="p">(),</span> <span class="s2">"Obj"</span><span class="p">,</span> <span class="s2">"You become Obj."</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">,</span> <span class="n">receiver</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">obj1</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestAccount.test_ic__nonaccess"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestAccount.test_ic__nonaccess">[docs]</a> <span class="k">def</span> <span class="nf">test_ic__nonaccess</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">unpuppet_object</span><span class="p">(</span><span class="bp">self</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">call</span><span class="p">(</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">CmdIC</span><span class="p">(),</span>
|
||||
<span class="s2">"Nonexistent"</span><span class="p">,</span>
|
||||
<span class="s2">"That is not a valid character choice."</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">,</span>
|
||||
<span class="n">receiver</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestAccount.test_password"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestAccount.test_password">[docs]</a> <span class="k">def</span> <span class="nf">test_password</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">CmdPassword</span><span class="p">(),</span>
|
||||
|
|
@ -510,10 +536,18 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdExamine</span><span class="p">(),</span> <span class="s2">"*TestAccount"</span><span class="p">,</span> <span class="s2">"Name/key: TestAccount"</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test</span> <span class="o">=</span> <span class="s2">"testval"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdExamine</span><span class="p">(),</span> <span class="s2">"self/test"</span><span class="p">,</span> <span class="s2">"Persistent attributes:</span><span class="se">\n</span><span class="s2"> test = testval"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdExamine</span><span class="p">(),</span> <span class="s2">"self/test"</span><span class="p">,</span> <span class="s2">"Persistent attribute(s):</span><span class="se">\n</span><span class="s2"> test = testval"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdExamine</span><span class="p">(),</span> <span class="s2">"NotFound"</span><span class="p">,</span> <span class="s2">"Could not find 'NotFound'."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdExamine</span><span class="p">(),</span> <span class="s2">"out"</span><span class="p">,</span> <span class="s2">"Name/key: out"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># escape inlinefuncs</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test2</span> <span class="o">=</span> <span class="s2">"this is a $random() value."</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="n">building</span><span class="o">.</span><span class="n">CmdExamine</span><span class="p">(),</span>
|
||||
<span class="s2">"self/test2"</span><span class="p">,</span>
|
||||
<span class="s2">"Persistent attribute(s):</span><span class="se">\n</span><span class="s2"> test2 = this is a \$random() value."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">scripts</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">script</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdExamine</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">account</span><span class="o">.</span><span class="n">scripts</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">script</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span>
|
||||
|
|
@ -559,7 +593,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdSetAttribute</span><span class="p">(),</span> <span class="s2">"Obj2/test2"</span><span class="p">,</span> <span class="s2">"Attribute Obj2/test2 = value2"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdSetAttribute</span><span class="p">(),</span> <span class="s2">"Obj2/NotFound"</span><span class="p">,</span> <span class="s2">"Obj2 has no attribute 'notfound'."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.commands.default.building.EvEditor"</span><span class="p">)</span> <span class="k">as</span> <span class="n">mock_ed</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.commands.default.building.EvEditor"</span><span class="p">)</span> <span class="k">as</span> <span class="n">mock_ed</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdSetAttribute</span><span class="p">(),</span> <span class="s2">"/edit Obj2/test3"</span><span class="p">)</span>
|
||||
<span class="n">mock_ed</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">,</span> <span class="n">Anything</span><span class="p">,</span> <span class="n">Anything</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"Obj2/test3"</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -843,7 +877,7 @@
|
|||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdDesc</span><span class="p">(),</span> <span class="s2">""</span><span class="p">,</span> <span class="s2">"Usage: "</span><span class="p">)</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.commands.default.building.EvEditor"</span><span class="p">)</span> <span class="k">as</span> <span class="n">mock_ed</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.commands.default.building.EvEditor"</span><span class="p">)</span> <span class="k">as</span> <span class="n">mock_ed</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdDesc</span><span class="p">(),</span> <span class="s2">"/edit"</span><span class="p">)</span>
|
||||
<span class="n">mock_ed</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="p">,</span>
|
||||
|
|
@ -1058,9 +1092,9 @@
|
|||
<span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">with</span> <span class="n">mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span>
|
||||
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.commands.default.building.protlib.search_prototype"</span><span class="p">,</span>
|
||||
<span class="n">new</span><span class="o">=</span><span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="n">test_prototype</span><span class="p">),</span>
|
||||
<span class="n">new</span><span class="o">=</span><span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="n">test_prototype</span><span class="p">),</span>
|
||||
<span class="p">)</span> <span class="k">as</span> <span class="n">mprot</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="n">building</span><span class="o">.</span><span class="n">CmdTypeclass</span><span class="p">(),</span>
|
||||
|
|
@ -1126,7 +1160,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="s2">"/exact Obj"</span><span class="p">,</span> <span class="s2">"One Match"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Test multitype filtering</span>
|
||||
<span class="k">with</span> <span class="n">mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span>
|
||||
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.commands.default.building.CHAR_TYPECLASS"</span><span class="p">,</span>
|
||||
<span class="s2">"evennia.objects.objects.DefaultCharacter"</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
|
|
@ -1166,7 +1200,7 @@
|
|||
<span class="s2">"= Obj"</span><span class="p">,</span>
|
||||
<span class="s2">"To create a global script you need scripts/add <typeclass>."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdScript</span><span class="p">(),</span> <span class="s2">"Obj = "</span><span class="p">,</span> <span class="s2">"dbref obj"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdScript</span><span class="p">(),</span> <span class="s2">"Obj = "</span><span class="p">,</span> <span class="s2">"dbref obj"</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="n">building</span><span class="o">.</span><span class="n">CmdScript</span><span class="p">(),</span> <span class="s2">"/start Obj"</span><span class="p">,</span> <span class="s2">"0 scripts started on Obj"</span>
|
||||
|
|
@ -1594,11 +1628,11 @@
|
|||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">multimatch</span><span class="p">,</span> <span class="s2">"look"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestSystemCommands.test_channelcommand"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestSystemCommands.test_channelcommand">[docs]</a> <span class="nd">@mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.commands.default.syscommands.ChannelDB"</span><span class="p">)</span>
|
||||
<div class="viewcode-block" id="TestSystemCommands.test_channelcommand"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestSystemCommands.test_channelcommand">[docs]</a> <span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.commands.default.syscommands.ChannelDB"</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">test_channelcommand</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mock_channeldb</span><span class="p">):</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
||||
<span class="n">mock_channeldb</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_channel</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="n">channel</span><span class="p">)</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">()</span>
|
||||
<span class="n">mock_channeldb</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_channel</span> <span class="o">=</span> <span class="n">MagicMock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="n">channel</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">syscommands</span><span class="o">.</span><span class="n">SystemSendToChannel</span><span class="p">(),</span> <span class="s2">"public:Hello"</span><span class="p">)</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="o">.</span><span class="n">assert_called</span><span class="p">()</span></div></div>
|
||||
|
|
|
|||
|
|
@ -91,7 +91,9 @@
|
|||
<span class="k">if</span> <span class="n">cdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"keep_log"</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"keep_log"</span><span class="p">,</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"keep_log"</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">cdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"desc"</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"desc"</span><span class="p">,</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"desc"</span><span class="p">])</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"desc"</span><span class="p">,</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"desc"</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">cdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"tags"</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">batch_add</span><span class="p">(</span><span class="o">*</span><span class="n">cdict</span><span class="p">[</span><span class="s2">"tags"</span><span class="p">])</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.basetype_setup"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.basetype_setup">[docs]</a> <span class="k">def</span> <span class="nf">basetype_setup</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># delayed import of the channelhandler</span>
|
||||
|
|
@ -435,7 +437,8 @@
|
|||
<span class="sd"> to build senders for the message.</span>
|
||||
<span class="sd"> sender_strings (list, optional): Name strings of senders. Used for external</span>
|
||||
<span class="sd"> connections where the sender is not an account or object.</span>
|
||||
<span class="sd"> When this is defined, external will be assumed.</span>
|
||||
<span class="sd"> When this is defined, external will be assumed. The list will be </span>
|
||||
<span class="sd"> filtered so each sender-string only occurs once.</span>
|
||||
<span class="sd"> keep_log (bool or None, optional): This allows to temporarily change the logging status of</span>
|
||||
<span class="sd"> this channel message. If `None`, the Channel's `keep_log` Attribute will</span>
|
||||
<span class="sd"> be used. If `True` or `False`, that logging status will be used for this</span>
|
||||
|
|
@ -466,6 +469,8 @@
|
|||
<span class="n">msgobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pre_send_message</span><span class="p">(</span><span class="n">msgobj</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">msgobj</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="k">if</span> <span class="n">sender_strings</span><span class="p">:</span>
|
||||
<span class="n">sender_strings</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">make_iter</span><span class="p">(</span><span class="n">sender_strings</span><span class="p">)))</span>
|
||||
<span class="n">msgobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">message_transform</span><span class="p">(</span>
|
||||
<span class="n">msgobj</span><span class="p">,</span> <span class="n">emit</span><span class="o">=</span><span class="n">emit</span><span class="p">,</span> <span class="n">sender_strings</span><span class="o">=</span><span class="n">sender_strings</span><span class="p">,</span> <span class="n">external</span><span class="o">=</span><span class="n">external</span>
|
||||
<span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -184,9 +184,9 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">text</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_RE_GENDER_PRONOUN</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_pronoun</span><span class="p">,</span> <span class="n">text</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="o">*</span><span class="n">text</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="p">(</span><span class="n">_RE_GENDER_PRONOUN</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_pronoun</span><span class="p">,</span> <span class="n">text</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="o">*</span><span class="n">text</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RE_GENDER_PRONOUN</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_pronoun</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">_RE_GENDER_PRONOUN</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_pronoun</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
|
||||
<span class="k">pass</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>
|
||||
|
|
|
|||
|
|
@ -369,6 +369,8 @@
|
|||
|
||||
<span class="sd">```</span>
|
||||
|
||||
<span class="sd">----</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@
|
|||
<span class="sd">instead of the default:</span>
|
||||
|
||||
<span class="sd"> class Character(TBRangeCharacter):</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd">Do the same thing in your game's objects.py module for TBRangeObject:</span>
|
||||
|
||||
<span class="sd"> from evennia.contrib.turnbattle.tb_range import TBRangeObject</span>
|
||||
|
|
@ -287,10 +287,10 @@
|
|||
<div class="viewcode-block" id="at_defeat"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.at_defeat">[docs]</a><span class="k">def</span> <span class="nf">at_defeat</span><span class="p">(</span><span class="n">defeated</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Announces the defeat of a fighter in combat.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> defeated (obj): Fighter that's been defeated.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> All this does is announce a defeat message by default, but if you</span>
|
||||
<span class="sd"> want anything else to happen to defeated fighters (like putting them</span>
|
||||
|
|
@ -341,11 +341,11 @@
|
|||
<div class="viewcode-block" id="get_range"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.get_range">[docs]</a><span class="k">def</span> <span class="nf">get_range</span><span class="p">(</span><span class="n">obj1</span><span class="p">,</span> <span class="n">obj2</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Gets the combat range between two objects.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> obj1 (obj): First object</span>
|
||||
<span class="sd"> obj2 (obj): Second object</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> range (int or None): Distance between two objects or None if not applicable</span>
|
||||
<span class="sd"> """</span>
|
||||
|
|
@ -365,7 +365,7 @@
|
|||
<div class="viewcode-block" id="distance_inc"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.distance_inc">[docs]</a><span class="k">def</span> <span class="nf">distance_inc</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Function that increases distance in range field between mover and target.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> mover (obj): The object moving</span>
|
||||
<span class="sd"> target (obj): The object to be moved away from</span>
|
||||
|
|
@ -381,11 +381,11 @@
|
|||
<div class="viewcode-block" id="approach"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.approach">[docs]</a><span class="k">def</span> <span class="nf">approach</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Manages a character's whole approach, including changes in ranges to other characters.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> mover (obj): The object moving</span>
|
||||
<span class="sd"> target (obj): The object to be moved toward</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> The mover will also automatically move toward any objects that are closer to the</span>
|
||||
<span class="sd"> target than the mover is. The mover will also move away from anything they started</span>
|
||||
|
|
@ -395,7 +395,7 @@
|
|||
<span class="k">def</span> <span class="nf">distance_dec</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Helper function that decreases distance in range field between mover and target.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> mover (obj): The object moving</span>
|
||||
<span class="sd"> target (obj): The object to be moved toward</span>
|
||||
|
|
@ -429,11 +429,11 @@
|
|||
<div class="viewcode-block" id="withdraw"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.withdraw">[docs]</a><span class="k">def</span> <span class="nf">withdraw</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Manages a character's whole withdrawal, including changes in ranges to other characters.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> mover (obj): The object moving</span>
|
||||
<span class="sd"> target (obj): The object to be moved away from</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> The mover will also automatically move away from objects that are close to the target</span>
|
||||
<span class="sd"> of their withdrawl. The mover will never inadvertently move toward anything else while</span>
|
||||
|
|
@ -581,7 +581,8 @@
|
|||
<span class="sd"> room as its object.</span>
|
||||
|
||||
<span class="sd"> Fights persist until only one participant is left with any HP or all</span>
|
||||
<span class="sd"> remaining participants choose to end the combat with the 'disengage' command.</span>
|
||||
<span class="sd"> remaining participants choose to end the combat with the 'disengage'</span>
|
||||
<span class="sd"> command.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="TBRangeTurnHandler.at_script_creation"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.TBRangeTurnHandler.at_script_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_script_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -656,7 +657,7 @@
|
|||
<div class="viewcode-block" id="TBRangeTurnHandler.init_range"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.TBRangeTurnHandler.init_range">[docs]</a> <span class="k">def</span> <span class="nf">init_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">to_init</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Initializes range values for an object at the start of a fight.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> to_init (object): Object to initialize range field for.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
|
@ -679,14 +680,13 @@
|
|||
<div class="viewcode-block" id="TBRangeTurnHandler.join_rangefield"><a class="viewcode-back" href="../../../../api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.TBRangeTurnHandler.join_rangefield">[docs]</a> <span class="k">def</span> <span class="nf">join_rangefield</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">to_init</span><span class="p">,</span> <span class="n">anchor_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">add_distance</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Adds a new object to the range field of a fight in progress.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> to_init (object): Object to initialize range field for.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> Keyword args:</span>
|
||||
<span class="sd"> anchor_obj (object): Object to copy range values from, or None for a random object.</span>
|
||||
<span class="sd"> add_distance (int): Distance to put between to_init object and anchor object.</span>
|
||||
<span class="sd"> </span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Get a list of room's contents without to_init object.</span>
|
||||
<span class="n">contents</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">contents</span>
|
||||
|
|
|
|||
|
|
@ -95,9 +95,9 @@
|
|||
<span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">is_iter</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="k">else</span> <span class="n">text</span>
|
||||
<span class="k">if</span> <span class="n">from_obj</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">from_obj</span><span class="p">):</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{self.key}</span><span class="s2"> echoes back to you:</span><span class="se">\n\"</span><span class="si">{text}</span><span class="se">\"</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s1">'</span><span class="si">{self.key}</span><span class="s1"> echoes back to you:</span><span class="se">\n</span><span class="s1">"</span><span class="si">{text}</span><span class="s1">".'</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{self.key}</span><span class="s2"> echoes back:</span><span class="se">\n\"</span><span class="si">{text}</span><span class="se">\"</span><span class="s2">."</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">f</span><span class="s1">'</span><span class="si">{self.key}</span><span class="s1"> echoes back:</span><span class="se">\n</span><span class="s1">"</span><span class="si">{text}</span><span class="s1">".'</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="p">])</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># no from_obj and no location, just log</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{self.key}</span><span class="s2">.msg was called without from_obj and .location is None."</span><span class="p">)</span></div></div>
|
||||
|
|
|
|||
|
|
@ -580,7 +580,9 @@
|
|||
<span class="sd"> Only true if accessed_obj has the specified tag and optional</span>
|
||||
<span class="sd"> category.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">accessed_obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">))</span></div>
|
||||
<span class="n">tagkey</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">args</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">accessed_obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tagkey</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="inside"><a class="viewcode-back" href="../../../api/evennia.locks.lockfuncs.html#evennia.locks.lockfuncs.inside">[docs]</a><span class="k">def</span> <span class="nf">inside</span><span class="p">(</span><span class="n">accessing_obj</span><span class="p">,</span> <span class="n">accessed_obj</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>
|
||||
|
|
|
|||
|
|
@ -277,7 +277,13 @@
|
|||
<span class="n">elist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Lock: lock-function '</span><span class="si">%s</span><span class="s2">' is not available."</span><span class="p">)</span> <span class="o">%</span> <span class="n">funcstring</span><span class="p">)</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">rest</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">and</span> <span class="s2">"="</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">arg</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">arg</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">rest</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">and</span> <span class="s2">"="</span> <span class="ow">in</span> <span class="n">arg</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="p">[</span>
|
||||
<span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">arg</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">rest</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">arg</span> <span class="ow">and</span> <span class="s2">"="</span> <span class="ow">in</span> <span class="n">arg</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">lock_funcs</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">func</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="n">evalstring</span> <span class="o">=</span> <span class="n">evalstring</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">funcstring</span><span class="p">,</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">lock_funcs</span><span class="p">)</span> <span class="o"><</span> <span class="n">nfuncs</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -195,7 +195,7 @@
|
|||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> attribute_name (str): Attribute key to search for.</span>
|
||||
<span class="sd"> attribute_value (str): Attribute value to search for.</span>
|
||||
<span class="sd"> attribute_value (any): Attribute value to search for. This can also be database objects.</span>
|
||||
<span class="sd"> candidates (list, optional): Candidate objects to limit search to.</span>
|
||||
<span class="sd"> typeclasses (list, optional): Python pats to restrict matches with.</span>
|
||||
|
||||
|
|
@ -216,31 +216,13 @@
|
|||
<span class="p">)</span>
|
||||
<span class="n">type_restriction</span> <span class="o">=</span> <span class="n">typeclasses</span> <span class="ow">and</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_typeclass_path__in</span><span class="o">=</span><span class="n">make_iter</span><span class="p">(</span><span class="n">typeclasses</span><span class="p">))</span> <span class="ow">or</span> <span class="n">Q</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># This doesn't work if attribute_value is an object. Workaround below</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">attribute_value</span><span class="p">,</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">cand_restriction</span>
|
||||
<span class="o">&</span> <span class="n">type_restriction</span>
|
||||
<span class="o">&</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_attributes__db_key</span><span class="o">=</span><span class="n">attribute_name</span><span class="p">,</span> <span class="n">db_attributes__db_value</span><span class="o">=</span><span class="n">attribute_value</span><span class="p">)</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"id"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># We must loop for safety since the referenced lookup gives deepcopy error if attribute value is an object.</span>
|
||||
<span class="k">global</span> <span class="n">_ATTR</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_ATTR</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="k">import</span> <span class="n">Attribute</span> <span class="k">as</span> <span class="n">_ATTR</span>
|
||||
<span class="n">cands</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">cand_restriction</span> <span class="o">&</span> <span class="n">type_restriction</span> <span class="o">&</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_attributes__db_key</span><span class="o">=</span><span class="n">attribute_name</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">results</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">attr</span><span class="o">.</span><span class="n">objectdb_set</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">_ATTR</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">objectdb__in</span><span class="o">=</span><span class="n">cands</span><span class="p">,</span> <span class="n">db_value</span><span class="o">=</span><span class="n">attribute_value</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"id"</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">chain</span><span class="p">(</span><span class="o">*</span><span class="n">results</span><span class="p">)</span>
|
||||
<span class="n">results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">cand_restriction</span>
|
||||
<span class="o">&</span> <span class="n">type_restriction</span>
|
||||
<span class="o">&</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_attributes__db_key</span><span class="o">=</span><span class="n">attribute_name</span><span class="p">)</span>
|
||||
<span class="o">&</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_attributes__db_value</span><span class="o">=</span><span class="n">attribute_value</span><span class="p">)</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"id"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">results</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_objs_with_db_property</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">property_name</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">dbref</span><span class="p">,</span> <span class="n">lazy_property</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ContentsHandler"><a class="viewcode-back" href="../../../api/evennia.objects.models.html#evennia.objects.admin.ContentsHandler">[docs]</a><span class="k">class</span> <span class="nc">ContentsHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="ContentsHandler"><a class="viewcode-back" href="../../../api/evennia.objects.models.html#evennia.objects.admin.ContentsHandler">[docs]</a><span class="k">class</span> <span class="nc">ContentsHandler</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Handles and caches the contents of an object to avoid excessive</span>
|
||||
<span class="sd"> lookups (this is done very often due to cmdhandler needing to look</span>
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@
|
|||
|
||||
<span class="c1"># lockstring of newly created objects, for easy overloading.</span>
|
||||
<span class="c1"># Will be formatted with the appropriate attributes.</span>
|
||||
<span class="n">lockstring</span> <span class="o">=</span> <span class="s2">"control:id(</span><span class="si">{account_id}</span><span class="s2">) or perm(Admin);"</span> <span class="s2">"delete:id(</span><span class="si">{account_id}</span><span class="s2">) or perm(Admin)"</span>
|
||||
<span class="n">lockstring</span> <span class="o">=</span> <span class="s2">"control:id(</span><span class="si">{account_id}</span><span class="s2">) or perm(Admin);delete:id(</span><span class="si">{account_id}</span><span class="s2">) or perm(Admin)"</span>
|
||||
|
||||
<span class="n">objects</span> <span class="o">=</span> <span class="n">ObjectManager</span><span class="p">()</span>
|
||||
|
||||
|
|
@ -434,8 +434,7 @@
|
|||
<span class="sd"> - `me,self`: self-reference to this object</span>
|
||||
<span class="sd"> - `<num>-<string>` - can be used to differentiate</span>
|
||||
<span class="sd"> between multiple same-named matches</span>
|
||||
<span class="sd"> global_search (bool): Search all objects globally. This is overruled</span>
|
||||
<span class="sd"> by `location` keyword.</span>
|
||||
<span class="sd"> global_search (bool): Search all objects globally. This overrules 'location' data.</span>
|
||||
<span class="sd"> use_nicks (bool): Use nickname-replace (nicktype "object") on `searchdata`.</span>
|
||||
<span class="sd"> typeclass (str or Typeclass, or list of either): Limit search only</span>
|
||||
<span class="sd"> to `Objects` with this typeclass. May be a list of typeclasses</span>
|
||||
|
|
@ -2083,10 +2082,13 @@
|
|||
<span class="n">_content_types</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"character"</span><span class="p">,)</span>
|
||||
<span class="c1"># lockstring of newly created rooms, for easy overloading.</span>
|
||||
<span class="c1"># Will be formatted with the appropriate attributes.</span>
|
||||
<span class="n">lockstring</span> <span class="o">=</span> <span class="s2">"puppet:id(</span><span class="si">{character_id}</span><span class="s2">) or pid(</span><span class="si">{account_id}</span><span class="s2">) or perm(Developer) or pperm(Developer);delete:id(</span><span class="si">{account_id}</span><span class="s2">) or perm(Admin)"</span>
|
||||
<span class="n">lockstring</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"puppet:id(</span><span class="si">{character_id}</span><span class="s2">) or pid(</span><span class="si">{account_id}</span><span class="s2">) or perm(Developer) or pperm(Developer);"</span>
|
||||
<span class="s2">"delete:id(</span><span class="si">{account_id}</span><span class="s2">) or perm(Admin)"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="DefaultCharacter.create"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.create">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Creates a basic Character with default parameters, unless otherwise</span>
|
||||
<span class="sd"> specified or extended.</span>
|
||||
|
|
@ -2095,8 +2097,8 @@
|
|||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> key (str): Name of the new Character.</span>
|
||||
<span class="sd"> account (obj): Account to associate this Character with. Required as</span>
|
||||
<span class="sd"> an argument, but one can fake it out by supplying None-- it will</span>
|
||||
<span class="sd"> account (obj, optional): Account to associate this Character with.</span>
|
||||
<span class="sd"> If unset supplying None-- it will</span>
|
||||
<span class="sd"> change the default lockset and skip creator attribution.</span>
|
||||
|
||||
<span class="sd"> Keyword args:</span>
|
||||
|
|
@ -2346,7 +2348,7 @@
|
|||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="DefaultRoom.create"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultRoom.create">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Creates a basic Room with default parameters, unless otherwise</span>
|
||||
<span class="sd"> specified or extended.</span>
|
||||
|
|
@ -2355,7 +2357,9 @@
|
|||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> key (str): Name of the new Room.</span>
|
||||
<span class="sd"> account (obj): Account to associate this Room with.</span>
|
||||
<span class="sd"> account (obj, optional): Account to associate this Room with. If</span>
|
||||
<span class="sd"> given, it will be given specific control/edit permissions to this</span>
|
||||
<span class="sd"> object (along with normal Admin perms). If not given, default</span>
|
||||
|
||||
<span class="sd"> Keyword args:</span>
|
||||
<span class="sd"> description (str): Brief description for this object.</span>
|
||||
|
|
@ -2384,13 +2388,20 @@
|
|||
<span class="c1"># Get description, if provided</span>
|
||||
<span class="n">description</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"description"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># get locks if provided</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c1"># Create the Room</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_object</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Set appropriate locks</span>
|
||||
<span class="n">lockstring</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">lockstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">account</span><span class="o">.</span><span class="n">id</span><span class="p">))</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">lockstring</span><span class="p">)</span>
|
||||
<span class="c1"># Add locks</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">locks</span> <span class="ow">and</span> <span class="n">account</span><span class="p">:</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">lockstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"id"</span><span class="p">:</span> <span class="n">account</span><span class="o">.</span><span class="n">id</span><span class="p">})</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="n">locks</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">account</span><span class="p">:</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">lockstring</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"id"</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">})</span>
|
||||
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">locks</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Record creator id and creation IP</span>
|
||||
<span class="k">if</span> <span class="n">ip</span><span class="p">:</span>
|
||||
|
|
@ -2540,7 +2551,7 @@
|
|||
<span class="c1"># Command hooks</span>
|
||||
|
||||
<div class="viewcode-block" id="DefaultExit.create"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.create">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">dest</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">dest</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Creates a basic Exit with default parameters, unless otherwise</span>
|
||||
<span class="sd"> specified or extended.</span>
|
||||
|
|
@ -2584,13 +2595,18 @@
|
|||
|
||||
<span class="n">description</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"description"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c1"># Create the Exit</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_object</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Set appropriate locks</span>
|
||||
<span class="n">lockstring</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">lockstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">account</span><span class="o">.</span><span class="n">id</span><span class="p">))</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">lockstring</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">locks</span> <span class="ow">and</span> <span class="n">account</span><span class="p">:</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">lockstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"id"</span><span class="p">:</span> <span class="n">account</span><span class="o">.</span><span class="n">id</span><span class="p">})</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="n">locks</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">account</span><span class="p">:</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">lockstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"id"</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">})</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">locks</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Record creator id and creation IP</span>
|
||||
<span class="k">if</span> <span class="n">ip</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@
|
|||
<span class="sd"> Get all scripts in the database.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> key (str, optional): Restrict result to only those</span>
|
||||
<span class="sd"> key (str or int, optional): Restrict result to only those</span>
|
||||
<span class="sd"> with matching key or dbref.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
|
|
@ -124,12 +124,9 @@
|
|||
<span class="k">if</span> <span class="n">key</span><span class="p">:</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">dbref</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dbref</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">dbref</span> <span class="ow">or</span> <span class="n">dbref</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># return either [] or a valid list (never [None])</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="p">[</span><span class="n">res</span> <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">dbref_search</span><span class="p">(</span><span class="n">dbref</span><span class="p">)]</span> <span class="k">if</span> <span class="n">res</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">script</span><span class="p">:</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_key</span><span class="o">=</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">script</span>
|
||||
<span class="k">if</span> <span class="n">dbref</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">dbref</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_key__iexact</span><span class="o">=</span><span class="n">key</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">delete_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbref</span><span class="p">):</span>
|
||||
|
|
@ -272,7 +269,7 @@
|
|||
<span class="n">ostring</span> <span class="o">=</span> <span class="n">ostring</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
|
||||
<span class="n">dbref</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dbref</span><span class="p">(</span><span class="n">ostring</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">dbref</span> <span class="ow">or</span> <span class="n">dbref</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">dbref</span><span class="p">:</span>
|
||||
<span class="c1"># this is a dbref, try to find the script directly</span>
|
||||
<span class="n">dbref_match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dbref_search</span><span class="p">(</span><span class="n">dbref</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">dbref_match</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span>
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
|
||||
<span class="kn">from</span> <span class="nn">os.path</span> <span class="k">import</span> <span class="n">dirname</span><span class="p">,</span> <span class="n">abspath</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.application</span> <span class="k">import</span> <span class="n">internet</span><span class="p">,</span> <span class="n">service</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet.task</span> <span class="k">import</span> <span class="n">LoopingCall</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet</span> <span class="k">import</span> <span class="n">protocol</span><span class="p">,</span> <span class="n">reactor</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.python.log</span> <span class="k">import</span> <span class="n">ILogObserver</span>
|
||||
|
||||
|
|
@ -61,6 +62,7 @@
|
|||
|
||||
<span class="n">django</span><span class="o">.</span><span class="n">setup</span><span class="p">()</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">connection</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">evennia</span>
|
||||
|
||||
|
|
@ -142,10 +144,29 @@
|
|||
<span class="n">WEB_PLUGINS_MODULE</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">INFO_DICT</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"WARNING: settings.WEB_PLUGINS_MODULE not found - "</span>
|
||||
<span class="s2">"copy 'evennia/game_template/server/conf/web_plugins.py to mygame/server/conf."</span>
|
||||
<span class="s2">"copy 'evennia/game_template/server/conf/web_plugins.py to "</span>
|
||||
<span class="s2">"mygame/server/conf."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">_MAINTENANCE_COUNT</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_portal_maintenance</span><span class="p">():</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Repeated maintenance tasks for the portal.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_MAINTENANCE_COUNT</span>
|
||||
|
||||
<span class="n">_MAINTENANCE_COUNT</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="p">(</span><span class="mi">3600</span> <span class="o">*</span> <span class="mi">7</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># drop database connection every 7 hrs to avoid default timeouts on MySQL</span>
|
||||
<span class="c1"># (see https://github.com/evennia/evennia/issues/1376)</span>
|
||||
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
<span class="c1"># Portal Service object</span>
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
|
|
@ -184,6 +205,9 @@
|
|||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maintenance_task</span> <span class="o">=</span> <span class="n">LoopingCall</span><span class="p">(</span><span class="n">_portal_maintenance</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maintenance_task</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="mi">60</span><span class="p">,</span> <span class="n">now</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># call every minute</span>
|
||||
|
||||
<span class="c1"># in non-interactive portal mode, this gets overwritten by</span>
|
||||
<span class="c1"># cmdline sent by the evennia launcher</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">server_twistd_cmd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_backup_server_twistd_cmd</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -290,6 +290,8 @@
|
|||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="c1"># just to be sure</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">to_str</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||||
|
||||
<span class="n">flags</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_flags</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -1135,13 +1135,13 @@
|
|||
<span class="sd"> repeat-calling add when having many Attributes to add.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> *args (tuple): Tuples of varying length representing the</span>
|
||||
<span class="sd"> Attribute to add to this object. Supported tuples are</span>
|
||||
|
||||
<span class="sd"> - (key, value)</span>
|
||||
<span class="sd"> - (key, value, category)</span>
|
||||
<span class="sd"> - (key, value, category, lockstring)</span>
|
||||
<span class="sd"> - (key, value, category, lockstring, default_access)</span>
|
||||
<span class="sd"> *args (tuple): Each argument should be a tuples (can be of varying</span>
|
||||
<span class="sd"> length) representing the Attribute to add to this object.</span>
|
||||
<span class="sd"> Supported tuples are</span>
|
||||
<span class="sd"> - `(key, value)`</span>
|
||||
<span class="sd"> - `(key, value, category)`</span>
|
||||
<span class="sd"> - `(key, value, category, lockstring)`</span>
|
||||
<span class="sd"> - `(key, value, category, lockstring, default_access)`</span>
|
||||
|
||||
<span class="sd"> Keyword args:</span>
|
||||
<span class="sd"> strattr (bool): If `True`, value must be a string. This</span>
|
||||
|
|
|
|||
|
|
@ -151,10 +151,38 @@
|
|||
<span class="n">attrs</span><span class="p">[</span><span class="s2">"typename"</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="n">attrs</span><span class="p">[</span><span class="s2">"path"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">attrs</span><span class="p">[</span><span class="s2">"__module__"</span><span class="p">],</span> <span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_dbmodel</span><span class="p">(</span><span class="n">bases</span><span class="p">):</span>
|
||||
<span class="sd">"""Recursively get the dbmodel"""</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">bases</span><span class="p">,</span> <span class="s2">"__iter__"</span><span class="p">):</span>
|
||||
<span class="n">bases</span> <span class="o">=</span> <span class="p">[</span><span class="n">bases</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">base</span> <span class="ow">in</span> <span class="n">bases</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">base</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">proxy</span> <span class="ow">or</span> <span class="n">base</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">abstract</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">kls</span> <span class="ow">in</span> <span class="n">base</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">parents</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">_get_dbmodel</span><span class="p">(</span><span class="n">kls</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="c1"># this happens if trying to parse a non-typeclass mixin parent,</span>
|
||||
<span class="c1"># without a _meta</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">base</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="n">dbmodel</span> <span class="o">=</span> <span class="n">_get_dbmodel</span><span class="p">(</span><span class="n">bases</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">dbmodel</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{name}</span><span class="s2"> does not appear to inherit from a database model."</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># typeclass proxy setup</span>
|
||||
<span class="c1"># first check explicit __applabel__ on the typeclass, then figure</span>
|
||||
<span class="c1"># it out from the dbmodel</span>
|
||||
<span class="k">if</span> <span class="s2">"__applabel__"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
|
||||
<span class="c1"># find the app-label in one of the bases, usually the dbmodel</span>
|
||||
<span class="n">attrs</span><span class="p">[</span><span class="s2">"__applabel__"</span><span class="p">]</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">app_label</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"Meta"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">Meta</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
|
||||
<span class="n">proxy</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">app_label</span> <span class="o">=</span> <span class="n">attrs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"__applabel__"</span><span class="p">,</span> <span class="s2">"typeclasses"</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -163,6 +191,16 @@
|
|||
|
||||
<span class="n">new_class</span> <span class="o">=</span> <span class="n">ModelBase</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">name</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># django doesn't support inheriting proxy models so we hack support for</span>
|
||||
<span class="c1"># it here by injecting `proxy_for_model` to the actual dbmodel.</span>
|
||||
<span class="c1"># Unfortunately we cannot also set the correct model_name, because this</span>
|
||||
<span class="c1"># would block multiple-inheritance of typeclasses (Django doesn't allow</span>
|
||||
<span class="c1"># multiple bases of the same model).</span>
|
||||
<span class="k">if</span> <span class="n">dbmodel</span><span class="p">:</span>
|
||||
<span class="n">new_class</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">proxy_for_model</span> <span class="o">=</span> <span class="n">dbmodel</span>
|
||||
<span class="c1"># Maybe Django will eventually handle this in the future:</span>
|
||||
<span class="c1"># new_class._meta.model_name = dbmodel._meta.model_name</span>
|
||||
|
||||
<span class="c1"># attach signals</span>
|
||||
<span class="n">signals</span><span class="o">.</span><span class="n">post_save</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">call_at_first_save</span><span class="p">,</span> <span class="n">sender</span><span class="o">=</span><span class="n">new_class</span><span class="p">)</span>
|
||||
<span class="n">signals</span><span class="o">.</span><span class="n">pre_delete</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">remove_attributes_on_delete</span><span class="p">,</span> <span class="n">sender</span><span class="o">=</span><span class="n">new_class</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@
|
|||
<span class="sd"> indexed for efficient lookup in the database. Tags are shared</span>
|
||||
<span class="sd"> between objects - a new tag is only created if the key+category</span>
|
||||
<span class="sd"> combination did not previously exist, making them unsuitable for</span>
|
||||
<span class="sd"> storing object-related data (for this a full tag should be</span>
|
||||
<span class="sd"> storing object-related data (for this a regular Attribute should be</span>
|
||||
<span class="sd"> used).</span>
|
||||
|
||||
<span class="sd"> The 'db_data' field is intended as a documentation field for the</span>
|
||||
|
|
@ -490,8 +490,8 @@
|
|||
<span class="sd"> Batch-add tags from a list of tuples.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> tuples (tuple or str): Any number of `tagstr` keys, `(keystr, category)` or</span>
|
||||
<span class="sd"> `(keystr, category, data)` tuples.</span>
|
||||
<span class="sd"> *args (tuple or str): Each argument should be a `tagstr` keys or tuple `(keystr, category)` or</span>
|
||||
<span class="sd"> `(keystr, category, data)`. It's possible to mix input types.</span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> This will generate a mimimal number of self.add calls,</span>
|
||||
|
|
|
|||
|
|
@ -345,7 +345,7 @@
|
|||
<span class="c1">#</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="create_help_entry"><a class="viewcode-back" href="../../../api/evennia.utils.create.html#evennia.utils.create.create_help_entry">[docs]</a><span class="k">def</span> <span class="nf">create_help_entry</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">entrytext</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"General"</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="create_help_entry"><a class="viewcode-back" href="../../../api/evennia.utils.create.html#evennia.utils.create.create_help_entry">[docs]</a><span class="k">def</span> <span class="nf">create_help_entry</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">entrytext</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"General"</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create a static help entry in the help database. Note that Command</span>
|
||||
<span class="sd"> help entries are dynamic and directly taken from the __doc__</span>
|
||||
|
|
@ -358,7 +358,8 @@
|
|||
<span class="sd"> entrytext (str): The body of te help entry</span>
|
||||
<span class="sd"> category (str, optional): The help category of the entry.</span>
|
||||
<span class="sd"> locks (str, optional): A lockstring to restrict access.</span>
|
||||
<span class="sd"> aliases (list of str): List of alternative (likely shorter) keynames.</span>
|
||||
<span class="sd"> aliases (list of str, optional): List of alternative (likely shorter) keynames.</span>
|
||||
<span class="sd"> tags (lst, optional): List of tags or tuples `(tag, category)`.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> help (HelpEntry): A newly created help entry.</span>
|
||||
|
|
@ -376,7 +377,9 @@
|
|||
<span class="k">if</span> <span class="n">locks</span><span class="p">:</span>
|
||||
<span class="n">new_help</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">locks</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">aliases</span><span class="p">:</span>
|
||||
<span class="n">new_help</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span>
|
||||
<span class="n">new_help</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">make_iter</span><span class="p">(</span><span class="n">aliases</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">tags</span><span class="p">:</span>
|
||||
<span class="n">new_help</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">batch_add</span><span class="p">(</span><span class="o">*</span><span class="n">tags</span><span class="p">)</span>
|
||||
<span class="n">new_help</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">new_help</span>
|
||||
<span class="k">except</span> <span class="n">IntegrityError</span><span class="p">:</span>
|
||||
|
|
@ -398,7 +401,9 @@
|
|||
<span class="c1"># Comm system methods</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="create_message"><a class="viewcode-back" href="../../../api/evennia.utils.create.html#evennia.utils.create.create_message">[docs]</a><span class="k">def</span> <span class="nf">create_message</span><span class="p">(</span><span class="n">senderobj</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">channels</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">receivers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="create_message"><a class="viewcode-back" href="../../../api/evennia.utils.create.html#evennia.utils.create.create_message">[docs]</a><span class="k">def</span> <span class="nf">create_message</span><span class="p">(</span>
|
||||
<span class="n">senderobj</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">channels</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">receivers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="kc">None</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create a new communication Msg. Msgs represent a unit of</span>
|
||||
<span class="sd"> database-persistent communication between entites.</span>
|
||||
|
|
@ -414,6 +419,7 @@
|
|||
<span class="sd"> receivers (Object, Account, str or list): An Account/Object to send</span>
|
||||
<span class="sd"> to, or a list of them. May be Account objects or accountnames.</span>
|
||||
<span class="sd"> locks (str): Lock definition string.</span>
|
||||
<span class="sd"> tags (list): A list of tags or tuples `(tag, category)`.</span>
|
||||
<span class="sd"> header (str): Mime-type or other optional information for the message</span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
|
|
@ -440,6 +446,9 @@
|
|||
<span class="n">new_message</span><span class="o">.</span><span class="n">receivers</span> <span class="o">=</span> <span class="n">receiver</span>
|
||||
<span class="k">if</span> <span class="n">locks</span><span class="p">:</span>
|
||||
<span class="n">new_message</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">locks</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">tags</span><span class="p">:</span>
|
||||
<span class="n">new_message</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">batch_add</span><span class="p">(</span><span class="o">*</span><span class="n">tags</span><span class="p">)</span>
|
||||
|
||||
<span class="n">new_message</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">new_message</span></div>
|
||||
|
||||
|
|
@ -448,7 +457,9 @@
|
|||
<span class="n">create_msg</span> <span class="o">=</span> <span class="n">create_message</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="create_channel"><a class="viewcode-back" href="../../../api/evennia.utils.create.html#evennia.utils.create.create_channel">[docs]</a><span class="k">def</span> <span class="nf">create_channel</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">keep_log</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="create_channel"><a class="viewcode-back" href="../../../api/evennia.utils.create.html#evennia.utils.create.create_channel">[docs]</a><span class="k">def</span> <span class="nf">create_channel</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">keep_log</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create A communication Channel. A Channel serves as a central hub</span>
|
||||
<span class="sd"> for distributing Msgs to groups of people without specifying the</span>
|
||||
|
|
@ -467,6 +478,7 @@
|
|||
<span class="sd"> keep_log (bool): Log channel throughput.</span>
|
||||
<span class="sd"> typeclass (str or class): The typeclass of the Channel (not</span>
|
||||
<span class="sd"> often used).</span>
|
||||
<span class="sd"> tags (list): A list of tags or tuples `(tag, category)`.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> channel (Channel): A newly created channel.</span>
|
||||
|
|
@ -483,7 +495,7 @@
|
|||
|
||||
<span class="c1"># store call signature for the signal</span>
|
||||
<span class="n">new_channel</span><span class="o">.</span><span class="n">_createdict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="n">locks</span><span class="p">,</span> <span class="n">keep_log</span><span class="o">=</span><span class="n">keep_log</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="n">locks</span><span class="p">,</span> <span class="n">keep_log</span><span class="o">=</span><span class="n">keep_log</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="n">tags</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># this will trigger the save signal which in turn calls the</span>
|
||||
|
|
|
|||
|
|
@ -270,6 +270,12 @@
|
|||
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">!=</span> <span class="n">other</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__lt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o"><</span> <span class="n">other</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__gt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">></span> <span class="n">other</span>
|
||||
|
||||
<span class="nd">@_save</span>
|
||||
<span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</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">_data</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_mutables</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
||||
|
|
@ -315,6 +321,13 @@
|
|||
<span class="k">def</span> <span class="nf">index</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="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@_save</span>
|
||||
<span class="k">def</span> <span class="nf">sort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="n">reverse</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">_SaverDict</span><span class="p">(</span><span class="n">_SaverMutable</span><span class="p">,</span> <span class="n">MutableMapping</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@
|
|||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">textwrap</span> <span class="k">import</span> <span class="n">TextWrapper</span>
|
||||
<span class="kn">from</span> <span class="nn">copy</span> <span class="k">import</span> <span class="n">deepcopy</span><span class="p">,</span> <span class="n">copy</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">m_len</span><span class="p">,</span> <span class="n">is_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">is_iter</span><span class="p">,</span> <span class="n">display_len</span> <span class="k">as</span> <span class="n">d_len</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">ANSIString</span>
|
||||
|
||||
<span class="n">_DEFAULT_WIDTH</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">CLIENT_DEFAULT_WIDTH</span>
|
||||
|
|
@ -272,7 +272,7 @@
|
|||
<span class="n">indent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">initial_indent</span>
|
||||
|
||||
<span class="c1"># Maximum width for this line.</span>
|
||||
<span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">m_len</span><span class="p">(</span><span class="n">indent</span><span class="p">)</span>
|
||||
<span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">d_len</span><span class="p">(</span><span class="n">indent</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># First chunk on line is whitespace -- drop it, unless this</span>
|
||||
<span class="c1"># is the very beginning of the text (ie. no lines started yet).</span>
|
||||
|
|
@ -280,7 +280,7 @@
|
|||
<span class="k">del</span> <span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="k">while</span> <span class="n">chunks</span><span class="p">:</span>
|
||||
<span class="n">l</span> <span class="o">=</span> <span class="n">m_len</span><span class="p">(</span><span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="n">l</span> <span class="o">=</span> <span class="n">d_len</span><span class="p">(</span><span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
||||
<span class="c1"># Can at least squeeze this chunk onto the current line.</span>
|
||||
<span class="k">if</span> <span class="n">cur_len</span> <span class="o">+</span> <span class="n">l</span> <span class="o"><=</span> <span class="n">width</span><span class="p">:</span>
|
||||
|
|
@ -293,7 +293,7 @@
|
|||
|
||||
<span class="c1"># The current line is full, and the next chunk is too big to</span>
|
||||
<span class="c1"># fit on *any* line (not just this one).</span>
|
||||
<span class="k">if</span> <span class="n">chunks</span> <span class="ow">and</span> <span class="n">m_len</span><span class="p">(</span><span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="o">></span> <span class="n">width</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">chunks</span> <span class="ow">and</span> <span class="n">d_len</span><span class="p">(</span><span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="o">></span> <span class="n">width</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_handle_long_word</span><span class="p">(</span><span class="n">chunks</span><span class="p">,</span> <span class="n">cur_line</span><span class="p">,</span> <span class="n">cur_len</span><span class="p">,</span> <span class="n">width</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># If the last chunk on this line is all whitespace, drop it.</span>
|
||||
|
|
@ -483,7 +483,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">valign</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"valign"</span><span class="p">,</span> <span class="s2">"c"</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_lines</span><span class="p">(</span><span class="n">_to_ansi</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">m_len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">d_len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_height</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># this is extra trimming required for cels in the middle of a table only</span>
|
||||
|
|
@ -522,9 +522,9 @@
|
|||
<span class="sd"> width (int): The width to crop `text` to.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">m_len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">></span> <span class="n">width</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">d_len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">></span> <span class="n">width</span><span class="p">:</span>
|
||||
<span class="n">crop_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">crop_string</span>
|
||||
<span class="k">return</span> <span class="n">text</span><span class="p">[:</span> <span class="n">width</span> <span class="o">-</span> <span class="n">m_len</span><span class="p">(</span><span class="n">crop_string</span><span class="p">)]</span> <span class="o">+</span> <span class="n">crop_string</span>
|
||||
<span class="k">return</span> <span class="n">text</span><span class="p">[:</span> <span class="n">width</span> <span class="o">-</span> <span class="n">d_len</span><span class="p">(</span><span class="n">crop_string</span><span class="p">)]</span> <span class="o">+</span> <span class="n">crop_string</span>
|
||||
<span class="k">return</span> <span class="n">text</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_reformat</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -565,7 +565,7 @@
|
|||
<span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span>
|
||||
<span class="n">adjusted_data</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="mi">0</span> <span class="o"><</span> <span class="n">width</span> <span class="o"><</span> <span class="n">m_len</span><span class="p">(</span><span class="n">line</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="mi">0</span> <span class="o"><</span> <span class="n">width</span> <span class="o"><</span> <span class="n">d_len</span><span class="p">(</span><span class="n">line</span><span class="p">):</span>
|
||||
<span class="c1"># replace_whitespace=False, expand_tabs=False is a</span>
|
||||
<span class="c1"># fix for ANSIString not supporting expand_tabs/translate</span>
|
||||
<span class="n">adjusted_data</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
||||
|
|
@ -608,7 +608,7 @@
|
|||
<span class="sd"> text (str): Centered text.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">excess</span> <span class="o">=</span> <span class="n">width</span> <span class="o">-</span> <span class="n">m_len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||||
<span class="n">excess</span> <span class="o">=</span> <span class="n">width</span> <span class="o">-</span> <span class="n">d_len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">excess</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">text</span>
|
||||
<span class="k">if</span> <span class="n">excess</span> <span class="o">%</span> <span class="mi">2</span><span class="p">:</span>
|
||||
|
|
@ -647,13 +647,13 @@
|
|||
<span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</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">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
||||
<span class="k">else</span> <span class="n">line</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">+</span> <span class="n">hfill_char</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="n">m_len</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
|
||||
<span class="o">+</span> <span class="n">hfill_char</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="n">d_len</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">data</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">lines</span>
|
||||
<span class="k">elif</span> <span class="n">align</span> <span class="o">==</span> <span class="s2">"r"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[</span>
|
||||
<span class="n">hfill_char</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="n">m_len</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
|
||||
<span class="n">hfill_char</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="n">d_len</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
|
||||
<span class="o">+</span> <span class="p">(</span>
|
||||
<span class="s2">" "</span> <span class="o">+</span> <span class="n">line</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">line</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">line</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
||||
|
|
@ -794,7 +794,7 @@
|
|||
<span class="sd"> natural_width (int): Width of cell.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">m_len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">formatted</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="c1"># if self.formatted else 0</span></div>
|
||||
<span class="k">return</span> <span class="n">d_len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">formatted</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="c1"># if self.formatted else 0</span></div>
|
||||
|
||||
<div class="viewcode-block" id="EvCell.replace_data"><a class="viewcode-back" href="../../../api/evennia.utils.evtable.html#evennia.utils.evtable.EvCell.replace_data">[docs]</a> <span class="k">def</span> <span class="nf">replace_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -809,7 +809,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_split_lines</span><span class="p">(</span><span class="n">_to_ansi</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">m_len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">d_len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_height</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">reformat</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -106,14 +106,66 @@
|
|||
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">import</span> <span class="nn">fnmatch</span>
|
||||
<span class="kn">import</span> <span class="nn">random</span> <span class="k">as</span> <span class="nn">base_random</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">utils</span><span class="p">,</span> <span class="n">logger</span>
|
||||
|
||||
<span class="c1"># The stack size is a security measure. Set to <=0 to disable.</span>
|
||||
<span class="n">_STACK_MAXSIZE</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">INLINEFUNC_STACK_MAXSIZE</span>
|
||||
|
||||
|
||||
<span class="c1"># example/testing inline functions</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="random"><a class="viewcode-back" href="../../../api/evennia.utils.inlinefuncs.html#evennia.utils.inlinefuncs.random">[docs]</a><span class="k">def</span> <span class="nf">random</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="sd">"""</span>
|
||||
<span class="sd"> Inlinefunc. Returns a random number between</span>
|
||||
<span class="sd"> 0 and 1, from 0 to a maximum value, or within a given range (inclusive).</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> minval (str, optional): Minimum value. If not given, assumed 0.</span>
|
||||
<span class="sd"> maxval (str, optional): Maximum value.</span>
|
||||
|
||||
<span class="sd"> Keyword argumuents:</span>
|
||||
<span class="sd"> session (Session): Session getting the string.</span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> If either of the min/maxvalue has a '.' in it, a floating-point random</span>
|
||||
<span class="sd"> value will be returned. Otherwise it will be an integer value in the</span>
|
||||
<span class="sd"> given range.</span>
|
||||
|
||||
<span class="sd"> Example:</span>
|
||||
<span class="sd"> `$random()`</span>
|
||||
<span class="sd"> `$random(5)`</span>
|
||||
<span class="sd"> `$random(5, 10)`</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">nargs</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">nargs</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="c1"># only maxval given</span>
|
||||
<span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span> <span class="o">=</span> <span class="s2">"0"</span><span class="p">,</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="n">nargs</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span> <span class="o">=</span> <span class="n">args</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"0"</span><span class="p">,</span> <span class="s2">"1"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"."</span> <span class="ow">in</span> <span class="n">minval</span> <span class="ow">or</span> <span class="s2">"."</span> <span class="ow">in</span> <span class="n">maxval</span><span class="p">:</span>
|
||||
<span class="c1"># float mode</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">minval</span><span class="p">),</span> <span class="nb">float</span><span class="p">(</span><span class="n">maxval</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{:.2f}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">minval</span> <span class="o">+</span> <span class="n">maxval</span> <span class="o">*</span> <span class="n">base_random</span><span class="o">.</span><span class="n">random</span><span class="p">())</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># int mode</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">minval</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="n">maxval</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">base_random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">minval</span><span class="p">,</span> <span class="n">maxval</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="pad"><a class="viewcode-back" href="../../../api/evennia.utils.inlinefuncs.html#evennia.utils.inlinefuncs.pad">[docs]</a><span class="k">def</span> <span class="nf">pad</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="sd">"""</span>
|
||||
<span class="sd"> Inlinefunc. Pads text to given width.</span>
|
||||
|
|
@ -123,7 +175,8 @@
|
|||
<span class="sd"> width (str, optional): Will be converted to integer. Width</span>
|
||||
<span class="sd"> of padding.</span>
|
||||
<span class="sd"> align (str, optional): Alignment of padding; one of 'c', 'l' or 'r'.</span>
|
||||
<span class="sd"> fillchar (str, optional): Character used for padding. Defaults to a space.</span>
|
||||
<span class="sd"> fillchar (str, optional): Character used for padding. Defaults to a</span>
|
||||
<span class="sd"> space.</span>
|
||||
|
||||
<span class="sd"> Keyword args:</span>
|
||||
<span class="sd"> session (Session): Session performing the pad.</span>
|
||||
|
|
@ -271,12 +324,6 @@
|
|||
<span class="k">raise</span>
|
||||
|
||||
|
||||
<span class="c1"># The stack size is a security measure. Set to <=0 to disable.</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">_STACK_MAXSIZE</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">INLINEFUNC_STACK_MAXSIZE</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="n">_STACK_MAXSIZE</span> <span class="o">=</span> <span class="mi">20</span>
|
||||
|
||||
<span class="c1"># regex definitions</span>
|
||||
|
||||
<span class="n">_RE_STARTTOKEN</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"(?<!</span><span class="se">\\</span><span class="s2">)\$(\w+)\("</span><span class="p">)</span> <span class="c1"># unescaped $funcname( (start of function call)</span>
|
||||
|
|
@ -509,6 +556,20 @@
|
|||
<span class="k">return</span> <span class="n">retval</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="raw"><a class="viewcode-back" href="../../../api/evennia.utils.inlinefuncs.html#evennia.utils.inlinefuncs.raw">[docs]</a><span class="k">def</span> <span class="nf">raw</span><span class="p">(</span><span class="n">string</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Escape all inlinefuncs in a string so they won't get parsed.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> string (str): String with inlinefuncs to escape.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_escape</span><span class="p">(</span><span class="n">match</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span> <span class="o">+</span> <span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">_RE_STARTTOKEN</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="n">_escape</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Nick templating</span>
|
||||
<span class="c1">#</span>
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
<span class="kn">from</span> <span class="nn">ast</span> <span class="k">import</span> <span class="n">literal_eval</span>
|
||||
<span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">copy</span> <span class="k">import</span> <span class="n">deepcopy</span>
|
||||
<span class="kn">from</span> <span class="nn">copy</span> <span class="k">import</span> <span class="n">deepcopy</span><span class="p">,</span> <span class="n">Error</span> <span class="k">as</span> <span class="n">CopyError</span>
|
||||
<span class="kn">from</span> <span class="nn">base64</span> <span class="k">import</span> <span class="n">b64encode</span><span class="p">,</span> <span class="n">b64decode</span>
|
||||
<span class="kn">from</span> <span class="nn">zlib</span> <span class="k">import</span> <span class="n">compress</span><span class="p">,</span> <span class="n">decompress</span>
|
||||
|
||||
|
|
@ -85,6 +85,7 @@
|
|||
|
||||
<span class="kn">from</span> <span class="nn">pickle</span> <span class="k">import</span> <span class="n">loads</span><span class="p">,</span> <span class="n">dumps</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="k">import</span> <span class="n">force_str</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.dbserialize</span> <span class="k">import</span> <span class="n">pack_dbobj</span>
|
||||
|
||||
|
||||
<span class="n">DEFAULT_PROTOCOL</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
|
|
@ -133,7 +134,15 @@
|
|||
<span class="c1"># The reason this is important is because we do all of our lookups as</span>
|
||||
<span class="c1"># simple string matches, thus the character streams must be the same</span>
|
||||
<span class="c1"># for the lookups to work properly. See tests.py for more information.</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">dumps</span><span class="p">(</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">value</span><span class="p">),</span> <span class="n">protocol</span><span class="o">=</span><span class="n">pickle_protocol</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">CopyError</span><span class="p">:</span>
|
||||
<span class="c1"># this can happen on a manager query where the search query string is a</span>
|
||||
<span class="c1"># database model.</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">pack_dbobj</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">dumps</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="n">pickle_protocol</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">compress_object</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">compress</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">b64encode</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">()</span> <span class="c1"># decode bytes to str</span>
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
<span class="kn">import</span> <span class="nn">gc</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">copy</span>
|
||||
<span class="kn">import</span> <span class="nn">types</span>
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
|
|
@ -60,6 +61,7 @@
|
|||
<span class="kn">import</span> <span class="nn">importlib</span>
|
||||
<span class="kn">import</span> <span class="nn">importlib.util</span>
|
||||
<span class="kn">import</span> <span class="nn">importlib.machinery</span>
|
||||
<span class="kn">from</span> <span class="nn">unicodedata</span> <span class="k">import</span> <span class="n">east_asian_width</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet.task</span> <span class="k">import</span> <span class="n">deferLater</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet.defer</span> <span class="k">import</span> <span class="n">returnValue</span> <span class="c1"># noqa - used as import target</span>
|
||||
<span class="kn">from</span> <span class="nn">os.path</span> <span class="k">import</span> <span class="n">join</span> <span class="k">as</span> <span class="n">osjoin</span>
|
||||
|
|
@ -70,6 +72,8 @@
|
|||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">django.apps</span> <span class="k">import</span> <span class="n">apps</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.validators</span> <span class="k">import</span> <span class="n">validate_email</span> <span class="k">as</span> <span class="n">django_validate_email</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">DjangoValidationError</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">logger</span>
|
||||
|
||||
<span class="n">_MULTIMATCH_TEMPLATE</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">SEARCH_MULTIMATCH_TEMPLATE</span>
|
||||
|
|
@ -381,14 +385,16 @@
|
|||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="list_to_string"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.list_to_string">[docs]</a><span class="k">def</span> <span class="nf">list_to_string</span><span class="p">(</span><span class="n">inlist</span><span class="p">,</span> <span class="n">endsep</span><span class="o">=</span><span class="s2">"and"</span><span class="p">,</span> <span class="n">addquote</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="iter_to_string"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.iter_to_string">[docs]</a><span class="k">def</span> <span class="nf">iter_to_string</span><span class="p">(</span><span class="n">initer</span><span class="p">,</span> <span class="n">endsep</span><span class="o">=</span><span class="s2">"and"</span><span class="p">,</span> <span class="n">addquote</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This pretty-formats a list as string output, adding an optional</span>
|
||||
<span class="sd"> This pretty-formats an iterable list as string output, adding an optional</span>
|
||||
<span class="sd"> alternative separator to the second to last entry. If `addquote`</span>
|
||||
<span class="sd"> is `True`, the outgoing strings will be surrounded by quotes.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> inlist (list): The list to print.</span>
|
||||
<span class="sd"> initer (any): Usually an iterable to print. Each element must be possible to</span>
|
||||
<span class="sd"> present with a string. Note that if this is a generator, it will be</span>
|
||||
<span class="sd"> consumed by this operation.</span>
|
||||
<span class="sd"> endsep (str, optional): If set, the last item separator will</span>
|
||||
<span class="sd"> be replaced with this value.</span>
|
||||
<span class="sd"> addquote (bool, optional): This will surround all outgoing</span>
|
||||
|
|
@ -413,16 +419,21 @@
|
|||
<span class="n">endsep</span> <span class="o">=</span> <span class="s2">","</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">endsep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">endsep</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">inlist</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">initer</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
<span class="n">initer</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">initer</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">addquote</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">inlist</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s1">'"</span><span class="si">%s</span><span class="s1">"'</span> <span class="o">%</span> <span class="n">inlist</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s1">'"</span><span class="si">%s</span><span class="s1">"'</span> <span class="o">%</span> <span class="n">v</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">inlist</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="o">+</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">endsep</span><span class="p">,</span> <span class="s1">'"</span><span class="si">%s</span><span class="s1">"'</span> <span class="o">%</span> <span class="n">inlist</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">initer</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s1">'"</span><span class="si">%s</span><span class="s1">"'</span> <span class="o">%</span> <span class="n">initer</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s1">'"</span><span class="si">%s</span><span class="s1">"'</span> <span class="o">%</span> <span class="n">v</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">initer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="o">+</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">endsep</span><span class="p">,</span> <span class="s1">'"</span><span class="si">%s</span><span class="s1">"'</span> <span class="o">%</span> <span class="n">initer</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">inlist</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">inlist</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">inlist</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="o">+</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">endsep</span><span class="p">,</span> <span class="n">inlist</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span></div>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">initer</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">initer</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">initer</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> <span class="o">+</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">endsep</span><span class="p">,</span> <span class="n">initer</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span></div>
|
||||
|
||||
|
||||
<span class="c1"># legacy alias</span>
|
||||
<span class="n">list_to_string</span> <span class="o">=</span> <span class="n">iter_to_string</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="wildcard_to_regexp"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.wildcard_to_regexp">[docs]</a><span class="k">def</span> <span class="nf">wildcard_to_regexp</span><span class="p">(</span><span class="n">instring</span><span class="p">):</span>
|
||||
|
|
@ -947,69 +958,25 @@
|
|||
|
||||
<div class="viewcode-block" id="validate_email_address"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.validate_email_address">[docs]</a><span class="k">def</span> <span class="nf">validate_email_address</span><span class="p">(</span><span class="n">emailaddress</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Checks if an email address is syntactically correct.</span>
|
||||
<span class="sd"> Checks if an email address is syntactically correct. Makes use</span>
|
||||
<span class="sd"> of the django email-validator for consistency.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> emailaddress (str): Email address to validate.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> is_valid (bool): If this is a valid email or not.</span>
|
||||
|
||||
<span class="sd"> Notes.</span>
|
||||
<span class="sd"> (This snippet was adapted from</span>
|
||||
<span class="sd"> http://commandline.org.uk/python/email-syntax-check.)</span>
|
||||
<span class="sd"> bool: If this is a valid email or not.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">emailaddress</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">emailaddress</span>
|
||||
|
||||
<span class="n">domains</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"aero"</span><span class="p">,</span>
|
||||
<span class="s2">"asia"</span><span class="p">,</span>
|
||||
<span class="s2">"biz"</span><span class="p">,</span>
|
||||
<span class="s2">"cat"</span><span class="p">,</span>
|
||||
<span class="s2">"com"</span><span class="p">,</span>
|
||||
<span class="s2">"coop"</span><span class="p">,</span>
|
||||
<span class="s2">"edu"</span><span class="p">,</span>
|
||||
<span class="s2">"gov"</span><span class="p">,</span>
|
||||
<span class="s2">"info"</span><span class="p">,</span>
|
||||
<span class="s2">"int"</span><span class="p">,</span>
|
||||
<span class="s2">"jobs"</span><span class="p">,</span>
|
||||
<span class="s2">"mil"</span><span class="p">,</span>
|
||||
<span class="s2">"mobi"</span><span class="p">,</span>
|
||||
<span class="s2">"museum"</span><span class="p">,</span>
|
||||
<span class="s2">"name"</span><span class="p">,</span>
|
||||
<span class="s2">"net"</span><span class="p">,</span>
|
||||
<span class="s2">"org"</span><span class="p">,</span>
|
||||
<span class="s2">"pro"</span><span class="p">,</span>
|
||||
<span class="s2">"tel"</span><span class="p">,</span>
|
||||
<span class="s2">"travel"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Email address must be more than 7 characters in total.</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">emailaddress</span><span class="p">)</span> <span class="o"><</span> <span class="mi">7</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span> <span class="c1"># Address too short.</span>
|
||||
|
||||
<span class="c1"># Split up email address into parts.</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">localpart</span><span class="p">,</span> <span class="n">domainname</span> <span class="o">=</span> <span class="n">emailaddress</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"@"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">host</span><span class="p">,</span> <span class="n">toplevel</span> <span class="o">=</span> <span class="n">domainname</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"."</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span> <span class="c1"># Address does not have enough parts.</span>
|
||||
|
||||
<span class="c1"># Check for Country code or Generic Domain.</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">toplevel</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">toplevel</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">domains</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span> <span class="c1"># Not a domain name.</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="s2">"-_.%+."</span><span class="p">:</span>
|
||||
<span class="n">localpart</span> <span class="o">=</span> <span class="n">localpart</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="s2">"-_."</span><span class="p">:</span>
|
||||
<span class="n">host</span> <span class="o">=</span> <span class="n">host</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">localpart</span><span class="o">.</span><span class="n">isalnum</span><span class="p">()</span> <span class="ow">and</span> <span class="n">host</span><span class="o">.</span><span class="n">isalnum</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="c1"># Email address is fine.</span>
|
||||
<span class="n">django_validate_email</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">emailaddress</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="n">DjangoValidationError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span> <span class="c1"># Email address has funny characters.</span></div>
|
||||
<span class="k">return</span> <span class="kc">True</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="inherits_from"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.inherits_from">[docs]</a><span class="k">def</span> <span class="nf">inherits_from</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">parent</span><span class="p">):</span>
|
||||
|
|
@ -2078,7 +2045,7 @@
|
|||
<span class="sd"> back to normal len for other objects.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> target (string): A string with potential MXP components</span>
|
||||
<span class="sd"> target (str): A string with potential MXP components</span>
|
||||
<span class="sd"> to search.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
|
|
@ -2093,6 +2060,33 @@
|
|||
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">target</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="display_len"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.display_len">[docs]</a><span class="k">def</span> <span class="nf">display_len</span><span class="p">(</span><span class="n">target</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Calculate the 'visible width' of text. This is not necessarily the same as the</span>
|
||||
<span class="sd"> number of characters in the case of certain asian characters. This will also</span>
|
||||
<span class="sd"> strip MXP patterns.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> target (any): Something to measure the length of. If a string, it will be</span>
|
||||
<span class="sd"> measured keeping asian-character and MXP links in mind.</span>
|
||||
|
||||
<span class="sd"> Return:</span>
|
||||
<span class="sd"> int: The visible width of the target.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Would create circular import if in module root.</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">ANSI_PARSER</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">inherits_from</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="c1"># str or ANSIString</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="n">ANSI_PARSER</span><span class="o">.</span><span class="n">strip_mxp</span><span class="p">(</span><span class="n">target</span><span class="p">)</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="n">ANSI_PARSER</span><span class="o">.</span><span class="n">parse_ansi</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">strip_ansi</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">extra_wide</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"F"</span><span class="p">,</span> <span class="s2">"W"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="mi">2</span> <span class="k">if</span> <span class="n">east_asian_width</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="ow">in</span> <span class="n">extra_wide</span> <span class="k">else</span> <span class="mi">1</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">target</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">target</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1"># -------------------------------------------------------------------</span>
|
||||
<span class="c1"># Search handler function</span>
|
||||
<span class="c1"># -------------------------------------------------------------------</span>
|
||||
|
|
|
|||
|
|
@ -52,10 +52,8 @@
|
|||
<span class="kn">import</span> <span class="nn">re</span> <span class="k">as</span> <span class="nn">_re</span>
|
||||
<span class="kn">import</span> <span class="nn">pytz</span> <span class="k">as</span> <span class="nn">_pytz</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span> <span class="k">as</span> <span class="nn">_dt</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">ValidationError</span> <span class="k">as</span> <span class="n">_error</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.validators</span> <span class="k">import</span> <span class="n">validate_email</span> <span class="k">as</span> <span class="n">_val_email</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">strip_ansi</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">string_partial_matching</span> <span class="k">as</span> <span class="n">_partial</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">string_partial_matching</span> <span class="k">as</span> <span class="n">_partial</span><span class="p">,</span> <span class="n">validate_email_address</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="n">_TZ_DICT</span> <span class="o">=</span> <span class="p">{</span><span class="nb">str</span><span class="p">(</span><span class="n">tz</span><span class="p">):</span> <span class="n">_pytz</span><span class="o">.</span><span class="n">timezone</span><span class="p">(</span><span class="n">tz</span><span class="p">)</span> <span class="k">for</span> <span class="n">tz</span> <span class="ow">in</span> <span class="n">_pytz</span><span class="o">.</span><span class="n">common_timezones</span><span class="p">}</span>
|
||||
|
|
@ -255,9 +253,8 @@
|
|||
<div class="viewcode-block" id="email"><a class="viewcode-back" href="../../../api/evennia.utils.validatorfuncs.html#evennia.utils.validatorfuncs.email">[docs]</a><span class="k">def</span> <span class="nf">email</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">option_key</span><span class="o">=</span><span class="s2">"Email Address"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">entry</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Email address field empty!"</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">_val_email</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">entry</span><span class="p">))</span> <span class="c1"># offloading the hard work to Django!</span>
|
||||
<span class="k">except</span> <span class="n">_error</span><span class="p">:</span>
|
||||
<span class="n">valid</span> <span class="o">=</span> <span class="n">validate_email_address</span><span class="p">(</span><span class="n">entry</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">valid</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">f</span><span class="s2">"That isn't a valid </span><span class="si">{option_key}</span><span class="s2">!"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">entry</span></div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue