API - minor refactor and documentation update

This commit is contained in:
Sam 2019-11-13 19:14:13 +01:00
parent 649b773ba9
commit 97534b698b
30 changed files with 325 additions and 62 deletions

View File

@ -1,4 +1,4 @@
# Sphinx build info version 1 # Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 30c5e5361bea086cc59c229f2ef9de12 config: 49668bbf739dde28729baae15bc4e905
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

View File

@ -0,0 +1,7 @@
Configuration
#############
.. autoflask:: fittrackee_api:create_app()
:endpoints:
config.get_application_config,
config.update_application_config

View File

@ -7,6 +7,7 @@ API documentation
activities activities
auth auth
configuration
records records
sports sports
stats stats

View File

@ -1098,7 +1098,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -15,7 +15,7 @@
<script type="text/javascript" src="../_static/language_data.js"></script> <script type="text/javascript" src="../_static/language_data.js"></script>
<link rel="index" title="Index" href="../genindex.html" /> <link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" /> <link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Records" href="records.html" /> <link rel="next" title="Configuration" href="configuration.html" />
<link rel="prev" title="Activities" href="activities.html" /> <link rel="prev" title="Activities" href="activities.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
@ -89,7 +89,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href="records.html" title="Next Chapter: Records"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Records &raquo;</span> <a href="configuration.html" title="Next Chapter: Configuration"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Configuration &raquo;</span>
</a> </a>
</li> </li>
@ -545,7 +545,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

248
docs/api/configuration.html Normal file
View File

@ -0,0 +1,248 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Configuration &#8212; FitTrackee 0.3.0-beta
documentation</title>
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/language_data.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Records" href="records.html" />
<link rel="prev" title="Authentication" href="auth.html" />
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
<script type="text/javascript" src="../_static/js/jquery-1.11.0.min.js "></script>
<script type="text/javascript" src="../_static/js/jquery-fix.js "></script>
<script type="text/javascript" src="../_static/bootstrap-3.3.7/js/bootstrap.min.js "></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js "></script>
</head><body>
<div id="navbar" class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
FitTrackee</a>
<span class="navbar-text navbar-version pull-left"><b>0.3.0</b></span>
</div>
<div class="collapse navbar-collapse nav-collapse">
<ul class="nav navbar-nav">
<li><a href="https://github.com/SamR1/FitTrackee">GitHub</a></li>
<li class="dropdown globaltoc-container">
<a role="button"
id="dLabelGlobalToc"
data-toggle="dropdown"
data-target="#"
href="../index.html">Docs <b class="caret"></b></a>
<ul class="dropdown-menu globaltoc"
role="menu"
aria-labelledby="dLabelGlobalToc"><ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../features.html">Features</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">API documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../changelog.html">Change log</a></li>
</ul>
</ul>
</li>
<li class="dropdown">
<a role="button"
id="dLabelLocalToc"
data-toggle="dropdown"
data-target="#"
href="#">Page <b class="caret"></b></a>
<ul class="dropdown-menu localtoc"
role="menu"
aria-labelledby="dLabelLocalToc"><ul>
<li><a class="reference internal" href="#">Configuration</a></li>
</ul>
</ul>
</li>
<li>
<a href="auth.html" title="Previous Chapter: Authentication"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Authentication</span>
</a>
</li>
<li>
<a href="records.html" title="Next Chapter: Records"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Records &raquo;</span>
</a>
</li>
<li class="hidden-sm">
<div id="sourcelink">
<a href="../_sources/api/configuration.rst.txt"
rel="nofollow">Source</a>
</div></li>
</ul>
<form class="navbar-form navbar-right" action="../search.html" method="get">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search" />
</div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="body col-md-12 content" role="main">
<div class="section" id="configuration">
<h1>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline"></a></h1>
<dl class="get">
<dt id="get--api-config">
<code class="sig-name descname">GET </code><code class="sig-name descname">/api/config</code><a class="headerlink" href="#get--api-config" title="Permalink to this definition"></a></dt>
<dd><p>Get Application config</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/config</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;data&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;gpx_limit_import&quot;</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="nt">&quot;is_registration_enabled&quot;</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="nt">&quot;max_single_file_size&quot;</span><span class="p">:</span> <span class="mi">1048576</span><span class="p">,</span>
<span class="nt">&quot;max_zip_file_size&quot;</span><span class="p">:</span> <span class="mi">10485760</span><span class="p">,</span>
<span class="nt">&quot;max_users&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nt">&quot;registration&quot;</span><span class="p">:</span> <span class="kc">false</span>
<span class="p">},</span>
<span class="nt">&quot;status&quot;</span><span class="p">:</span> <span class="s2">&quot;success&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Status Codes</dt>
<dd class="field-odd"><ul class="simple">
<li><p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> success</p></li>
<li><p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> Error on getting configuration.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="patch">
<dt id="patch--api-config">
<code class="sig-name descname">PATCH </code><code class="sig-name descname">/api/config</code><a class="headerlink" href="#patch--api-config" title="Permalink to this definition"></a></dt>
<dd><p>Update Application config</p>
<p>Authenticated user must be an admin</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/config</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;data&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;gpx_limit_import&quot;</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="nt">&quot;is_registration_enabled&quot;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nt">&quot;max_single_file_size&quot;</span><span class="p">:</span> <span class="mi">1048576</span><span class="p">,</span>
<span class="nt">&quot;max_zip_file_size&quot;</span><span class="p">:</span> <span class="mi">10485760</span><span class="p">,</span>
<span class="nt">&quot;max_users&quot;</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="nt">&quot;registration&quot;</span><span class="p">:</span> <span class="kc">true</span>
<span class="p">},</span>
<span class="nt">&quot;status&quot;</span><span class="p">:</span> <span class="s2">&quot;success&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>auth_user_id</strong> (<em>integer</em>) authenticate user id (from JSON Web Token)</p></li>
</ul>
</dd>
<dt class="field-even">Request JSON Object</dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>gpx_limit_import</strong> (<em>integrer</em>) max number of files in zip archive</p></li>
<li><p><strong>max_single_file_size</strong> (<em>integrer</em>) max size of a single file</p></li>
<li><p><strong>max_zip_file_size</strong> (<em>integrer</em>) max size of a zip archive</p></li>
<li><p><strong>max_users</strong> (<em>integrer</em>) max users allowed to register on instance</p></li>
<li><p><strong>registration</strong> (<em>boolean</em>) is registration enabled ?</p></li>
</ul>
</dd>
<dt class="field-odd">Request Headers</dt>
<dd class="field-odd"><ul class="simple">
<li><p><a class="reference external" href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> OAuth 2.0 Bearer Token</p></li>
</ul>
</dd>
<dt class="field-even">Status Codes</dt>
<dd class="field-even"><ul class="simple">
<li><p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> success</p></li>
<li><p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> invalid payload</p></li>
<li><p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">401 Unauthorized</a> <ul>
<li><p>Provide a valid auth token.</p></li>
<li><p>Signature expired. Please log in again.</p></li>
<li><p>Invalid token. Please log in again.</p></li>
</ul>
</p></li>
<li><p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> You do not have permissions.</p></li>
<li><p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1">500 Internal Server Error</a> Error on updating configuration.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-right">
<a href="#">Back to top</a>
</p>
<p>
&copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p>
</div>
</footer>
</body>
</html>

View File

@ -130,6 +130,7 @@
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="activities.html">Activities</a></li> <li class="toctree-l1"><a class="reference internal" href="activities.html">Activities</a></li>
<li class="toctree-l1"><a class="reference internal" href="auth.html">Authentication</a></li> <li class="toctree-l1"><a class="reference internal" href="auth.html">Authentication</a></li>
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="records.html">Records</a></li> <li class="toctree-l1"><a class="reference internal" href="records.html">Records</a></li>
<li class="toctree-l1"><a class="reference internal" href="sports.html">Sports</a></li> <li class="toctree-l1"><a class="reference internal" href="sports.html">Sports</a></li>
<li class="toctree-l1"><a class="reference internal" href="stats.html">Statistics</a></li> <li class="toctree-l1"><a class="reference internal" href="stats.html">Statistics</a></li>
@ -151,7 +152,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -16,7 +16,7 @@
<link rel="index" title="Index" href="../genindex.html" /> <link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" /> <link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Sports" href="sports.html" /> <link rel="next" title="Sports" href="sports.html" />
<link rel="prev" title="Authentication" href="auth.html" /> <link rel="prev" title="Configuration" href="configuration.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'> <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
@ -85,7 +85,7 @@
<li> <li>
<a href="auth.html" title="Previous Chapter: Authentication"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Authentication</span> <a href="configuration.html" title="Previous Chapter: Configuration"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Configuration</span>
</a> </a>
</li> </li>
<li> <li>
@ -249,7 +249,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -459,7 +459,7 @@ Authenticated user must be an admin</p>
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -396,7 +396,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -361,7 +361,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -316,7 +316,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -223,7 +223,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -127,7 +127,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -169,6 +169,11 @@
<td> <td>
<a href="api/auth.html#get--api-auth-profile"><code class="xref">GET /api/auth/profile</code></a></td><td> <a href="api/auth.html#get--api-auth-profile"><code class="xref">GET /api/auth/profile</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr>
<td></td>
<td>
<a href="api/configuration.html#get--api-config"><code class="xref">GET /api/config</code></a></td><td>
<em></em></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
@ -264,6 +269,11 @@
<td> <td>
<a href="api/activities.html#patch--api-activities-(int-activity_id)"><code class="xref">PATCH /api/activities/(int:activity_id)</code></a></td><td> <a href="api/activities.html#patch--api-activities-(int-activity_id)"><code class="xref">PATCH /api/activities/(int:activity_id)</code></a></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr>
<td></td>
<td>
<a href="api/configuration.html#patch--api-config"><code class="xref">PATCH /api/config</code></a></td><td>
<em></em></td></tr>
<tr> <tr>
<td></td> <td></td>
<td> <td>
@ -284,7 +294,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -168,6 +168,7 @@ Map</a>.</div>
<li class="toctree-l1"><a class="reference internal" href="api/index.html">API documentation</a><ul> <li class="toctree-l1"><a class="reference internal" href="api/index.html">API documentation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="api/activities.html">Activities</a></li> <li class="toctree-l2"><a class="reference internal" href="api/activities.html">Activities</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/auth.html">Authentication</a></li> <li class="toctree-l2"><a class="reference internal" href="api/auth.html">Authentication</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/configuration.html">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/records.html">Records</a></li> <li class="toctree-l2"><a class="reference internal" href="api/records.html">Records</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/sports.html">Sports</a></li> <li class="toctree-l2"><a class="reference internal" href="api/sports.html">Sports</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/stats.html">Statistics</a></li> <li class="toctree-l2"><a class="reference internal" href="api/stats.html">Statistics</a></li>
@ -204,7 +205,7 @@ Map</a>.</div>
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -363,7 +363,7 @@ $ make upgrade-db
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

Binary file not shown.

View File

@ -147,7 +147,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

File diff suppressed because one or more lines are too long

View File

@ -148,7 +148,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -150,7 +150,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -141,7 +141,7 @@
</p> </p>
<p> <p>
&copy; Copyright 2018 - 2019, SamR1.<br/> &copy; Copyright 2018 - 2019, SamR1.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.0.<br/> Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.2.1.<br/>
</p> </p>
</div> </div>
</footer> </footer>

View File

@ -0,0 +1,7 @@
Configuration
#############
.. autoflask:: fittrackee_api:create_app()
:endpoints:
config.get_application_config,
config.update_application_config

View File

@ -7,6 +7,7 @@ API documentation
activities activities
auth auth
configuration
records records
sports sports
stats stats

View File

@ -45,7 +45,7 @@ def create_app():
from .activities.records import records_blueprint # noqa from .activities.records import records_blueprint # noqa
from .activities.sports import sports_blueprint # noqa from .activities.sports import sports_blueprint # noqa
from .activities.stats import stats_blueprint # noqa from .activities.stats import stats_blueprint # noqa
from .application.config import config_blueprint # noqa from .application.app_config import config_blueprint # noqa
app.register_blueprint(users_blueprint, url_prefix='/api') app.register_blueprint(users_blueprint, url_prefix='/api')
app.register_blueprint(auth_blueprint, url_prefix='/api') app.register_blueprint(auth_blueprint, url_prefix='/api')

View File

@ -36,13 +36,22 @@ def app_config_registration_disabled():
return config return config
@pytest.fixture def get_app_config(app_type):
def app(): if app_type == 'with_registration':
return app_config_with_registration()
elif app_type == 'no_registration':
return app_config_registration_disabled()
else:
return None
def get_app(app_type=None):
app = create_app() app = create_app()
with app.app_context(): with app.app_context():
db.create_all() db.create_all()
app_db_config = app_config_with_registration() app_db_config = get_app_config(app_type)
update_app_config_from_database(app, app_db_config) if app_db_config:
update_app_config_from_database(app, app_db_config)
yield app yield app
db.session.remove() db.session.remove()
db.drop_all() db.drop_all()
@ -53,33 +62,19 @@ def app():
return app return app
@pytest.fixture
def app():
yield from get_app('with_registration')
@pytest.fixture @pytest.fixture
def app_no_config(): def app_no_config():
app = create_app() yield from get_app()
with app.app_context():
db.create_all()
yield app
db.session.remove()
db.drop_all()
# close unused idle connections => avoid the following error:
# FATAL: remaining connection slots are reserved for non-replication
# superuser connections
db.engine.dispose()
return app
@pytest.fixture @pytest.fixture
def app_no_registration(): def app_no_registration():
app = create_app() yield from get_app('no_registration')
with app.app_context():
db.create_all()
app_db_config = app_config_registration_disabled()
update_app_config_from_database(app, app_db_config)
yield app
db.session.remove()
db.drop_all()
db.engine.dispose()
return app
@pytest.fixture() @pytest.fixture()

View File

@ -50,9 +50,7 @@ def test_get_config_no_config(app_no_config, user_1_admin):
assert 'Error on getting configuration.' in data['message'] assert 'Error on getting configuration.' in data['message']
def test_get_config_several_config( def test_get_config_several_config(app, app_config, user_1_admin):
app, app_config, user_1_admin
):
client = app.test_client() client = app.test_client()
resp_login = client.post( resp_login = client.post(
'/api/auth/login', '/api/auth/login',
@ -84,9 +82,7 @@ def test_update_config_as_admin(app, user_1_admin):
response = client.patch( response = client.patch(
'/api/config', '/api/config',
content_type='application/json', content_type='application/json',
data=json.dumps( data=json.dumps(dict(registration=True, max_users=10)),
dict(registration=True, max_users=10)
),
headers=dict( headers=dict(
Authorization='Bearer ' Authorization='Bearer '
+ json.loads(resp_login.data.decode())['auth_token'] + json.loads(resp_login.data.decode())['auth_token']
@ -150,9 +146,7 @@ def test_update_config_not_admin(app, user_1):
response = client.patch( response = client.patch(
'/api/config', '/api/config',
content_type='application/json', content_type='application/json',
data=json.dumps( data=json.dumps(dict(registration=True, max_users=10)),
dict(registration=True, max_users=10)
),
headers=dict( headers=dict(
Authorization='Bearer ' Authorization='Bearer '
+ json.loads(resp_login.data.decode())['auth_token'] + json.loads(resp_login.data.decode())['auth_token']
@ -199,9 +193,7 @@ def test_update_config_no_config(app_no_config, user_1_admin):
response = client.patch( response = client.patch(
'/api/config', '/api/config',
content_type='application/json', content_type='application/json',
data=json.dumps( data=json.dumps(dict(registration=True, max_users=10)),
dict(registration=True, max_users=10)
),
headers=dict( headers=dict(
Authorization='Bearer ' Authorization='Bearer '
+ json.loads(resp_login.data.decode())['auth_token'] + json.loads(resp_login.data.decode())['auth_token']

View File

@ -1,4 +1,4 @@
"""empty message """add application config in database
Revision ID: 8a0aad4c838c Revision ID: 8a0aad4c838c
Revises: 1345afe3b11d Revises: 1345afe3b11d