diff options
Diffstat (limited to 'pyenc/__init__.py')
-rw-r--r-- | pyenc/__init__.py | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/pyenc/__init__.py b/pyenc/__init__.py index 6400b49..28829a1 100644 --- a/pyenc/__init__.py +++ b/pyenc/__init__.py @@ -9,8 +9,14 @@ functionallity is pulled in from other modules. import logging import random import os.path +import subprocess -from domonic.html import a +from domonic.html import ( + a, + div, + img, + span, +) import flask from flask import ( Flask, @@ -20,6 +26,9 @@ from flask import ( url_for ) from sqlalchemy.orm import joinedload +import werkzeug.datastructures +import http.client +import urllib.parse from .app import model from .app import cmdline @@ -60,19 +69,19 @@ def create_app(): return flask.render_template( 'list.html', title='Hosts', - items=[a(x.fqdn, _href=f'/host/{x.fqdn}') + items=[div(img(_class='distroicon', + _height=16, + **{'_data-host':x.fqdn}), + a(x.fqdn, _href=f'/host/{x.fqdn}'), + span(x.summary,_class='summary') if x.summary else [], + _class='hostline', + ) for x in result]) @app.route('/host/<host>') def host(host): host = model.Host.query.where(model.Host.fqdn == host).one() - return flask.render_template( - 'host.html', - title=host.fqdn, - env=host.environment.name, - classes=[a(x.name, _href=f'/class/{x.name}') - for x in host.classes]) - + return flask.render_template('host.html', host=host) @app.route('/environment') def environments(): @@ -104,7 +113,8 @@ def create_app(): return flask.render_template( 'list.html', title='Classes', - items=[a(cls.name, _href=f'/class/{cls.name}') + items=[div(a(cls.name, _href=f'/class/{cls.name}'), + span(_class="count", **{'_data-cls': cls.name})) for cls in clss]) @app.route('/class/<name>') @@ -129,6 +139,24 @@ def create_app(): title=f'{environment}/{path}', content=content) + @app.route('/pdb') + def pdb_proxy(): + h1 = http.client.HTTPConnection('busting.adrift.space:8080') + params = urllib.parse.urlencode({ + 'query': request.args.get('query') + }) + type = request.args.get('type') + # h1.request('GET', f'/pdb/query/v4?{params}') + h1.request('GET', f'/pdb/query/v4/{type}?{params}') + r1 = h1.getresponse() + data = r1.read() + d = werkzeug.datastructures.Headers() + for key, value in r1.headers.items(): + d.add(key, value) + return flask.Response(response=[data], + status=r1.status, + headers=d) + # API? @app.route('/remove', methods=['POST']) def remove_classes(): |