roundabout,
created on Monday, 9 September 2024, 10:05:35 (1725876335),
received on Monday, 9 September 2024, 10:05:37 (1725876337)
Author identity: vlad <vlad.muntoiu@gmail.com>
94f1a1e313f7c0f2640f4fccd1bdcb2bdc93f66c
app.py
@@ -765,7 +765,47 @@ def get_picture_query(query_data):
return query
@app.route("/query-pictures", methods=["POST"]) # sadly GET can't have a body
@app.route("/query-pictures")
def graphical_query_pictures():
return flask.render_template("graphical-query-pictures.html")
@app.route("/query-pictures-results")
def graphical_query_pictures_results():
query_yaml = flask.request.args.get("query", "")
yaml_parser = yaml.YAML()
query_data = yaml_parser.load(query_yaml) or {}
query = get_picture_query(query_data)
page = int(flask.request.args.get("page", 1))
per_page = int(flask.request.args.get("per_page", 16))
resources = query.paginate(page=page, per_page=per_page)
return flask.render_template("graphical-query-pictures-results.html", resources=resources, query=query_yaml,
page_number=page, page_length=per_page, num_pages=resources.pages,
prev_page=resources.prev_num, next_page=resources.next_num)
@app.route("/raw/picture/<int:id>")
def raw_picture(id):
resource = db.session.get(PictureResource, id)
if resource is None:
flask.abort(404)
response = flask.send_from_directory(path.join(config.DATA_PATH, "pictures"), str(resource.id))
response.mimetype = resource.file_format
return response
@app.route("/api/object-types")
def object_types():
objects = db.session.query(PictureObject).all()
return flask.jsonify({object.id: object.description for object in objects})
@app.route("/api/query-pictures", methods=["POST"]) # sadly GET can't have a body
def query_pictures():
offset = int(flask.request.args.get("offset", 0))
limit = int(flask.request.args.get("limit", 16))
@@ -834,42 +874,3 @@ def query_pictures():
response.headers["Content-Type"] = "application/json"
return response
@app.route("/graphical-query-pictures")
def graphical_query_pictures():
return flask.render_template("graphical-query-pictures.html")
@app.route("/graphical-query-pictures-results")
def graphical_query_pictures_results():
query_yaml = flask.request.args.get("query", "")
yaml_parser = yaml.YAML()
query_data = yaml_parser.load(query_yaml) or {}
query = get_picture_query(query_data)
page = int(flask.request.args.get("page", 1))
per_page = int(flask.request.args.get("per_page", 16))
resources = query.paginate(page=page, per_page=per_page)
return flask.render_template("graphical-query-pictures-results.html", resources=resources, query=query_yaml,
page_number=page, page_length=per_page, num_pages=resources.pages,
prev_page=resources.prev_num, next_page=resources.next_num)
@app.route("/raw/picture/<int:id>")
def raw_picture(id):
resource = db.session.get(PictureResource, id)
if resource is None:
flask.abort(404)
response = flask.send_from_directory(path.join(config.DATA_PATH, "pictures"), str(resource.id))
response.mimetype = resource.file_format
return response
@app.route("/api/object-types")
def object_types():
objects = db.session.query(PictureObject).all()
return flask.jsonify({object.id: object.description for object in objects})
templates/graphical-query-pictures.html
@@ -5,7 +5,7 @@
{% block content %}
<x-frame style="--width: 768px" class="vbox">
<h1>Query pictures</h1>
<form method="GET" action="/graphical-query-pictures-results" class="vbox">
<form method="GET" action="/query-pictures-results" class="vbox">
<label>
<span class="required-asterisk">Query YAML</span>
<textarea name="query" required rows="16"></textarea>