quart-imp/docs/v1/index.html
2024-08-16 15:36:56 +01:00

314 lines
14 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Quart-Imp</title>
<link rel="stylesheet" href="static/water.css">
<link rel="stylesheet" href="static/pygments.emacs-dull.css">
<link rel="apple-touch-icon" sizes="120x120" href="static/apple-touch-icon-120x120.png">
<link rel="icon" type="image/png" sizes="32x32" href="static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="static/favicon-16x16.png">
<meta name="theme-color" content="#ffffff">
</head>
<body>
<aside>
<img src="static/quart-Imp-Medium.png" alt="Quart-Imp Logo" style="margin-top: 20px; width: 50%">
<h1>Quart-Imp</h1>
<div><small>Version: 1.0.x</small></div>
<div><small>Last Updated:</small></div>
<div><small>Fri, 16 Aug 2024</small></div>
<h2>Menu</h2>
<ul>
<li><a href="index.html"><strong>Index</strong></a></li>
</ul>
<ul>
<li><strong>CLI Commands</strong></li>
<ul>
<li><a href="cli_commands-quart-imp_init.html">quart-imp init</a></li>
<li><a href="cli_commands-quart-imp_blueprint.html">quart-imp blueprint</a></li>
</ul>
<li><strong>Imp</strong></li>
<ul>
<li><a href="imp-introduction.html">Introduction</a></li>
<li><a href="imp-init_app-init.html">init_app, __init__</a></li>
<li><a href="imp-init_session.html">init_session</a></li>
<li><a href="imp-import_app_resources.html">import_app_resources</a></li>
<li><a href="imp-import_blueprint.html">import_blueprint</a></li>
<li><a href="imp-import_blueprints.html">import_blueprints</a></li>
</ul>
<li><strong>ImpBlueprint</strong></li>
<ul>
<li><a href="impblueprint-introduction.html">Introduction</a></li>
<li><a href="impblueprint-init.html">__init__</a></li>
<li><a href="impblueprint-import_resources.html">import_resources</a></li>
<li><a href="impblueprint-import_nested_blueprint.html">import_nested_blueprint</a></li>
<li><a href="impblueprint-import_nested_blueprints.html">import_nested_blueprints</a></li>
<li><a href="impblueprint-tmpl.html">tmpl</a></li>
</ul>
<li><strong>quart_imp.config</strong></li>
<ul>
<li><a href="quart_imp_config-quartconfig.html">QuartConfig</a></li>
<li><a href="quart_imp_config-impconfig.html">ImpConfig</a></li>
<li><a href="quart_imp_config-impblueprintconfig.html">ImpBlueprintConfig</a></li>
</ul>
<li><strong>quart_imp.security</strong></li>
<ul>
<li><a href="quart_imp_security-login_check.html">login_check</a></li>
<li><a href="quart_imp_security-permission_check.html">permission_check</a></li>
<li><a href="quart_imp_security-pass_function_check.html">pass_function_check</a></li>
<li><a href="quart_imp_security-api_login_check.html">api_login_check</a></li>
<li><a href="quart_imp_security-include_csrf.html">include_csrf</a></li>
</ul>
<li><strong>quart_imp.auth</strong></li>
<ul>
<li><a href="quart_imp_auth-encrypt_password.html">encrypt_password</a></li>
<li><a href="quart_imp_auth-authenticate_password.html">authenticate_password</a></li>
<li><a href="quart_imp_auth-generate_password.html">generate_password</a></li>
<li><a href="quart_imp_auth-generate_salt.html">generate_salt</a></li>
<li><a href="quart_imp_auth-generate_csrf_token.html">generate_csrf_token</a></li>
<li><a href="quart_imp_auth-generate_private_key.html">generate_private_key</a></li>
<li><a href="quart_imp_auth-generate_email_validator.html">generate_email_validator</a></li>
<li><a href="quart_imp_auth-generate_numeric_validator.html">generate_numeric_validator</a></li>
<li><a href="quart_imp_auth-generate_alphanumeric_validator.html">generate_alphanumeric_validator</a></li>
<li><a href="quart_imp_auth-is_email_address_valid.html">is_email_address_valid</a></li>
<li><a href="quart_imp_auth-is_username_valid.html">is_username_valid</a></li>
</ul>
</ul>
<div style="padding-top: 5px; margin-bottom: 20px;"><small>Hosted on GitHub Pages.</small></div>
</aside>
<section>
<h1>Welcome to the Quart-Imp Documentation</h1>
<h2>What is Quart-Imp?</h2>
<p>Quart-Imp's main purpose is to help simplify the importing of blueprints, and resources. It has a few extra
features built in to help with securing pages and password authentication.</p>
<h2>Install Quart-Imp</h2>
<div class="highlight"><pre><span></span>pip<span class="w"> </span>install<span class="w"> </span>quart-imp
</pre></div>
<h2>Getting Started</h2>
<p>To get started right away, you can use the CLI commands to create a new Quart-Imp project.</p>
<div class="highlight"><pre><span></span>quart-imp<span class="w"> </span>init
</pre></div>
<h3>Minimal Quart-Imp Setup</h3>
<p>Run the following command to create a minimal Quart-Imp project.</p>
<div class="highlight"><pre><span></span>quart-imp<span class="w"> </span>init<span class="w"> </span>-n<span class="w"> </span>app<span class="w"> </span>--minimal
</pre></div>
<p>See <a href="cli_commands-quart-imp_init.html">CLI Commands / quart-imp init</a> for more information.</p>
<h3>The minimal structure</h3>
<h4>Folder Structure</h4>
<div class="highlight"><pre><span></span>app/
├── resources/
│ ├── static/...
│ ├── templates/
│ │ └── index.html
│ └── index.py
└── __init__.py
</pre></div>
<p>File: <code>app/__init__.py</code></p>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">quart</span> <span class="kn">import</span> <span class="n">Quart</span>
<span class="kn">from</span> <span class="nn">quart_imp</span> <span class="kn">import</span> <span class="n">Imp</span>
<span class="kn">from</span> <span class="nn">quart_imp.config</span> <span class="kn">import</span> <span class="n">QuartConfig</span><span class="p">,</span> <span class="n">ImpConfig</span>
<span class="n">imp</span> <span class="o">=</span> <span class="n">Imp</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">create_app</span><span class="p">():</span>
<span class="n">app</span> <span class="o">=</span> <span class="n">Quart</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">static_url_path</span><span class="o">=</span><span class="s2">&quot;/&quot;</span><span class="p">)</span>
<span class="n">QuartConfig</span><span class="p">(</span>
<span class="n">secret_key</span><span class="o">=</span><span class="s2">&quot;secret_key&quot;</span><span class="p">,</span>
<span class="n">app_instance</span><span class="o">=</span><span class="n">app</span>
<span class="p">)</span>
<span class="n">imp</span><span class="o">.</span><span class="n">init_app</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">ImpConfig</span><span class="p">())</span>
<span class="n">imp</span><span class="o">.</span><span class="n">import_app_resources</span><span class="p">()</span>
<span class="c1"># Takes argument &#39;folder&#39; default folder is &#39;resources&#39;</span>
<span class="k">return</span> <span class="n">app</span>
</pre></div>
<p>File: <code>app/resources/routes.py</code></p>
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">quart</span> <span class="kn">import</span> <span class="n">current_app</span> <span class="k">as</span> <span class="n">app</span>
<span class="kn">from</span> <span class="nn">quart</span> <span class="kn">import</span> <span class="n">render_template</span>
<span class="nd">@app</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span> <span class="nf">index</span><span class="p">():</span>
<span class="k">return</span> <span class="k">await</span> <span class="n">render_template</span><span class="p">(</span><span class="s2">&quot;index.html&quot;</span><span class="p">)</span>
</pre></div>
<p>File: <code>app/resources/templates/index.html</code></p>
<div class="highlight"><pre><span></span><span class="cp">&lt;!DOCTYPE html&gt;</span>
<span class="p">&lt;</span><span class="nt">html</span> <span class="na">lang</span><span class="o">=</span><span class="s">&quot;en&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">head</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">&quot;UTF-8&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">title</span><span class="p">&gt;</span>Quart-Imp<span class="p">&lt;/</span><span class="nt">title</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">head</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">body</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">h1</span><span class="p">&gt;</span>Quart-Imp<span class="p">&lt;/</span><span class="nt">h1</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">body</span><span class="p">&gt;</span>
<span class="p">&lt;/</span><span class="nt">html</span><span class="p">&gt;</span>
</pre></div>
<hr />
<p>Setting up a virtual environment is recommended.</p>
<p><strong>Linux / Darwin</strong></p>
<div class="highlight"><pre><span></span>python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
</pre></div>
<div class="highlight"><pre><span></span><span class="nb">source</span><span class="w"> </span>venv/bin/activate
</pre></div>
<p><strong>Windows</strong></p>
<div class="highlight"><pre><span></span>python<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>venv
</pre></div>
<div class="highlight"><pre><span></span>.\venv\Scripts\activate
</pre></div>
</section>
</body>
</html>