webfront.py

Wed, 31 Jan 2018 15:19:31 +0200

author
Santeri Piippo
date
Wed, 31 Jan 2018 15:19:31 +0200
changeset 44
464f5e8d57ab
parent 41
4d87bc126368
permissions
-rwxr-xr-x

Renamed hair test

#!/usr/bin/env python3
from flask import Flask, render_template, redirect, request, abort
from ldcheck import load_config, load_colours, find_ldconfig_ldr_paths
from ldcheck import read_ldraw
from testsuite import load_tests, check_model, problem_text

app = Flask('LDCheck')

@app.route('/', methods = ['GET', 'POST'])
def web_front():
    if request.method == 'POST':
        # check if the post request has the file part
        if 'file' not in request.files or not request.files['file'].filename:
            return redirect(request.url)
        file = request.files['file']
        config = load_config('ldcheck.cfg')
        for ldconfig_ldr_path in find_ldconfig_ldr_paths(config):
            with ldconfig_ldr_path.open() as ldconfig_ldr:
                load_colours(ldconfig_ldr)
        try:
            model = read_ldraw(
                file.stream,
                name = file.filename,
                config = config,
            )
        except:
            abort(400)
        test_suite = load_tests()
        report = check_model(model, test_suite)

        # Amend human-readable messages into the report
        for problem in report['problems']:
            object = model.body[problem['body-index']]
            problem['message'] = problem_text(problem, test_suite)
            problem['ldraw-code'] = object.textual_representation()
    else:
        report = None
    return render_template('webfront.html',
        report = report,
    )

@app.route('/static/<path:path>')
def static_file(path):
    from flask import send_from_directory
    from os import path
    return send_from_directory(path.join('static', path))

if __name__ == '__main__':
    from argparse import ArgumentParser
    parser = ArgumentParser()
    parser.add_argument('-p', '--port', type = int, default = 5000)
    parser.add_argument('-d', '--debug', action = 'store_true')
    args = parser.parse_args()
    app.run(port = args.port, debug = args.debug)

mercurial