Update Docs

This commit is contained in:
Magnus Bender 2024-10-09 19:04:28 +02:00
parent 5e0945f9ae
commit 6de994626b
Signed by: bender
GPG Key ID: 5149A211831F2BD7
9 changed files with 2069 additions and 759 deletions

File diff suppressed because one or more lines are too long

View File

@ -34,6 +34,7 @@
<li><a href="management/db.html">db</a></li>
<li><a href="management/interface.html">interface</a></li>
<li><a href="management/main.html">main</a></li>
<li><a href="management/process.html">process</a></li>
</ul>

File diff suppressed because it is too large Load Diff

View File

@ -71,41 +71,106 @@
<label class="view-source-button" for="mod-interface-view-source"><span>View Source</span></label>
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="c1"># Agenten Plattform</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="c1">#</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="c1"># (c) 2024 Magnus Bender</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="c1"># Institute of Humanities-Centered Artificial Intelligence (CHAI)</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="c1"># Universitaet Hamburg</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="c1"># https://www.chai.uni-hamburg.de/~bender</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="c1"># </span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="c1"># source code released under the terms of GNU Public License Version 3</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="c1"># https://www.gnu.org/licenses/gpl-3.0.txt</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a>
</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">APIRouter</span><span class="p">,</span> <span class="n">Request</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a><span class="kn">from</span> <span class="nn">fastapi.templating</span> <span class="kn">import</span> <span class="n">Jinja2Templates</span>
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a>
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a><span class="kn">from</span> <span class="nn">ums.management.db</span> <span class="kn">import</span> <span class="n">DB</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a>
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="k">class</span> <span class="nc">Interface</span><span class="p">():</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos">17</span></a>
</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">template</span><span class="p">:</span><span class="n">Jinja2Templates</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span><span class="n">DB</span><span class="p">):</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos">19</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">template</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a>
</span><span id="L-22"><a href="#L-22"><span class="linenos">22</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">router</span> <span class="o">=</span> <span class="n">APIRouter</span><span class="p">(</span>
</span><span id="L-23"><a href="#L-23"><span class="linenos">23</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;/app&quot;</span><span class="p">,</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos">24</span></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;app, gui&quot;</span><span class="p">]</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos">25</span></a> <span class="p">)</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos">26</span></a>
</span><span id="L-27"><a href="#L-27"><span class="linenos">27</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos">28</span></a>
</span><span id="L-29"><a href="#L-29"><span class="linenos">29</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-30"><a href="#L-30"><span class="linenos">30</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Test&quot;</span><span class="p">)</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos">31</span></a> <span class="k">def</span> <span class="nf">corpus</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos">32</span></a>
</span><span id="L-33"><a href="#L-33"><span class="linenos">33</span></a> <span class="nb">print</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">by_count</span><span class="p">(</span><span class="mi">3</span><span class="p">))</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos">34</span></a>
</span><span id="L-35"><a href="#L-35"><span class="linenos">35</span></a> <span class="k">return</span> <span class="p">{}</span>
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="c1"># Agenten Plattform</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="c1">#</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="c1"># (c) 2024 Magnus Bender</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="c1"># Institute of Humanities-Centered Artificial Intelligence (CHAI)</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="c1"># Universitaet Hamburg</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="c1"># https://www.chai.uni-hamburg.de/~bender</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="c1"># </span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="c1"># source code released under the terms of GNU Public License Version 3</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="c1"># https://www.gnu.org/licenses/gpl-3.0.txt</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a>
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a><span class="kn">import</span> <span class="nn">re</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a>
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="kn">from</span> <span class="nn">urllib.parse</span> <span class="kn">import</span> <span class="n">urlencode</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a>
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">APIRouter</span><span class="p">,</span> <span class="n">Request</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a><span class="kn">from</span> <span class="nn">fastapi.responses</span> <span class="kn">import</span> <span class="n">HTMLResponse</span><span class="p">,</span> <span class="n">RedirectResponse</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="kn">from</span> <span class="nn">fastapi.templating</span> <span class="kn">import</span> <span class="n">Jinja2Templates</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a>
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a>
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a><span class="kn">from</span> <span class="nn">ums.management.db</span> <span class="kn">import</span> <span class="n">DB</span>
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a>
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a><span class="k">class</span> <span class="nc">Interface</span><span class="p">():</span>
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a>
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="n">_PREFIX</span> <span class="o">=</span> <span class="s2">&quot;/app&quot;</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a>
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">template</span><span class="p">:</span><span class="n">Jinja2Templates</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span><span class="n">DB</span><span class="p">):</span>
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">template</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a>
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">router</span> <span class="o">=</span> <span class="n">APIRouter</span><span class="p">(</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_PREFIX</span><span class="p">,</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;app, gui&quot;</span><span class="p">]</span>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="p">)</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">RedirectResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Redirect&quot;</span><span class="p">)</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">RedirectResponse</span><span class="p">:</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">return</span> <span class="n">RedirectResponse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_PREFIX</span> <span class="o">+</span> <span class="s2">&quot;/table&quot;</span><span class="p">)</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/table&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">HTMLResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Table of messages&quot;</span><span class="p">)</span>
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="k">def</span> <span class="nf">table</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">,</span>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="nb">id</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sender</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">recipient</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="n">processed</span><span class="p">:</span><span class="nb">bool</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="n">time_after</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">time_before</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="n">limit</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_count_only</span><span class="p">:</span><span class="nb">bool</span><span class="o">=</span><span class="kc">False</span>
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="p">):</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a>
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="n">db_args</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="s2">&quot;limit&quot;</span> <span class="p">:</span> <span class="n">limit</span><span class="p">,</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="s2">&quot;offset&quot;</span> <span class="p">:</span> <span class="n">offset</span>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="p">}</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a>
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">convert_time</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">globals</span><span class="p">[</span><span class="s2">&quot;date2timestamp&quot;</span><span class="p">](</span><span class="n">t</span><span class="p">)</span> \
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^\d+$&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">else</span> <span class="nb">int</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="k">for</span> <span class="n">v</span><span class="p">,</span><span class="n">n</span><span class="p">,</span><span class="n">f</span> <span class="ow">in</span> <span class="p">(</span>
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="p">(</span><span class="nb">id</span><span class="p">,</span><span class="s1">&#39;id&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">),</span> <span class="p">(</span><span class="n">sender</span><span class="p">,</span><span class="s1">&#39;sender&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">),</span> <span class="p">(</span><span class="n">recipient</span><span class="p">,</span><span class="s1">&#39;recipient&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">),</span>
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="p">(</span><span class="n">processed</span><span class="p">,</span><span class="s1">&#39;processed&#39;</span><span class="p">,</span> <span class="nb">bool</span><span class="p">),</span>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="p">(</span><span class="n">time_after</span><span class="p">,</span> <span class="s1">&#39;time_after&#39;</span><span class="p">,</span> <span class="n">convert_time</span><span class="p">),</span> <span class="p">(</span><span class="n">time_before</span><span class="p">,</span> <span class="s1">&#39;time_before&#39;</span><span class="p">,</span> <span class="n">convert_time</span><span class="p">)</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="p">):</span>
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="n">db_args</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="k">if</span> <span class="n">_count_only</span><span class="p">:</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">len</span><span class="p">(</span><span class="o">**</span><span class="n">db_args</span><span class="p">)</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="k">def</span> <span class="nf">pagination_link</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">link_args</span> <span class="o">=</span> <span class="n">db_args</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">link_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="k">return</span> <span class="n">urlencode</span><span class="p">(</span><span class="n">link_args</span><span class="p">)</span>
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">TemplateResponse</span><span class="p">(</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="s1">&#39;table.html&#39;</span><span class="p">,</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="p">{</span><span class="s2">&quot;request&quot;</span> <span class="p">:</span> <span class="n">request</span><span class="p">,</span>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="s2">&quot;db&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">,</span> <span class="s2">&quot;db_args&quot;</span> <span class="p">:</span> <span class="n">db_args</span><span class="p">,</span>
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="s2">&quot;pagination_link&quot;</span> <span class="p">:</span> <span class="n">pagination_link</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="p">}</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="p">)</span>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/table/total&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Total number of messages in table&quot;</span><span class="p">)</span>
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="k">def</span> <span class="nf">table_total</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">,</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="nb">id</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sender</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">recipient</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">processed</span><span class="p">:</span><span class="nb">bool</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="n">time_after</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">time_before</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="n">limit</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">0</span>
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">locals</span><span class="p">()</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="k">del</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;table&#39;</span><span class="p">]</span>
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;_count_only&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a>
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">return</span> <span class="n">table</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a>
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/new&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">HTMLResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Add new riddle&quot;</span><span class="p">)</span>
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="k">def</span> <span class="nf">new</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">TemplateResponse</span><span class="p">(</span>
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="s1">&#39;new.html&#39;</span><span class="p">,</span>
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="p">{</span><span class="s2">&quot;request&quot;</span> <span class="p">:</span> <span class="n">request</span><span class="p">}</span>
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="p">)</span>
</span></pre></div>
@ -121,26 +186,85 @@
</div>
<a class="headerlink" href="#Interface"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Interface-17"><a href="#Interface-17"><span class="linenos">17</span></a><span class="k">class</span> <span class="nc">Interface</span><span class="p">():</span>
</span><span id="Interface-18"><a href="#Interface-18"><span class="linenos">18</span></a>
</span><span id="Interface-19"><a href="#Interface-19"><span class="linenos">19</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">template</span><span class="p">:</span><span class="n">Jinja2Templates</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span><span class="n">DB</span><span class="p">):</span>
</span><span id="Interface-20"><a href="#Interface-20"><span class="linenos">20</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">template</span>
</span><span id="Interface-21"><a href="#Interface-21"><span class="linenos">21</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
</span><span id="Interface-22"><a href="#Interface-22"><span class="linenos">22</span></a>
</span><span id="Interface-23"><a href="#Interface-23"><span class="linenos">23</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">router</span> <span class="o">=</span> <span class="n">APIRouter</span><span class="p">(</span>
</span><span id="Interface-24"><a href="#Interface-24"><span class="linenos">24</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;/app&quot;</span><span class="p">,</span>
</span><span id="Interface-25"><a href="#Interface-25"><span class="linenos">25</span></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;app, gui&quot;</span><span class="p">]</span>
</span><span id="Interface-26"><a href="#Interface-26"><span class="linenos">26</span></a> <span class="p">)</span>
</span><span id="Interface-27"><a href="#Interface-27"><span class="linenos">27</span></a>
</span><span id="Interface-28"><a href="#Interface-28"><span class="linenos">28</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="Interface-29"><a href="#Interface-29"><span class="linenos">29</span></a>
</span><span id="Interface-30"><a href="#Interface-30"><span class="linenos">30</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Interface-31"><a href="#Interface-31"><span class="linenos">31</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Test&quot;</span><span class="p">)</span>
</span><span id="Interface-32"><a href="#Interface-32"><span class="linenos">32</span></a> <span class="k">def</span> <span class="nf">corpus</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
</span><span id="Interface-33"><a href="#Interface-33"><span class="linenos">33</span></a>
</span><span id="Interface-34"><a href="#Interface-34"><span class="linenos">34</span></a> <span class="nb">print</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">by_count</span><span class="p">(</span><span class="mi">3</span><span class="p">))</span>
</span><span id="Interface-35"><a href="#Interface-35"><span class="linenos">35</span></a>
</span><span id="Interface-36"><a href="#Interface-36"><span class="linenos">36</span></a> <span class="k">return</span> <span class="p">{}</span>
<div class="pdoc-code codehilite"><pre><span></span><span id="Interface-23"><a href="#Interface-23"><span class="linenos"> 23</span></a><span class="k">class</span> <span class="nc">Interface</span><span class="p">():</span>
</span><span id="Interface-24"><a href="#Interface-24"><span class="linenos"> 24</span></a>
</span><span id="Interface-25"><a href="#Interface-25"><span class="linenos"> 25</span></a> <span class="n">_PREFIX</span> <span class="o">=</span> <span class="s2">&quot;/app&quot;</span>
</span><span id="Interface-26"><a href="#Interface-26"><span class="linenos"> 26</span></a>
</span><span id="Interface-27"><a href="#Interface-27"><span class="linenos"> 27</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">template</span><span class="p">:</span><span class="n">Jinja2Templates</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span><span class="n">DB</span><span class="p">):</span>
</span><span id="Interface-28"><a href="#Interface-28"><span class="linenos"> 28</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">template</span>
</span><span id="Interface-29"><a href="#Interface-29"><span class="linenos"> 29</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
</span><span id="Interface-30"><a href="#Interface-30"><span class="linenos"> 30</span></a>
</span><span id="Interface-31"><a href="#Interface-31"><span class="linenos"> 31</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">router</span> <span class="o">=</span> <span class="n">APIRouter</span><span class="p">(</span>
</span><span id="Interface-32"><a href="#Interface-32"><span class="linenos"> 32</span></a> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_PREFIX</span><span class="p">,</span>
</span><span id="Interface-33"><a href="#Interface-33"><span class="linenos"> 33</span></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;app, gui&quot;</span><span class="p">]</span>
</span><span id="Interface-34"><a href="#Interface-34"><span class="linenos"> 34</span></a> <span class="p">)</span>
</span><span id="Interface-35"><a href="#Interface-35"><span class="linenos"> 35</span></a>
</span><span id="Interface-36"><a href="#Interface-36"><span class="linenos"> 36</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="Interface-37"><a href="#Interface-37"><span class="linenos"> 37</span></a>
</span><span id="Interface-38"><a href="#Interface-38"><span class="linenos"> 38</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Interface-39"><a href="#Interface-39"><span class="linenos"> 39</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">RedirectResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Redirect&quot;</span><span class="p">)</span>
</span><span id="Interface-40"><a href="#Interface-40"><span class="linenos"> 40</span></a> <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">RedirectResponse</span><span class="p">:</span>
</span><span id="Interface-41"><a href="#Interface-41"><span class="linenos"> 41</span></a> <span class="k">return</span> <span class="n">RedirectResponse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_PREFIX</span> <span class="o">+</span> <span class="s2">&quot;/table&quot;</span><span class="p">)</span>
</span><span id="Interface-42"><a href="#Interface-42"><span class="linenos"> 42</span></a>
</span><span id="Interface-43"><a href="#Interface-43"><span class="linenos"> 43</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/table&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">HTMLResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Table of messages&quot;</span><span class="p">)</span>
</span><span id="Interface-44"><a href="#Interface-44"><span class="linenos"> 44</span></a> <span class="k">def</span> <span class="nf">table</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">,</span>
</span><span id="Interface-45"><a href="#Interface-45"><span class="linenos"> 45</span></a> <span class="nb">id</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sender</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">recipient</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="Interface-46"><a href="#Interface-46"><span class="linenos"> 46</span></a> <span class="n">processed</span><span class="p">:</span><span class="nb">bool</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="Interface-47"><a href="#Interface-47"><span class="linenos"> 47</span></a> <span class="n">time_after</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">time_before</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="Interface-48"><a href="#Interface-48"><span class="linenos"> 48</span></a> <span class="n">limit</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_count_only</span><span class="p">:</span><span class="nb">bool</span><span class="o">=</span><span class="kc">False</span>
</span><span id="Interface-49"><a href="#Interface-49"><span class="linenos"> 49</span></a> <span class="p">):</span>
</span><span id="Interface-50"><a href="#Interface-50"><span class="linenos"> 50</span></a>
</span><span id="Interface-51"><a href="#Interface-51"><span class="linenos"> 51</span></a> <span class="n">db_args</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Interface-52"><a href="#Interface-52"><span class="linenos"> 52</span></a> <span class="s2">&quot;limit&quot;</span> <span class="p">:</span> <span class="n">limit</span><span class="p">,</span>
</span><span id="Interface-53"><a href="#Interface-53"><span class="linenos"> 53</span></a> <span class="s2">&quot;offset&quot;</span> <span class="p">:</span> <span class="n">offset</span>
</span><span id="Interface-54"><a href="#Interface-54"><span class="linenos"> 54</span></a> <span class="p">}</span>
</span><span id="Interface-55"><a href="#Interface-55"><span class="linenos"> 55</span></a>
</span><span id="Interface-56"><a href="#Interface-56"><span class="linenos"> 56</span></a> <span class="n">convert_time</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">globals</span><span class="p">[</span><span class="s2">&quot;date2timestamp&quot;</span><span class="p">](</span><span class="n">t</span><span class="p">)</span> \
</span><span id="Interface-57"><a href="#Interface-57"><span class="linenos"> 57</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^\d+$&#39;</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">else</span> <span class="nb">int</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
</span><span id="Interface-58"><a href="#Interface-58"><span class="linenos"> 58</span></a> <span class="k">for</span> <span class="n">v</span><span class="p">,</span><span class="n">n</span><span class="p">,</span><span class="n">f</span> <span class="ow">in</span> <span class="p">(</span>
</span><span id="Interface-59"><a href="#Interface-59"><span class="linenos"> 59</span></a> <span class="p">(</span><span class="nb">id</span><span class="p">,</span><span class="s1">&#39;id&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">),</span> <span class="p">(</span><span class="n">sender</span><span class="p">,</span><span class="s1">&#39;sender&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">),</span> <span class="p">(</span><span class="n">recipient</span><span class="p">,</span><span class="s1">&#39;recipient&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">),</span>
</span><span id="Interface-60"><a href="#Interface-60"><span class="linenos"> 60</span></a> <span class="p">(</span><span class="n">processed</span><span class="p">,</span><span class="s1">&#39;processed&#39;</span><span class="p">,</span> <span class="nb">bool</span><span class="p">),</span>
</span><span id="Interface-61"><a href="#Interface-61"><span class="linenos"> 61</span></a> <span class="p">(</span><span class="n">time_after</span><span class="p">,</span> <span class="s1">&#39;time_after&#39;</span><span class="p">,</span> <span class="n">convert_time</span><span class="p">),</span> <span class="p">(</span><span class="n">time_before</span><span class="p">,</span> <span class="s1">&#39;time_before&#39;</span><span class="p">,</span> <span class="n">convert_time</span><span class="p">)</span>
</span><span id="Interface-62"><a href="#Interface-62"><span class="linenos"> 62</span></a> <span class="p">):</span>
</span><span id="Interface-63"><a href="#Interface-63"><span class="linenos"> 63</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Interface-64"><a href="#Interface-64"><span class="linenos"> 64</span></a> <span class="n">db_args</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
</span><span id="Interface-65"><a href="#Interface-65"><span class="linenos"> 65</span></a>
</span><span id="Interface-66"><a href="#Interface-66"><span class="linenos"> 66</span></a> <span class="k">if</span> <span class="n">_count_only</span><span class="p">:</span>
</span><span id="Interface-67"><a href="#Interface-67"><span class="linenos"> 67</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">len</span><span class="p">(</span><span class="o">**</span><span class="n">db_args</span><span class="p">)</span>
</span><span id="Interface-68"><a href="#Interface-68"><span class="linenos"> 68</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Interface-69"><a href="#Interface-69"><span class="linenos"> 69</span></a> <span class="k">def</span> <span class="nf">pagination_link</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Interface-70"><a href="#Interface-70"><span class="linenos"> 70</span></a> <span class="n">link_args</span> <span class="o">=</span> <span class="n">db_args</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="Interface-71"><a href="#Interface-71"><span class="linenos"> 71</span></a> <span class="n">link_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="Interface-72"><a href="#Interface-72"><span class="linenos"> 72</span></a> <span class="k">return</span> <span class="n">urlencode</span><span class="p">(</span><span class="n">link_args</span><span class="p">)</span>
</span><span id="Interface-73"><a href="#Interface-73"><span class="linenos"> 73</span></a>
</span><span id="Interface-74"><a href="#Interface-74"><span class="linenos"> 74</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">TemplateResponse</span><span class="p">(</span>
</span><span id="Interface-75"><a href="#Interface-75"><span class="linenos"> 75</span></a> <span class="s1">&#39;table.html&#39;</span><span class="p">,</span>
</span><span id="Interface-76"><a href="#Interface-76"><span class="linenos"> 76</span></a> <span class="p">{</span><span class="s2">&quot;request&quot;</span> <span class="p">:</span> <span class="n">request</span><span class="p">,</span>
</span><span id="Interface-77"><a href="#Interface-77"><span class="linenos"> 77</span></a> <span class="s2">&quot;db&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">,</span> <span class="s2">&quot;db_args&quot;</span> <span class="p">:</span> <span class="n">db_args</span><span class="p">,</span>
</span><span id="Interface-78"><a href="#Interface-78"><span class="linenos"> 78</span></a> <span class="s2">&quot;pagination_link&quot;</span> <span class="p">:</span> <span class="n">pagination_link</span>
</span><span id="Interface-79"><a href="#Interface-79"><span class="linenos"> 79</span></a> <span class="p">}</span>
</span><span id="Interface-80"><a href="#Interface-80"><span class="linenos"> 80</span></a> <span class="p">)</span>
</span><span id="Interface-81"><a href="#Interface-81"><span class="linenos"> 81</span></a>
</span><span id="Interface-82"><a href="#Interface-82"><span class="linenos"> 82</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/table/total&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Total number of messages in table&quot;</span><span class="p">)</span>
</span><span id="Interface-83"><a href="#Interface-83"><span class="linenos"> 83</span></a> <span class="k">def</span> <span class="nf">table_total</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">,</span>
</span><span id="Interface-84"><a href="#Interface-84"><span class="linenos"> 84</span></a> <span class="nb">id</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sender</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">recipient</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="Interface-85"><a href="#Interface-85"><span class="linenos"> 85</span></a> <span class="n">processed</span><span class="p">:</span><span class="nb">bool</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="Interface-86"><a href="#Interface-86"><span class="linenos"> 86</span></a> <span class="n">time_after</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">time_before</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="o">|</span><span class="kc">None</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
</span><span id="Interface-87"><a href="#Interface-87"><span class="linenos"> 87</span></a> <span class="n">limit</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span><span class="nb">int</span><span class="o">=</span><span class="mi">0</span>
</span><span id="Interface-88"><a href="#Interface-88"><span class="linenos"> 88</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
</span><span id="Interface-89"><a href="#Interface-89"><span class="linenos"> 89</span></a>
</span><span id="Interface-90"><a href="#Interface-90"><span class="linenos"> 90</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="nb">locals</span><span class="p">()</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</span><span id="Interface-91"><a href="#Interface-91"><span class="linenos"> 91</span></a> <span class="k">del</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;table&#39;</span><span class="p">]</span>
</span><span id="Interface-92"><a href="#Interface-92"><span class="linenos"> 92</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;_count_only&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Interface-93"><a href="#Interface-93"><span class="linenos"> 93</span></a>
</span><span id="Interface-94"><a href="#Interface-94"><span class="linenos"> 94</span></a> <span class="k">return</span> <span class="n">table</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="Interface-95"><a href="#Interface-95"><span class="linenos"> 95</span></a>
</span><span id="Interface-96"><a href="#Interface-96"><span class="linenos"> 96</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">router</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/new&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">HTMLResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Add new riddle&quot;</span><span class="p">)</span>
</span><span id="Interface-97"><a href="#Interface-97"><span class="linenos"> 97</span></a> <span class="k">def</span> <span class="nf">new</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
</span><span id="Interface-98"><a href="#Interface-98"><span class="linenos"> 98</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">TemplateResponse</span><span class="p">(</span>
</span><span id="Interface-99"><a href="#Interface-99"><span class="linenos"> 99</span></a> <span class="s1">&#39;new.html&#39;</span><span class="p">,</span>
</span><span id="Interface-100"><a href="#Interface-100"><span class="linenos">100</span></a> <span class="p">{</span><span class="s2">&quot;request&quot;</span> <span class="p">:</span> <span class="n">request</span><span class="p">}</span>
</span><span id="Interface-101"><a href="#Interface-101"><span class="linenos">101</span></a> <span class="p">)</span>
</span></pre></div>
@ -156,16 +280,16 @@
</div>
<a class="headerlink" href="#Interface.__init__"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Interface.__init__-19"><a href="#Interface.__init__-19"><span class="linenos">19</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">template</span><span class="p">:</span><span class="n">Jinja2Templates</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span><span class="n">DB</span><span class="p">):</span>
</span><span id="Interface.__init__-20"><a href="#Interface.__init__-20"><span class="linenos">20</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">template</span>
</span><span id="Interface.__init__-21"><a href="#Interface.__init__-21"><span class="linenos">21</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
</span><span id="Interface.__init__-22"><a href="#Interface.__init__-22"><span class="linenos">22</span></a>
</span><span id="Interface.__init__-23"><a href="#Interface.__init__-23"><span class="linenos">23</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">router</span> <span class="o">=</span> <span class="n">APIRouter</span><span class="p">(</span>
</span><span id="Interface.__init__-24"><a href="#Interface.__init__-24"><span class="linenos">24</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;/app&quot;</span><span class="p">,</span>
</span><span id="Interface.__init__-25"><a href="#Interface.__init__-25"><span class="linenos">25</span></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;app, gui&quot;</span><span class="p">]</span>
</span><span id="Interface.__init__-26"><a href="#Interface.__init__-26"><span class="linenos">26</span></a> <span class="p">)</span>
</span><span id="Interface.__init__-27"><a href="#Interface.__init__-27"><span class="linenos">27</span></a>
</span><span id="Interface.__init__-28"><a href="#Interface.__init__-28"><span class="linenos">28</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
<div class="pdoc-code codehilite"><pre><span></span><span id="Interface.__init__-27"><a href="#Interface.__init__-27"><span class="linenos">27</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">template</span><span class="p">:</span><span class="n">Jinja2Templates</span><span class="p">,</span> <span class="n">db</span><span class="p">:</span><span class="n">DB</span><span class="p">):</span>
</span><span id="Interface.__init__-28"><a href="#Interface.__init__-28"><span class="linenos">28</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">template</span>
</span><span id="Interface.__init__-29"><a href="#Interface.__init__-29"><span class="linenos">29</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">db</span>
</span><span id="Interface.__init__-30"><a href="#Interface.__init__-30"><span class="linenos">30</span></a>
</span><span id="Interface.__init__-31"><a href="#Interface.__init__-31"><span class="linenos">31</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">router</span> <span class="o">=</span> <span class="n">APIRouter</span><span class="p">(</span>
</span><span id="Interface.__init__-32"><a href="#Interface.__init__-32"><span class="linenos">32</span></a> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_PREFIX</span><span class="p">,</span>
</span><span id="Interface.__init__-33"><a href="#Interface.__init__-33"><span class="linenos">33</span></a> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;app, gui&quot;</span><span class="p">]</span>
</span><span id="Interface.__init__-34"><a href="#Interface.__init__-34"><span class="linenos">34</span></a> <span class="p">)</span>
</span><span id="Interface.__init__-35"><a href="#Interface.__init__-35"><span class="linenos">35</span></a>
</span><span id="Interface.__init__-36"><a href="#Interface.__init__-36"><span class="linenos">36</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span></pre></div>

View File

@ -38,6 +38,9 @@
<li>
<a class="variable" href="#WebMain.db">db</a>
</li>
<li>
<a class="variable" href="#WebMain.msg_process">msg_process</a>
</li>
</ul>
</li>
@ -62,90 +65,108 @@
<label class="view-source-button" for="mod-main-view-source"><span>View Source</span></label>
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="c1"># Agenten Plattform</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="c1">#</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="c1"># (c) 2024 Magnus Bender</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="c1"># Institute of Humanities-Centered Artificial Intelligence (CHAI)</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="c1"># Universitaet Hamburg</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="c1"># https://www.chai.uni-hamburg.de/~bender</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="c1"># </span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="c1"># source code released under the terms of GNU Public License Version 3</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="c1"># https://www.gnu.org/licenses/gpl-3.0.txt</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a>
</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a><span class="kn">import</span> <span class="nn">os</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a>
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span><span class="p">,</span> <span class="n">Request</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a><span class="kn">from</span> <span class="nn">fastapi.templating</span> <span class="kn">import</span> <span class="n">Jinja2Templates</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a>
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="kn">from</span> <span class="nn">ums.management.interface</span> <span class="kn">import</span> <span class="n">Interface</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos">17</span></a><span class="kn">from</span> <span class="nn">ums.management.db</span> <span class="kn">import</span> <span class="n">DB</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a>
</span><span id="L-19"><a href="#L-19"><span class="linenos">19</span></a><span class="kn">from</span> <span class="nn">ums.utils</span> <span class="kn">import</span> <span class="n">AgentMessage</span><span class="p">,</span> <span class="n">RiddleData</span><span class="p">,</span> <span class="n">RiddleDataType</span><span class="p">,</span> <span class="n">RiddleSolution</span><span class="p">,</span> <span class="n">TEMPLATE_PATH</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a>
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a><span class="k">class</span> <span class="nc">WebMain</span><span class="p">():</span>
</span><span id="L-22"><a href="#L-22"><span class="linenos">22</span></a>
</span><span id="L-23"><a href="#L-23"><span class="linenos">23</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos">24</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_app</span><span class="p">()</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos">25</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_templates</span><span class="p">()</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos">26</span></a>
</span><span id="L-27"><a href="#L-27"><span class="linenos">27</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">DB</span><span class="p">()</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos">28</span></a>
</span><span id="L-29"><a href="#L-29"><span class="linenos">29</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="L-30"><a href="#L-30"><span class="linenos">30</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routers</span><span class="p">()</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos">31</span></a>
</span><span id="L-32"><a href="#L-32"><span class="linenos">32</span></a>
</span><span id="L-33"><a href="#L-33"><span class="linenos">33</span></a> <span class="k">def</span> <span class="nf">_init_app</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos">34</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">(</span>
</span><span id="L-35"><a href="#L-35"><span class="linenos">35</span></a> <span class="n">title</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform&quot;</span><span class="p">,</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos">36</span></a> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform Management&quot;</span><span class="p">,</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos">37</span></a> <span class="n">openapi_url</span><span class="o">=</span><span class="s2">&quot;/api/schema.json&quot;</span><span class="p">,</span>
</span><span id="L-38"><a href="#L-38"><span class="linenos">38</span></a> <span class="n">docs_url</span><span class="o">=</span><span class="s1">&#39;/api&#39;</span><span class="p">,</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos">39</span></a> <span class="n">redoc_url</span><span class="o">=</span><span class="kc">None</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos">40</span></a> <span class="p">)</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos">41</span></a>
</span><span id="L-42"><a href="#L-42"><span class="linenos">42</span></a> <span class="k">def</span> <span class="nf">_init_templates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-43"><a href="#L-43"><span class="linenos">43</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">Jinja2Templates</span><span class="p">(</span>
</span><span id="L-44"><a href="#L-44"><span class="linenos">44</span></a> <span class="n">directory</span><span class="o">=</span><span class="n">TEMPLATE_PATH</span><span class="p">,</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos">45</span></a> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">True</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos">46</span></a> <span class="p">)</span>
</span><span id="L-47"><a href="#L-47"><span class="linenos">47</span></a>
</span><span id="L-48"><a href="#L-48"><span class="linenos">48</span></a> <span class="k">def</span> <span class="nf">_add_routers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos">49</span></a> <span class="n">interface_router</span> <span class="o">=</span> <span class="n">Interface</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
</span><span id="L-50"><a href="#L-50"><span class="linenos">50</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">include_router</span><span class="p">(</span><span class="n">interface_router</span><span class="o">.</span><span class="n">router</span><span class="p">)</span>
</span><span id="L-51"><a href="#L-51"><span class="linenos">51</span></a>
</span><span id="L-52"><a href="#L-52"><span class="linenos">52</span></a>
</span><span id="L-53"><a href="#L-53"><span class="linenos">53</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos">54</span></a>
</span><span id="L-55"><a href="#L-55"><span class="linenos">55</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/test&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Test&quot;</span><span class="p">)</span>
</span><span id="L-56"><a href="#L-56"><span class="linenos">56</span></a> <span class="k">def</span> <span class="nf">huhu</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AgentMessage</span><span class="p">:</span>
</span><span id="L-57"><a href="#L-57"><span class="linenos">57</span></a> <span class="n">ex</span> <span class="o">=</span> <span class="n">AgentMessage</span><span class="p">(</span>
</span><span id="L-58"><a href="#L-58"><span class="linenos">58</span></a> <span class="nb">id</span><span class="o">=</span><span class="s2">&quot;ex1&quot;</span><span class="p">,</span>
</span><span id="L-59"><a href="#L-59"><span class="linenos">59</span></a> <span class="n">riddle</span><span class="o">=</span><span class="p">{</span>
</span><span id="L-60"><a href="#L-60"><span class="linenos">60</span></a> <span class="s2">&quot;context&quot;</span><span class="p">:</span><span class="s2">&quot;Example 1&quot;</span><span class="p">,</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos">61</span></a> <span class="s2">&quot;question&quot;</span><span class="p">:</span><span class="s2">&quot;Get the name of the person.&quot;</span>
</span><span id="L-62"><a href="#L-62"><span class="linenos">62</span></a> <span class="p">},</span>
</span><span id="L-63"><a href="#L-63"><span class="linenos">63</span></a> <span class="n">data</span><span class="o">=</span><span class="p">[</span>
</span><span id="L-64"><a href="#L-64"><span class="linenos">64</span></a> <span class="n">RiddleData</span><span class="p">(</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos">65</span></a> <span class="nb">type</span><span class="o">=</span><span class="n">RiddleDataType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos">66</span></a> <span class="n">file_plain</span><span class="o">=</span><span class="s2">&quot;./cv.txt&quot;</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos">67</span></a> <span class="p">)</span>
</span><span id="L-68"><a href="#L-68"><span class="linenos">68</span></a> <span class="p">]</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos">69</span></a> <span class="p">)</span>
</span><span id="L-70"><a href="#L-70"><span class="linenos">70</span></a> <span class="n">ex</span><span class="o">.</span><span class="n">status</span><span class="o">.</span><span class="n">extract</span><span class="o">.</span><span class="n">required</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-71"><a href="#L-71"><span class="linenos">71</span></a>
</span><span id="L-72"><a href="#L-72"><span class="linenos">72</span></a> <span class="n">ex</span><span class="o">.</span><span class="n">solution</span> <span class="o">=</span> <span class="n">RiddleSolution</span><span class="p">(</span>
</span><span id="L-73"><a href="#L-73"><span class="linenos">73</span></a> <span class="n">solution</span><span class="o">=</span><span class="s2">&quot;Otto&quot;</span><span class="p">,</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos">74</span></a> <span class="n">explanation</span><span class="o">=</span><span class="s2">&quot;Written in line 6 after &#39;Name:&#39;&quot;</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos">75</span></a> <span class="p">)</span>
</span><span id="L-76"><a href="#L-76"><span class="linenos">76</span></a>
</span><span id="L-77"><a href="#L-77"><span class="linenos">77</span></a> <span class="n">ins_count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">add_message</span><span class="p">(</span><span class="s1">&#39;from&#39;</span><span class="p">,</span> <span class="s1">&#39;to&#39;</span><span class="p">,</span> <span class="n">ex</span><span class="p">)</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos">78</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">set_processed</span><span class="p">(</span><span class="n">ins_count</span><span class="p">)</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos">79</span></a>
</span><span id="L-80"><a href="#L-80"><span class="linenos">80</span></a> <span class="k">return</span> <span class="n">ex</span>
</span><span id="L-81"><a href="#L-81"><span class="linenos">81</span></a>
</span><span id="L-82"><a href="#L-82"><span class="linenos">82</span></a><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;ums.management.main&quot;</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;SERVE&#39;</span><span class="p">,</span> <span class="s1">&#39;false&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;true&#39;</span><span class="p">:</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos">83</span></a> <span class="n">main</span> <span class="o">=</span> <span class="n">WebMain</span><span class="p">()</span>
</span><span id="L-84"><a href="#L-84"><span class="linenos">84</span></a> <span class="n">app</span> <span class="o">=</span> <span class="n">main</span><span class="o">.</span><span class="n">app</span>
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="c1"># Agenten Plattform</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="c1">#</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="c1"># (c) 2024 Magnus Bender</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="c1"># Institute of Humanities-Centered Artificial Intelligence (CHAI)</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="c1"># Universitaet Hamburg</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="c1"># https://www.chai.uni-hamburg.de/~bender</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="c1"># </span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="c1"># source code released under the terms of GNU Public License Version 3</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="c1"># https://www.gnu.org/licenses/gpl-3.0.txt</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a>
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a><span class="kn">import</span> <span class="nn">os</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a>
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a>
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">FastAPI</span><span class="p">,</span> <span class="n">Request</span><span class="p">,</span> <span class="n">BackgroundTasks</span><span class="p">,</span> <span class="n">HTTPException</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a><span class="kn">from</span> <span class="nn">fastapi.responses</span> <span class="kn">import</span> <span class="n">HTMLResponse</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="kn">from</span> <span class="nn">fastapi.templating</span> <span class="kn">import</span> <span class="n">Jinja2Templates</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a>
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="kn">from</span> <span class="nn">jinja2.runtime</span> <span class="kn">import</span> <span class="n">Undefined</span> <span class="k">as</span> <span class="n">JinjaUndefined</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a>
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="kn">from</span> <span class="nn">ums.management.interface</span> <span class="kn">import</span> <span class="n">Interface</span>
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a><span class="kn">from</span> <span class="nn">ums.management.db</span> <span class="kn">import</span> <span class="n">DB</span><span class="p">,</span> <span class="n">MessageDbRow</span>
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a><span class="kn">from</span> <span class="nn">ums.management.process</span> <span class="kn">import</span> <span class="n">MessageProcessor</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a>
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="kn">from</span> <span class="nn">ums.utils</span> <span class="kn">import</span> <span class="n">AgentMessage</span><span class="p">,</span> <span class="n">AgentResponse</span><span class="p">,</span> <span class="n">TEMPLATE_PATH</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a>
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="k">class</span> <span class="nc">WebMain</span><span class="p">():</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a>
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">_TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;%H:%M:%S </span><span class="si">%d</span><span class="s2">.%m.%Y&quot;</span>
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_app</span><span class="p">()</span>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_templates</span><span class="p">()</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">DB</span><span class="p">()</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">msg_process</span> <span class="o">=</span> <span class="n">MessageProcessor</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routers</span><span class="p">()</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="k">def</span> <span class="nf">_init_app</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">(</span>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">title</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform&quot;</span><span class="p">,</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform Management&quot;</span><span class="p">,</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="n">openapi_url</span><span class="o">=</span><span class="s2">&quot;/api/schema.json&quot;</span><span class="p">,</span>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="n">docs_url</span><span class="o">=</span><span class="s1">&#39;/api&#39;</span><span class="p">,</span>
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="n">redoc_url</span><span class="o">=</span><span class="kc">None</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="p">)</span>
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a>
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">def</span> <span class="nf">_init_templates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">Jinja2Templates</span><span class="p">(</span>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">directory</span><span class="o">=</span><span class="n">TEMPLATE_PATH</span><span class="p">,</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">True</span>
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="p">)</span>
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a>
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="k">def</span> <span class="nf">timestamp2date</span><span class="p">(</span><span class="n">t</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="n">JinjaUndefined</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="k">return</span> <span class="s2">&quot;&quot;</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">JinjaUndefined</span><span class="p">)</span> \
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="k">else</span> <span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_TIME_FORMAT</span><span class="p">)</span>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">globals</span><span class="p">[</span><span class="s2">&quot;timestamp2date&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">timestamp2date</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a>
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="k">def</span> <span class="nf">date2timestamp</span><span class="p">(</span><span class="n">d</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="n">JinjaUndefined</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="p">:</span>
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="k">return</span> <span class="s2">&quot;&quot;</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">JinjaUndefined</span><span class="p">)</span> \
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="k">else</span> <span class="nb">int</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_TIME_FORMAT</span><span class="p">)</span><span class="o">.</span><span class="n">timestamp</span><span class="p">())</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">globals</span><span class="p">[</span><span class="s2">&quot;date2timestamp&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">date2timestamp</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="k">def</span> <span class="nf">_add_routers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">interface_router</span> <span class="o">=</span> <span class="n">Interface</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">include_router</span><span class="p">(</span><span class="n">interface_router</span><span class="o">.</span><span class="n">router</span><span class="p">)</span>
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a>
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/index&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">HTMLResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Link list&quot;</span><span class="p">)</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">TemplateResponse</span><span class="p">(</span>
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="s1">&#39;index.html&#39;</span><span class="p">,</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="p">{</span><span class="s2">&quot;request&quot;</span> <span class="p">:</span> <span class="n">request</span><span class="p">}</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="p">)</span>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">&quot;/message&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Send a message to the management&quot;</span><span class="p">)</span>
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span><span class="n">AgentMessage</span><span class="p">,</span> <span class="n">background_tasks</span><span class="p">:</span> <span class="n">BackgroundTasks</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AgentResponse</span><span class="p">:</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a>
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">receiver</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;host&#39;</span><span class="p">]</span>
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="k">if</span> <span class="s1">&#39;:&#39;</span> <span class="ow">in</span> <span class="n">receiver</span><span class="p">:</span>
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="n">receiver</span> <span class="o">=</span> <span class="n">receiver</span><span class="p">[:</span><span class="n">receiver</span><span class="o">.</span><span class="n">rindex</span><span class="p">(</span><span class="s1">&#39;:&#39;</span><span class="p">)]</span>
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a>
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="n">sender</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;x-forwarded-for&#39;</span><span class="p">]</span>
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a>
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">msg_process</span><span class="o">.</span><span class="n">new_message</span><span class="p">(</span><span class="n">sender</span><span class="p">,</span> <span class="n">receiver</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">background_tasks</span><span class="p">)</span>
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/status&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Get status of a message&quot;</span><span class="p">)</span>
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">def</span> <span class="nf">status</span><span class="p">(</span><span class="n">count</span><span class="p">:</span><span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">MessageDbRow</span><span class="p">:</span>
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">by_count</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="k">if</span> <span class="n">msg</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="mi">404</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="s2">&quot;Message not found&quot;</span><span class="p">)</span>
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a>
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">return</span> <span class="n">msg</span>
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a>
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;ums.management.main&quot;</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;SERVE&#39;</span><span class="p">,</span> <span class="s1">&#39;false&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="s1">&#39;true&#39;</span><span class="p">:</span>
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="n">main</span> <span class="o">=</span> <span class="n">WebMain</span><span class="p">()</span>
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="n">app</span> <span class="o">=</span> <span class="n">main</span><span class="o">.</span><span class="n">app</span>
</span></pre></div>
@ -161,66 +182,78 @@
</div>
<a class="headerlink" href="#WebMain"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="WebMain-22"><a href="#WebMain-22"><span class="linenos">22</span></a><span class="k">class</span> <span class="nc">WebMain</span><span class="p">():</span>
</span><span id="WebMain-23"><a href="#WebMain-23"><span class="linenos">23</span></a>
</span><span id="WebMain-24"><a href="#WebMain-24"><span class="linenos">24</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-25"><a href="#WebMain-25"><span class="linenos">25</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_app</span><span class="p">()</span>
</span><span id="WebMain-26"><a href="#WebMain-26"><span class="linenos">26</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_templates</span><span class="p">()</span>
</span><span id="WebMain-27"><a href="#WebMain-27"><span class="linenos">27</span></a>
</span><span id="WebMain-28"><a href="#WebMain-28"><span class="linenos">28</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">DB</span><span class="p">()</span>
<div class="pdoc-code codehilite"><pre><span></span><span id="WebMain-28"><a href="#WebMain-28"><span class="linenos">28</span></a><span class="k">class</span> <span class="nc">WebMain</span><span class="p">():</span>
</span><span id="WebMain-29"><a href="#WebMain-29"><span class="linenos">29</span></a>
</span><span id="WebMain-30"><a href="#WebMain-30"><span class="linenos">30</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="WebMain-31"><a href="#WebMain-31"><span class="linenos">31</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routers</span><span class="p">()</span>
</span><span id="WebMain-32"><a href="#WebMain-32"><span class="linenos">32</span></a>
</span><span id="WebMain-33"><a href="#WebMain-33"><span class="linenos">33</span></a>
</span><span id="WebMain-34"><a href="#WebMain-34"><span class="linenos">34</span></a> <span class="k">def</span> <span class="nf">_init_app</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-35"><a href="#WebMain-35"><span class="linenos">35</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">(</span>
</span><span id="WebMain-36"><a href="#WebMain-36"><span class="linenos">36</span></a> <span class="n">title</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform&quot;</span><span class="p">,</span>
</span><span id="WebMain-37"><a href="#WebMain-37"><span class="linenos">37</span></a> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform Management&quot;</span><span class="p">,</span>
</span><span id="WebMain-38"><a href="#WebMain-38"><span class="linenos">38</span></a> <span class="n">openapi_url</span><span class="o">=</span><span class="s2">&quot;/api/schema.json&quot;</span><span class="p">,</span>
</span><span id="WebMain-39"><a href="#WebMain-39"><span class="linenos">39</span></a> <span class="n">docs_url</span><span class="o">=</span><span class="s1">&#39;/api&#39;</span><span class="p">,</span>
</span><span id="WebMain-40"><a href="#WebMain-40"><span class="linenos">40</span></a> <span class="n">redoc_url</span><span class="o">=</span><span class="kc">None</span>
</span><span id="WebMain-41"><a href="#WebMain-41"><span class="linenos">41</span></a> <span class="p">)</span>
</span><span id="WebMain-30"><a href="#WebMain-30"><span class="linenos">30</span></a> <span class="n">_TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;%H:%M:%S </span><span class="si">%d</span><span class="s2">.%m.%Y&quot;</span>
</span><span id="WebMain-31"><a href="#WebMain-31"><span class="linenos">31</span></a>
</span><span id="WebMain-32"><a href="#WebMain-32"><span class="linenos">32</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-33"><a href="#WebMain-33"><span class="linenos">33</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_app</span><span class="p">()</span>
</span><span id="WebMain-34"><a href="#WebMain-34"><span class="linenos">34</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_init_templates</span><span class="p">()</span>
</span><span id="WebMain-35"><a href="#WebMain-35"><span class="linenos">35</span></a>
</span><span id="WebMain-36"><a href="#WebMain-36"><span class="linenos">36</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">DB</span><span class="p">()</span>
</span><span id="WebMain-37"><a href="#WebMain-37"><span class="linenos">37</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">msg_process</span> <span class="o">=</span> <span class="n">MessageProcessor</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
</span><span id="WebMain-38"><a href="#WebMain-38"><span class="linenos">38</span></a>
</span><span id="WebMain-39"><a href="#WebMain-39"><span class="linenos">39</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routes</span><span class="p">()</span>
</span><span id="WebMain-40"><a href="#WebMain-40"><span class="linenos">40</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add_routers</span><span class="p">()</span>
</span><span id="WebMain-41"><a href="#WebMain-41"><span class="linenos">41</span></a>
</span><span id="WebMain-42"><a href="#WebMain-42"><span class="linenos">42</span></a>
</span><span id="WebMain-43"><a href="#WebMain-43"><span class="linenos">43</span></a> <span class="k">def</span> <span class="nf">_init_templates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-44"><a href="#WebMain-44"><span class="linenos">44</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">Jinja2Templates</span><span class="p">(</span>
</span><span id="WebMain-45"><a href="#WebMain-45"><span class="linenos">45</span></a> <span class="n">directory</span><span class="o">=</span><span class="n">TEMPLATE_PATH</span><span class="p">,</span>
</span><span id="WebMain-46"><a href="#WebMain-46"><span class="linenos">46</span></a> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">True</span>
</span><span id="WebMain-47"><a href="#WebMain-47"><span class="linenos">47</span></a> <span class="p">)</span>
</span><span id="WebMain-48"><a href="#WebMain-48"><span class="linenos">48</span></a>
</span><span id="WebMain-49"><a href="#WebMain-49"><span class="linenos">49</span></a> <span class="k">def</span> <span class="nf">_add_routers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-50"><a href="#WebMain-50"><span class="linenos">50</span></a> <span class="n">interface_router</span> <span class="o">=</span> <span class="n">Interface</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
</span><span id="WebMain-51"><a href="#WebMain-51"><span class="linenos">51</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">include_router</span><span class="p">(</span><span class="n">interface_router</span><span class="o">.</span><span class="n">router</span><span class="p">)</span>
</span><span id="WebMain-52"><a href="#WebMain-52"><span class="linenos">52</span></a>
</span><span id="WebMain-53"><a href="#WebMain-53"><span class="linenos">53</span></a>
</span><span id="WebMain-54"><a href="#WebMain-54"><span class="linenos">54</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-55"><a href="#WebMain-55"><span class="linenos">55</span></a>
</span><span id="WebMain-56"><a href="#WebMain-56"><span class="linenos">56</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/test&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Test&quot;</span><span class="p">)</span>
</span><span id="WebMain-57"><a href="#WebMain-57"><span class="linenos">57</span></a> <span class="k">def</span> <span class="nf">huhu</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AgentMessage</span><span class="p">:</span>
</span><span id="WebMain-58"><a href="#WebMain-58"><span class="linenos">58</span></a> <span class="n">ex</span> <span class="o">=</span> <span class="n">AgentMessage</span><span class="p">(</span>
</span><span id="WebMain-59"><a href="#WebMain-59"><span class="linenos">59</span></a> <span class="nb">id</span><span class="o">=</span><span class="s2">&quot;ex1&quot;</span><span class="p">,</span>
</span><span id="WebMain-60"><a href="#WebMain-60"><span class="linenos">60</span></a> <span class="n">riddle</span><span class="o">=</span><span class="p">{</span>
</span><span id="WebMain-61"><a href="#WebMain-61"><span class="linenos">61</span></a> <span class="s2">&quot;context&quot;</span><span class="p">:</span><span class="s2">&quot;Example 1&quot;</span><span class="p">,</span>
</span><span id="WebMain-62"><a href="#WebMain-62"><span class="linenos">62</span></a> <span class="s2">&quot;question&quot;</span><span class="p">:</span><span class="s2">&quot;Get the name of the person.&quot;</span>
</span><span id="WebMain-63"><a href="#WebMain-63"><span class="linenos">63</span></a> <span class="p">},</span>
</span><span id="WebMain-64"><a href="#WebMain-64"><span class="linenos">64</span></a> <span class="n">data</span><span class="o">=</span><span class="p">[</span>
</span><span id="WebMain-65"><a href="#WebMain-65"><span class="linenos">65</span></a> <span class="n">RiddleData</span><span class="p">(</span>
</span><span id="WebMain-66"><a href="#WebMain-66"><span class="linenos">66</span></a> <span class="nb">type</span><span class="o">=</span><span class="n">RiddleDataType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="WebMain-67"><a href="#WebMain-67"><span class="linenos">67</span></a> <span class="n">file_plain</span><span class="o">=</span><span class="s2">&quot;./cv.txt&quot;</span>
</span><span id="WebMain-68"><a href="#WebMain-68"><span class="linenos">68</span></a> <span class="p">)</span>
</span><span id="WebMain-69"><a href="#WebMain-69"><span class="linenos">69</span></a> <span class="p">]</span>
</span><span id="WebMain-70"><a href="#WebMain-70"><span class="linenos">70</span></a> <span class="p">)</span>
</span><span id="WebMain-71"><a href="#WebMain-71"><span class="linenos">71</span></a> <span class="n">ex</span><span class="o">.</span><span class="n">status</span><span class="o">.</span><span class="n">extract</span><span class="o">.</span><span class="n">required</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="WebMain-43"><a href="#WebMain-43"><span class="linenos">43</span></a> <span class="k">def</span> <span class="nf">_init_app</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-44"><a href="#WebMain-44"><span class="linenos">44</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">(</span>
</span><span id="WebMain-45"><a href="#WebMain-45"><span class="linenos">45</span></a> <span class="n">title</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform&quot;</span><span class="p">,</span>
</span><span id="WebMain-46"><a href="#WebMain-46"><span class="linenos">46</span></a> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Agenten Plattform Management&quot;</span><span class="p">,</span>
</span><span id="WebMain-47"><a href="#WebMain-47"><span class="linenos">47</span></a> <span class="n">openapi_url</span><span class="o">=</span><span class="s2">&quot;/api/schema.json&quot;</span><span class="p">,</span>
</span><span id="WebMain-48"><a href="#WebMain-48"><span class="linenos">48</span></a> <span class="n">docs_url</span><span class="o">=</span><span class="s1">&#39;/api&#39;</span><span class="p">,</span>
</span><span id="WebMain-49"><a href="#WebMain-49"><span class="linenos">49</span></a> <span class="n">redoc_url</span><span class="o">=</span><span class="kc">None</span>
</span><span id="WebMain-50"><a href="#WebMain-50"><span class="linenos">50</span></a> <span class="p">)</span>
</span><span id="WebMain-51"><a href="#WebMain-51"><span class="linenos">51</span></a>
</span><span id="WebMain-52"><a href="#WebMain-52"><span class="linenos">52</span></a> <span class="k">def</span> <span class="nf">_init_templates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-53"><a href="#WebMain-53"><span class="linenos">53</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span> <span class="o">=</span> <span class="n">Jinja2Templates</span><span class="p">(</span>
</span><span id="WebMain-54"><a href="#WebMain-54"><span class="linenos">54</span></a> <span class="n">directory</span><span class="o">=</span><span class="n">TEMPLATE_PATH</span><span class="p">,</span>
</span><span id="WebMain-55"><a href="#WebMain-55"><span class="linenos">55</span></a> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">True</span>
</span><span id="WebMain-56"><a href="#WebMain-56"><span class="linenos">56</span></a> <span class="p">)</span>
</span><span id="WebMain-57"><a href="#WebMain-57"><span class="linenos">57</span></a>
</span><span id="WebMain-58"><a href="#WebMain-58"><span class="linenos">58</span></a> <span class="k">def</span> <span class="nf">timestamp2date</span><span class="p">(</span><span class="n">t</span><span class="p">:</span><span class="nb">int</span><span class="o">|</span><span class="n">JinjaUndefined</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="WebMain-59"><a href="#WebMain-59"><span class="linenos">59</span></a> <span class="k">return</span> <span class="s2">&quot;&quot;</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">JinjaUndefined</span><span class="p">)</span> \
</span><span id="WebMain-60"><a href="#WebMain-60"><span class="linenos">60</span></a> <span class="k">else</span> <span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_TIME_FORMAT</span><span class="p">)</span>
</span><span id="WebMain-61"><a href="#WebMain-61"><span class="linenos">61</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">globals</span><span class="p">[</span><span class="s2">&quot;timestamp2date&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">timestamp2date</span>
</span><span id="WebMain-62"><a href="#WebMain-62"><span class="linenos">62</span></a>
</span><span id="WebMain-63"><a href="#WebMain-63"><span class="linenos">63</span></a> <span class="k">def</span> <span class="nf">date2timestamp</span><span class="p">(</span><span class="n">d</span><span class="p">:</span><span class="nb">str</span><span class="o">|</span><span class="n">JinjaUndefined</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="o">|</span><span class="nb">str</span><span class="p">:</span>
</span><span id="WebMain-64"><a href="#WebMain-64"><span class="linenos">64</span></a> <span class="k">return</span> <span class="s2">&quot;&quot;</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">JinjaUndefined</span><span class="p">)</span> \
</span><span id="WebMain-65"><a href="#WebMain-65"><span class="linenos">65</span></a> <span class="k">else</span> <span class="nb">int</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_TIME_FORMAT</span><span class="p">)</span><span class="o">.</span><span class="n">timestamp</span><span class="p">())</span>
</span><span id="WebMain-66"><a href="#WebMain-66"><span class="linenos">66</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">globals</span><span class="p">[</span><span class="s2">&quot;date2timestamp&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">date2timestamp</span>
</span><span id="WebMain-67"><a href="#WebMain-67"><span class="linenos">67</span></a>
</span><span id="WebMain-68"><a href="#WebMain-68"><span class="linenos">68</span></a>
</span><span id="WebMain-69"><a href="#WebMain-69"><span class="linenos">69</span></a> <span class="k">def</span> <span class="nf">_add_routers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-70"><a href="#WebMain-70"><span class="linenos">70</span></a> <span class="n">interface_router</span> <span class="o">=</span> <span class="n">Interface</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">)</span>
</span><span id="WebMain-71"><a href="#WebMain-71"><span class="linenos">71</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">include_router</span><span class="p">(</span><span class="n">interface_router</span><span class="o">.</span><span class="n">router</span><span class="p">)</span>
</span><span id="WebMain-72"><a href="#WebMain-72"><span class="linenos">72</span></a>
</span><span id="WebMain-73"><a href="#WebMain-73"><span class="linenos">73</span></a> <span class="n">ex</span><span class="o">.</span><span class="n">solution</span> <span class="o">=</span> <span class="n">RiddleSolution</span><span class="p">(</span>
</span><span id="WebMain-74"><a href="#WebMain-74"><span class="linenos">74</span></a> <span class="n">solution</span><span class="o">=</span><span class="s2">&quot;Otto&quot;</span><span class="p">,</span>
</span><span id="WebMain-75"><a href="#WebMain-75"><span class="linenos">75</span></a> <span class="n">explanation</span><span class="o">=</span><span class="s2">&quot;Written in line 6 after &#39;Name:&#39;&quot;</span>
</span><span id="WebMain-76"><a href="#WebMain-76"><span class="linenos">76</span></a> <span class="p">)</span>
</span><span id="WebMain-77"><a href="#WebMain-77"><span class="linenos">77</span></a>
</span><span id="WebMain-78"><a href="#WebMain-78"><span class="linenos">78</span></a> <span class="n">ins_count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">add_message</span><span class="p">(</span><span class="s1">&#39;from&#39;</span><span class="p">,</span> <span class="s1">&#39;to&#39;</span><span class="p">,</span> <span class="n">ex</span><span class="p">)</span>
</span><span id="WebMain-79"><a href="#WebMain-79"><span class="linenos">79</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">set_processed</span><span class="p">(</span><span class="n">ins_count</span><span class="p">)</span>
</span><span id="WebMain-80"><a href="#WebMain-80"><span class="linenos">80</span></a>
</span><span id="WebMain-81"><a href="#WebMain-81"><span class="linenos">81</span></a> <span class="k">return</span> <span class="n">ex</span>
</span><span id="WebMain-73"><a href="#WebMain-73"><span class="linenos">73</span></a> <span class="k">def</span> <span class="nf">_add_routes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="WebMain-74"><a href="#WebMain-74"><span class="linenos">74</span></a>
</span><span id="WebMain-75"><a href="#WebMain-75"><span class="linenos">75</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/index&quot;</span><span class="p">,</span> <span class="n">response_class</span><span class="o">=</span><span class="n">HTMLResponse</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Link list&quot;</span><span class="p">)</span>
</span><span id="WebMain-76"><a href="#WebMain-76"><span class="linenos">76</span></a> <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
</span><span id="WebMain-77"><a href="#WebMain-77"><span class="linenos">77</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">TemplateResponse</span><span class="p">(</span>
</span><span id="WebMain-78"><a href="#WebMain-78"><span class="linenos">78</span></a> <span class="s1">&#39;index.html&#39;</span><span class="p">,</span>
</span><span id="WebMain-79"><a href="#WebMain-79"><span class="linenos">79</span></a> <span class="p">{</span><span class="s2">&quot;request&quot;</span> <span class="p">:</span> <span class="n">request</span><span class="p">}</span>
</span><span id="WebMain-80"><a href="#WebMain-80"><span class="linenos">80</span></a> <span class="p">)</span>
</span><span id="WebMain-81"><a href="#WebMain-81"><span class="linenos">81</span></a>
</span><span id="WebMain-82"><a href="#WebMain-82"><span class="linenos">82</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">&quot;/message&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Send a message to the management&quot;</span><span class="p">)</span>
</span><span id="WebMain-83"><a href="#WebMain-83"><span class="linenos">83</span></a> <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span><span class="n">AgentMessage</span><span class="p">,</span> <span class="n">background_tasks</span><span class="p">:</span> <span class="n">BackgroundTasks</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">AgentResponse</span><span class="p">:</span>
</span><span id="WebMain-84"><a href="#WebMain-84"><span class="linenos">84</span></a>
</span><span id="WebMain-85"><a href="#WebMain-85"><span class="linenos">85</span></a> <span class="n">receiver</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;host&#39;</span><span class="p">]</span>
</span><span id="WebMain-86"><a href="#WebMain-86"><span class="linenos">86</span></a> <span class="k">if</span> <span class="s1">&#39;:&#39;</span> <span class="ow">in</span> <span class="n">receiver</span><span class="p">:</span>
</span><span id="WebMain-87"><a href="#WebMain-87"><span class="linenos">87</span></a> <span class="n">receiver</span> <span class="o">=</span> <span class="n">receiver</span><span class="p">[:</span><span class="n">receiver</span><span class="o">.</span><span class="n">rindex</span><span class="p">(</span><span class="s1">&#39;:&#39;</span><span class="p">)]</span>
</span><span id="WebMain-88"><a href="#WebMain-88"><span class="linenos">88</span></a>
</span><span id="WebMain-89"><a href="#WebMain-89"><span class="linenos">89</span></a> <span class="n">sender</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;x-forwarded-for&#39;</span><span class="p">]</span>
</span><span id="WebMain-90"><a href="#WebMain-90"><span class="linenos">90</span></a>
</span><span id="WebMain-91"><a href="#WebMain-91"><span class="linenos">91</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">msg_process</span><span class="o">.</span><span class="n">new_message</span><span class="p">(</span><span class="n">sender</span><span class="p">,</span> <span class="n">receiver</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">background_tasks</span><span class="p">)</span>
</span><span id="WebMain-92"><a href="#WebMain-92"><span class="linenos">92</span></a>
</span><span id="WebMain-93"><a href="#WebMain-93"><span class="linenos">93</span></a> <span class="nd">@self</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/status&quot;</span><span class="p">,</span> <span class="n">summary</span><span class="o">=</span><span class="s2">&quot;Get status of a message&quot;</span><span class="p">)</span>
</span><span id="WebMain-94"><a href="#WebMain-94"><span class="linenos">94</span></a> <span class="k">def</span> <span class="nf">status</span><span class="p">(</span><span class="n">count</span><span class="p">:</span><span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">MessageDbRow</span><span class="p">:</span>
</span><span id="WebMain-95"><a href="#WebMain-95"><span class="linenos">95</span></a> <span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">by_count</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
</span><span id="WebMain-96"><a href="#WebMain-96"><span class="linenos">96</span></a> <span class="k">if</span> <span class="n">msg</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="WebMain-97"><a href="#WebMain-97"><span class="linenos">97</span></a> <span class="k">raise</span> <span class="n">HTTPException</span><span class="p">(</span><span class="n">status_code</span><span class="o">=</span><span class="mi">404</span><span class="p">,</span> <span class="n">detail</span><span class="o">=</span><span class="s2">&quot;Message not found&quot;</span><span class="p">)</span>
</span><span id="WebMain-98"><a href="#WebMain-98"><span class="linenos">98</span></a>
</span><span id="WebMain-99"><a href="#WebMain-99"><span class="linenos">99</span></a> <span class="k">return</span> <span class="n">msg</span>
</span></pre></div>
@ -236,6 +269,17 @@
</div>
<div id="WebMain.msg_process" class="classattr">
<div class="attr variable">
<span class="name">msg_process</span>
</div>
<a class="headerlink" href="#WebMain.msg_process"></a>
</div>
</section>
</main>

File diff suppressed because one or more lines are too long

View File

@ -32,6 +32,7 @@
<h2>Submodules</h2>
<ul>
<li><a href="utils/const.html">const</a></li>
<li><a href="utils/request.html">request</a></li>
<li><a href="utils/types.html">types</a></li>
</ul>
@ -71,10 +72,14 @@
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a> <span class="n">RiddleSolution</span><span class="p">,</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a> <span class="n">RiddleData</span><span class="p">,</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos">17</span></a> <span class="n">RiddleDataType</span><span class="p">,</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a> <span class="n">RiddleStatus</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos">19</span></a><span class="p">)</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a>
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a><span class="kn">from</span> <span class="nn">ums.utils.const</span> <span class="kn">import</span> <span class="o">*</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a> <span class="n">RiddleStatus</span><span class="p">,</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos">19</span></a> <span class="n">AgentResponse</span><span class="p">,</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a> <span class="n">MessageDbRow</span>
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a><span class="p">)</span>
</span><span id="L-22"><a href="#L-22"><span class="linenos">22</span></a>
</span><span id="L-23"><a href="#L-23"><span class="linenos">23</span></a><span class="kn">from</span> <span class="nn">ums.utils.const</span> <span class="kn">import</span> <span class="o">*</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos">24</span></a>
</span><span id="L-25"><a href="#L-25"><span class="linenos">25</span></a><span class="kn">from</span> <span class="nn">ums.utils.request</span> <span class="kn">import</span> <span class="n">ManagementRequest</span>
</span></pre></div>

File diff suppressed because one or more lines are too long

View File

@ -161,6 +161,48 @@
</ul>
</li>
<li>
<a class="class" href="#AgentResponse">AgentResponse</a>
<ul class="memberlist">
<li>
<a class="variable" href="#AgentResponse.count">count</a>
</li>
<li>
<a class="variable" href="#AgentResponse.msg">msg</a>
</li>
<li>
<a class="variable" href="#AgentResponse.error">error</a>
</li>
<li>
<a class="variable" href="#AgentResponse.error_msg">error_msg</a>
</li>
</ul>
</li>
<li>
<a class="class" href="#MessageDbRow">MessageDbRow</a>
<ul class="memberlist">
<li>
<a class="variable" href="#MessageDbRow.count">count</a>
</li>
<li>
<a class="variable" href="#MessageDbRow.sender">sender</a>
</li>
<li>
<a class="variable" href="#MessageDbRow.recipient">recipient</a>
</li>
<li>
<a class="variable" href="#MessageDbRow.time">time</a>
</li>
<li>
<a class="variable" href="#MessageDbRow.message">message</a>
</li>
<li>
<a class="variable" href="#MessageDbRow.processed">processed</a>
</li>
</ul>
</li>
</ul>
@ -558,6 +600,66 @@ It provides validation, allow JSON serialization and works well with <a href="ht
</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a><span class="sd"> The status of the riddle.</span>
</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a>
</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a><span class="k">class</span> <span class="nc">AgentResponse</span><span class="p">(</span><span class="n">RiddleInformation</span><span class="p">):</span>
</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a><span class="sd"> Returned by the management when receiving an `AgentMessage`.</span>
</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a>
</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="n">count</span> <span class="p">:</span> <span class="nb">int</span>
</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a><span class="sd"> The count of the message (overall numeric id).</span>
</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a>
</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="o">|</span><span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a><span class="sd"> An additional message.</span>
</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a>
</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="n">error</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a><span class="sd"> If an error occurred.</span>
</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a>
</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="n">error_msg</span><span class="p">:</span> <span class="nb">str</span><span class="o">|</span><span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a><span class="sd"> Error message (if `error` )</span>
</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a>
</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a><span class="k">class</span> <span class="nc">MessageDbRow</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a><span class="sd"> Object representing a database row.</span>
</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a>
</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="n">count</span> <span class="p">:</span> <span class="nb">int</span>
</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a><span class="sd"> The count (primary key) of the item.</span>
</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a>
</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="n">sender</span> <span class="p">:</span> <span class="nb">str</span>
</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a><span class="sd"> The sender of the message.</span>
</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a>
</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="n">recipient</span> <span class="p">:</span> <span class="nb">str</span>
</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a><span class="sd"> The recipient of the message</span>
</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a>
</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="n">time</span> <span class="p">:</span> <span class="nb">int</span>
</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a><span class="sd"> The time (unix timestamp) the message was received/ sent.</span>
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a>
</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="n">message</span> <span class="p">:</span> <span class="n">AgentMessage</span>
</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a><span class="sd"> The message received/ sent.</span>
</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a>
</span><span id="L-349"><a href="#L-349"><span class="linenos">349</span></a> <span class="n">processed</span> <span class="p">:</span> <span class="nb">bool</span>
</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a><span class="sd"> Did the management process the message, i.e., did the tasks necessary for this message (mostly only relevant for received messages).</span>
</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span></pre></div>
@ -752,7 +854,7 @@ about a riddle.</p>
</div>
<div id="RiddleData.file_plain" class="classattr">
<div class="attr variable">
<span class="name">file_plain</span><span class="annotation">: Annotated[str, AfterValidator(func=&lt;function _check_data_file at 0x104208f40&gt;)]</span>
<span class="name">file_plain</span><span class="annotation">: Annotated[str, AfterValidator(func=&lt;function _check_data_file at 0x10428cf40&gt;)]</span>
</div>
@ -768,7 +870,7 @@ The file must exist.</p>
</div>
<div id="RiddleData.file_extracted" class="classattr">
<div class="attr variable">
<span class="name">file_extracted</span><span class="annotation">: Optional[Annotated[str, AfterValidator(func=&lt;function _check_data_file at 0x104208f40&gt;)]]</span>
<span class="name">file_extracted</span><span class="annotation">: Optional[Annotated[str, AfterValidator(func=&lt;function _check_data_file at 0x10428cf40&gt;)]]</span>
</div>
@ -1510,6 +1612,300 @@ Each <em>sub</em> riddle will then get its own id (i.e., <code>ex1-sub1</code>)
</dl>
</div>
</section>
<section id="AgentResponse">
<input id="AgentResponse-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">AgentResponse</span><wbr>(<span class="base"><a href="#RiddleInformation">RiddleInformation</a></span>):
<label class="view-source-button" for="AgentResponse-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#AgentResponse"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="AgentResponse-295"><a href="#AgentResponse-295"><span class="linenos">295</span></a><span class="k">class</span> <span class="nc">AgentResponse</span><span class="p">(</span><span class="n">RiddleInformation</span><span class="p">):</span>
</span><span id="AgentResponse-296"><a href="#AgentResponse-296"><span class="linenos">296</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="AgentResponse-297"><a href="#AgentResponse-297"><span class="linenos">297</span></a><span class="sd"> Returned by the management when receiving an `AgentMessage`.</span>
</span><span id="AgentResponse-298"><a href="#AgentResponse-298"><span class="linenos">298</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="AgentResponse-299"><a href="#AgentResponse-299"><span class="linenos">299</span></a>
</span><span id="AgentResponse-300"><a href="#AgentResponse-300"><span class="linenos">300</span></a> <span class="n">count</span> <span class="p">:</span> <span class="nb">int</span>
</span><span id="AgentResponse-301"><a href="#AgentResponse-301"><span class="linenos">301</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="AgentResponse-302"><a href="#AgentResponse-302"><span class="linenos">302</span></a><span class="sd"> The count of the message (overall numeric id).</span>
</span><span id="AgentResponse-303"><a href="#AgentResponse-303"><span class="linenos">303</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="AgentResponse-304"><a href="#AgentResponse-304"><span class="linenos">304</span></a>
</span><span id="AgentResponse-305"><a href="#AgentResponse-305"><span class="linenos">305</span></a> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="o">|</span><span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="AgentResponse-306"><a href="#AgentResponse-306"><span class="linenos">306</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="AgentResponse-307"><a href="#AgentResponse-307"><span class="linenos">307</span></a><span class="sd"> An additional message.</span>
</span><span id="AgentResponse-308"><a href="#AgentResponse-308"><span class="linenos">308</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="AgentResponse-309"><a href="#AgentResponse-309"><span class="linenos">309</span></a>
</span><span id="AgentResponse-310"><a href="#AgentResponse-310"><span class="linenos">310</span></a> <span class="n">error</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="AgentResponse-311"><a href="#AgentResponse-311"><span class="linenos">311</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="AgentResponse-312"><a href="#AgentResponse-312"><span class="linenos">312</span></a><span class="sd"> If an error occurred.</span>
</span><span id="AgentResponse-313"><a href="#AgentResponse-313"><span class="linenos">313</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="AgentResponse-314"><a href="#AgentResponse-314"><span class="linenos">314</span></a>
</span><span id="AgentResponse-315"><a href="#AgentResponse-315"><span class="linenos">315</span></a> <span class="n">error_msg</span><span class="p">:</span> <span class="nb">str</span><span class="o">|</span><span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="AgentResponse-316"><a href="#AgentResponse-316"><span class="linenos">316</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="AgentResponse-317"><a href="#AgentResponse-317"><span class="linenos">317</span></a><span class="sd"> Error message (if `error` )</span>
</span><span id="AgentResponse-318"><a href="#AgentResponse-318"><span class="linenos">318</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span></pre></div>
<div class="docstring"><p>Returned by the management when receiving an <code><a href="#AgentMessage">AgentMessage</a></code>.</p>
</div>
<div id="AgentResponse.count" class="classattr">
<div class="attr variable">
<span class="name">count</span><span class="annotation">: int</span>
</div>
<a class="headerlink" href="#AgentResponse.count"></a>
<div class="docstring"><p>The count of the message (overall numeric id).</p>
</div>
</div>
<div id="AgentResponse.msg" class="classattr">
<div class="attr variable">
<span class="name">msg</span><span class="annotation">: str | None</span>
</div>
<a class="headerlink" href="#AgentResponse.msg"></a>
<div class="docstring"><p>An additional message.</p>
</div>
</div>
<div id="AgentResponse.error" class="classattr">
<div class="attr variable">
<span class="name">error</span><span class="annotation">: bool</span>
</div>
<a class="headerlink" href="#AgentResponse.error"></a>
<div class="docstring"><p>If an error occurred.</p>
</div>
</div>
<div id="AgentResponse.error_msg" class="classattr">
<div class="attr variable">
<span class="name">error_msg</span><span class="annotation">: str | None</span>
</div>
<a class="headerlink" href="#AgentResponse.error_msg"></a>
<div class="docstring"><p>Error message (if <code><a href="#AgentResponse.error">error</a></code> )</p>
</div>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt>pydantic.main.BaseModel</dt>
<dd id="AgentResponse.__init__" class="function">BaseModel</dd>
<dd id="AgentResponse.model_extra" class="variable">model_extra</dd>
<dd id="AgentResponse.model_fields_set" class="variable">model_fields_set</dd>
<dd id="AgentResponse.model_construct" class="function">model_construct</dd>
<dd id="AgentResponse.model_copy" class="function">model_copy</dd>
<dd id="AgentResponse.model_dump" class="function">model_dump</dd>
<dd id="AgentResponse.model_dump_json" class="function">model_dump_json</dd>
<dd id="AgentResponse.model_json_schema" class="function">model_json_schema</dd>
<dd id="AgentResponse.model_parametrized_name" class="function">model_parametrized_name</dd>
<dd id="AgentResponse.model_post_init" class="function">model_post_init</dd>
<dd id="AgentResponse.model_rebuild" class="function">model_rebuild</dd>
<dd id="AgentResponse.model_validate" class="function">model_validate</dd>
<dd id="AgentResponse.model_validate_json" class="function">model_validate_json</dd>
<dd id="AgentResponse.model_validate_strings" class="function">model_validate_strings</dd>
<dd id="AgentResponse.dict" class="function">dict</dd>
<dd id="AgentResponse.json" class="function">json</dd>
<dd id="AgentResponse.parse_obj" class="function">parse_obj</dd>
<dd id="AgentResponse.parse_raw" class="function">parse_raw</dd>
<dd id="AgentResponse.parse_file" class="function">parse_file</dd>
<dd id="AgentResponse.from_orm" class="function">from_orm</dd>
<dd id="AgentResponse.construct" class="function">construct</dd>
<dd id="AgentResponse.copy" class="function">copy</dd>
<dd id="AgentResponse.schema" class="function">schema</dd>
<dd id="AgentResponse.schema_json" class="function">schema_json</dd>
<dd id="AgentResponse.validate" class="function">validate</dd>
<dd id="AgentResponse.update_forward_refs" class="function">update_forward_refs</dd>
</div>
</dl>
</div>
</section>
<section id="MessageDbRow">
<input id="MessageDbRow-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">MessageDbRow</span><wbr>(<span class="base">pydantic.main.BaseModel</span>):
<label class="view-source-button" for="MessageDbRow-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#MessageDbRow"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="MessageDbRow-320"><a href="#MessageDbRow-320"><span class="linenos">320</span></a><span class="k">class</span> <span class="nc">MessageDbRow</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
</span><span id="MessageDbRow-321"><a href="#MessageDbRow-321"><span class="linenos">321</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="MessageDbRow-322"><a href="#MessageDbRow-322"><span class="linenos">322</span></a><span class="sd"> Object representing a database row.</span>
</span><span id="MessageDbRow-323"><a href="#MessageDbRow-323"><span class="linenos">323</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MessageDbRow-324"><a href="#MessageDbRow-324"><span class="linenos">324</span></a>
</span><span id="MessageDbRow-325"><a href="#MessageDbRow-325"><span class="linenos">325</span></a> <span class="n">count</span> <span class="p">:</span> <span class="nb">int</span>
</span><span id="MessageDbRow-326"><a href="#MessageDbRow-326"><span class="linenos">326</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="MessageDbRow-327"><a href="#MessageDbRow-327"><span class="linenos">327</span></a><span class="sd"> The count (primary key) of the item.</span>
</span><span id="MessageDbRow-328"><a href="#MessageDbRow-328"><span class="linenos">328</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MessageDbRow-329"><a href="#MessageDbRow-329"><span class="linenos">329</span></a>
</span><span id="MessageDbRow-330"><a href="#MessageDbRow-330"><span class="linenos">330</span></a> <span class="n">sender</span> <span class="p">:</span> <span class="nb">str</span>
</span><span id="MessageDbRow-331"><a href="#MessageDbRow-331"><span class="linenos">331</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="MessageDbRow-332"><a href="#MessageDbRow-332"><span class="linenos">332</span></a><span class="sd"> The sender of the message.</span>
</span><span id="MessageDbRow-333"><a href="#MessageDbRow-333"><span class="linenos">333</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MessageDbRow-334"><a href="#MessageDbRow-334"><span class="linenos">334</span></a>
</span><span id="MessageDbRow-335"><a href="#MessageDbRow-335"><span class="linenos">335</span></a> <span class="n">recipient</span> <span class="p">:</span> <span class="nb">str</span>
</span><span id="MessageDbRow-336"><a href="#MessageDbRow-336"><span class="linenos">336</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="MessageDbRow-337"><a href="#MessageDbRow-337"><span class="linenos">337</span></a><span class="sd"> The recipient of the message</span>
</span><span id="MessageDbRow-338"><a href="#MessageDbRow-338"><span class="linenos">338</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MessageDbRow-339"><a href="#MessageDbRow-339"><span class="linenos">339</span></a>
</span><span id="MessageDbRow-340"><a href="#MessageDbRow-340"><span class="linenos">340</span></a> <span class="n">time</span> <span class="p">:</span> <span class="nb">int</span>
</span><span id="MessageDbRow-341"><a href="#MessageDbRow-341"><span class="linenos">341</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="MessageDbRow-342"><a href="#MessageDbRow-342"><span class="linenos">342</span></a><span class="sd"> The time (unix timestamp) the message was received/ sent.</span>
</span><span id="MessageDbRow-343"><a href="#MessageDbRow-343"><span class="linenos">343</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MessageDbRow-344"><a href="#MessageDbRow-344"><span class="linenos">344</span></a>
</span><span id="MessageDbRow-345"><a href="#MessageDbRow-345"><span class="linenos">345</span></a> <span class="n">message</span> <span class="p">:</span> <span class="n">AgentMessage</span>
</span><span id="MessageDbRow-346"><a href="#MessageDbRow-346"><span class="linenos">346</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="MessageDbRow-347"><a href="#MessageDbRow-347"><span class="linenos">347</span></a><span class="sd"> The message received/ sent.</span>
</span><span id="MessageDbRow-348"><a href="#MessageDbRow-348"><span class="linenos">348</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MessageDbRow-349"><a href="#MessageDbRow-349"><span class="linenos">349</span></a>
</span><span id="MessageDbRow-350"><a href="#MessageDbRow-350"><span class="linenos">350</span></a> <span class="n">processed</span> <span class="p">:</span> <span class="nb">bool</span>
</span><span id="MessageDbRow-351"><a href="#MessageDbRow-351"><span class="linenos">351</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="MessageDbRow-352"><a href="#MessageDbRow-352"><span class="linenos">352</span></a><span class="sd"> Did the management process the message, i.e., did the tasks necessary for this message (mostly only relevant for received messages).</span>
</span><span id="MessageDbRow-353"><a href="#MessageDbRow-353"><span class="linenos">353</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span></pre></div>
<div class="docstring"><p>Object representing a database row.</p>
</div>
<div id="MessageDbRow.count" class="classattr">
<div class="attr variable">
<span class="name">count</span><span class="annotation">: int</span>
</div>
<a class="headerlink" href="#MessageDbRow.count"></a>
<div class="docstring"><p>The count (primary key) of the item.</p>
</div>
</div>
<div id="MessageDbRow.sender" class="classattr">
<div class="attr variable">
<span class="name">sender</span><span class="annotation">: str</span>
</div>
<a class="headerlink" href="#MessageDbRow.sender"></a>
<div class="docstring"><p>The sender of the message.</p>
</div>
</div>
<div id="MessageDbRow.recipient" class="classattr">
<div class="attr variable">
<span class="name">recipient</span><span class="annotation">: str</span>
</div>
<a class="headerlink" href="#MessageDbRow.recipient"></a>
<div class="docstring"><p>The recipient of the message</p>
</div>
</div>
<div id="MessageDbRow.time" class="classattr">
<div class="attr variable">
<span class="name">time</span><span class="annotation">: int</span>
</div>
<a class="headerlink" href="#MessageDbRow.time"></a>
<div class="docstring"><p>The time (unix timestamp) the message was received/ sent.</p>
</div>
</div>
<div id="MessageDbRow.message" class="classattr">
<div class="attr variable">
<span class="name">message</span><span class="annotation">: <a href="#AgentMessage">AgentMessage</a></span>
</div>
<a class="headerlink" href="#MessageDbRow.message"></a>
<div class="docstring"><p>The message received/ sent.</p>
</div>
</div>
<div id="MessageDbRow.processed" class="classattr">
<div class="attr variable">
<span class="name">processed</span><span class="annotation">: bool</span>
</div>
<a class="headerlink" href="#MessageDbRow.processed"></a>
<div class="docstring"><p>Did the management process the message, i.e., did the tasks necessary for this message (mostly only relevant for received messages).</p>
</div>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt>pydantic.main.BaseModel</dt>
<dd id="MessageDbRow.__init__" class="function">BaseModel</dd>
<dd id="MessageDbRow.model_extra" class="variable">model_extra</dd>
<dd id="MessageDbRow.model_fields_set" class="variable">model_fields_set</dd>
<dd id="MessageDbRow.model_construct" class="function">model_construct</dd>
<dd id="MessageDbRow.model_copy" class="function">model_copy</dd>
<dd id="MessageDbRow.model_dump" class="function">model_dump</dd>
<dd id="MessageDbRow.model_dump_json" class="function">model_dump_json</dd>
<dd id="MessageDbRow.model_json_schema" class="function">model_json_schema</dd>
<dd id="MessageDbRow.model_parametrized_name" class="function">model_parametrized_name</dd>
<dd id="MessageDbRow.model_post_init" class="function">model_post_init</dd>
<dd id="MessageDbRow.model_rebuild" class="function">model_rebuild</dd>
<dd id="MessageDbRow.model_validate" class="function">model_validate</dd>
<dd id="MessageDbRow.model_validate_json" class="function">model_validate_json</dd>
<dd id="MessageDbRow.model_validate_strings" class="function">model_validate_strings</dd>
<dd id="MessageDbRow.dict" class="function">dict</dd>
<dd id="MessageDbRow.json" class="function">json</dd>
<dd id="MessageDbRow.parse_obj" class="function">parse_obj</dd>
<dd id="MessageDbRow.parse_raw" class="function">parse_raw</dd>
<dd id="MessageDbRow.parse_file" class="function">parse_file</dd>
<dd id="MessageDbRow.from_orm" class="function">from_orm</dd>
<dd id="MessageDbRow.construct" class="function">construct</dd>
<dd id="MessageDbRow.copy" class="function">copy</dd>
<dd id="MessageDbRow.schema" class="function">schema</dd>
<dd id="MessageDbRow.schema_json" class="function">schema_json</dd>
<dd id="MessageDbRow.validate" class="function">validate</dd>
<dd id="MessageDbRow.update_forward_refs" class="function">update_forward_refs</dd>
</div>
</dl>
</div>
</section>
</main>
<script>
function escapeHTML(html) {