Sat, 08 Jun 2019 11:17:17 +0300
cleanup
#!/usr/bin/env python3 import flask import testsuite import config import parse import colours app = flask.Flask('LDCheck') @app.route('/', methods = ['GET', 'POST']) def web_front(): test_suite = testsuite.load_tests() request = flask.request 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 flask.redirect(request.url) file = request.files['file'] filename = file.filename config_object = config.load_config('ldcheck.cfg') for ldconfig_ldr_path in config.find_ldconfig_ldr_paths(config_object): with ldconfig_ldr_path.open() as ldconfig_ldr: colours.load_colours(ldconfig_ldr) model = parse.read_ldraw( file.stream, name = filename, ldraw_directories = config_object['libraries'], ) report = testsuite.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_str = str(problem) problem.ldraw_code = object.textual_representation() return flask.render_template('webfront.html', report = report, name = filename, problem_types = testsuite.all_problem_types(test_suite) ) else: return flask.render_template('webfront.html', report = None, name = None, problem_types = testsuite.all_problem_types(test_suite) ) @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)