diff options
Diffstat (limited to 'pyenc/__init__.py')
-rw-r--r-- | pyenc/__init__.py | 104 |
1 files changed, 30 insertions, 74 deletions
diff --git a/pyenc/__init__.py b/pyenc/__init__.py index d5ec4f4..cd0d57d 100644 --- a/pyenc/__init__.py +++ b/pyenc/__init__.py @@ -1,5 +1,9 @@ """App object setup for application.""" +import random +import json +import yaml + import flask from flask import ( Flask, @@ -10,12 +14,10 @@ from flask import ( url_for ) -import random -import json - from . import model - -import yaml +from . import db +from . import enc +from . import api def create_app(): @@ -23,16 +25,20 @@ 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') - from . import db - db.init_app(app) - - from . import enc - enc.init_app(app) + for module in [ + db, + enc, + api, + ]: + module.init_app(app) # not API @app.route('/') @@ -52,70 +58,20 @@ def create_app(): flash('Classes removed') return redirect(url_for('root_page')) - # API - @app.route('/api/list-classes') - def list_classes(): - q = request.args.get('q', '') - qq = '%{}%'.format('%'.join(q.split(' '))) - - results = \ - model \ - .PuppetClass \ - .query \ - .where(model.PuppetClass.class_name.like(qq)) \ - .all() - print(qq) - return Response(json.dumps([x.class_name for x in results]), - mimetype='application/json') - - @app.route('/api/classes-for') - def classes_for(): - fqdn = request.args.get('fqdn') - classes = [cls.class_name - for cls in model.Host.query.where(model.Host.fqdn == fqdn) - .first().classes] - return Response(json.dumps(classes), - mimetype='application/json') - - @app.route('/api/change-classes', methods=['POST']) - def change_classes(): - j = request.json - host = model.Host.query.where(model.Host.fqdn == j['fqdn']).first() - remove_set = set(j['removed']) - - new_cls = [] - for cls in host.classes: - if cls.class_name in remove_set: - continue - new_cls.append(cls) - host.classes = new_cls - - cls = model.PuppetClass.query \ - .where(model.PuppetClass.class_name.in_(j['added'])) \ - .all() - host.classes.extend(cls) - print(remove_set, db.db.session.dirty) - return flask.redirect(url_for('classes_for', fqdn=j['fqdn'])) - - @app.route('/api/hosts') - def list_hosts(): - data = [x.serialize() for x in model.Host.query.all()] - return Response(flask.json.dumps(data), - mimetype='application/json') - - @app.route('/enc') - def enc(): - fqdn = request.args.get('fqdn', 'default') - host = model.Host.query.where(model.Host.fqdn == fqdn).first() - if not host: - return Response(f"No host with name {fqdn}", - status=404) - out = { - 'environment': host.environment, - 'classes': [cls.class_name for cls in host.classes], - } - return Response(yaml.dump(out), - mimetype='application/x-yaml') + # @app.route('/enc') + # def enc(): + # fqdn = request.args.get('fqdn', 'default') + # host = model.Host.query.where(model.Host.fqdn == fqdn).first() + # if not host: + # return Response(f"No host with name {fqdn}", + # status=404) + + # out = { + # 'environment': host.environment, + # 'classes': [cls.class_name for cls in host.classes], + # } + # return Response(yaml.dump(out), + # mimetype='application/x-yaml') return app |