""" App object setup for application. Contains the create_app() procedure for instansiating new Flask app ins. Settings are instanciated from instance/settings.py, and extra functionallity is pulled in from other modules. """ import logging import random import flask from flask import ( Flask, request, flash, redirect, url_for ) from .app import model from .app import cmdline from .app import api logging.basicConfig(level=logging.DEBUG) def create_app(): """ Create new flask app. Should bind everything needed to it. This method is also used by `flask run` https://flask.palletsprojects.com/en/2.1.x/cli/ """ app = Flask(__name__, instance_relative_config=True) app.config.from_pyfile('settings.py') for module in [ model, cmdline, api, ]: module.init_app(app) # not API @app.route('/') def root_page(): return flask.render_template( 'start_page.html', hosts=model.Host.query.order_by(model.Host.fqdn), random=random, str=str, ) # API? @app.route('/remove', methods=['POST']) def remove_classes(): print(request.form['fqdn']) print(request.form.getlist('cls')) flash('Classes removed') return redirect(url_for('root_page')) # a /enc route for the classifier might be a good idea return app