Added simple web page, routes are in a separate file
This commit is contained in:
parent
9ead8a457c
commit
c7da7e32b7
9 changed files with 168 additions and 7 deletions
|
@ -2,32 +2,38 @@
|
|||
|
||||
import os
|
||||
import secrets
|
||||
from pathlib import Path
|
||||
|
||||
from flask import Flask
|
||||
|
||||
from . import routes
|
||||
from . import errors
|
||||
|
||||
|
||||
def create_app() -> Flask:
|
||||
"""Flask app factory function"""
|
||||
|
||||
root = Path('..')
|
||||
static = str(root / 'static')
|
||||
tmpl = str(root / 'templates')
|
||||
|
||||
# Create an app object
|
||||
app = Flask(
|
||||
__name__,
|
||||
static_folder=static,
|
||||
template_folder=tmpl,
|
||||
static_folder='../static',
|
||||
template_folder='../templates',
|
||||
instance_relative_config=True,
|
||||
)
|
||||
# Get the token from environment
|
||||
# or generate it using secrets
|
||||
app.config['SECRET_KEY'] = os.getenv(
|
||||
'SECRET_KEY',
|
||||
secrets.token_hex(32),
|
||||
)
|
||||
|
||||
# Create instance/ directory
|
||||
try:
|
||||
os.makedirs(app.instance_path)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
# Add routes
|
||||
routes.add_routes(app)
|
||||
errors.add_routes(app)
|
||||
|
||||
return app
|
||||
|
|
48
flaskapp/errors.py
Normal file
48
flaskapp/errors.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
"""Flask app error handlers"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from flask import Flask
|
||||
from flask import render_template
|
||||
|
||||
# Add other HTTP error codes here
|
||||
CODES = [404, 500]
|
||||
|
||||
|
||||
def add_routes(app: Flask) -> None:
|
||||
"""Add all error handlers
|
||||
|
||||
Args:
|
||||
app (Flask): Flask application
|
||||
"""
|
||||
|
||||
tmpl_dir = app.template_folder
|
||||
if tmpl_dir is None:
|
||||
return
|
||||
|
||||
tmpl = Path(__file__).parent / tmpl_dir
|
||||
|
||||
for code in CODES:
|
||||
add_handler(app, tmpl, code)
|
||||
|
||||
|
||||
def add_handler(
|
||||
app: Flask,
|
||||
tmpl: Path,
|
||||
code: int) -> None:
|
||||
"""Add Flask app error handler.
|
||||
Only for internal use
|
||||
|
||||
Args:
|
||||
app (Flask): Flask application
|
||||
file (str): Template filename
|
||||
code (int): Error code
|
||||
"""
|
||||
|
||||
file = f'{code}.html'
|
||||
|
||||
if (tmpl / file).exists():
|
||||
|
||||
@app.errorhandler(code)
|
||||
def handler(_e):
|
||||
return render_template(file), code
|
16
flaskapp/routes.py
Normal file
16
flaskapp/routes.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
"""Main Flask app routes"""
|
||||
|
||||
from flask import Flask
|
||||
from flask import render_template
|
||||
|
||||
|
||||
def add_routes(app: Flask) -> None:
|
||||
"""Add main routes
|
||||
|
||||
Args:
|
||||
app (Flask): Flask application
|
||||
"""
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
Loading…
Add table
Reference in a new issue