# HG changeset patch # User Santeri Piippo # Date 1516709392 -7200 # Node ID db6ca177c6c4e6c072b10ec1a2d0a61641d78e64 # Parent 5933250813a36e6d160521aae58824d6290ea788 added a simple web frontend diff -r 5933250813a3 -r db6ca177c6c4 parse.py --- a/parse.py Tue Jan 23 14:09:44 2018 +0200 +++ b/parse.py Tue Jan 23 14:09:52 2018 +0200 @@ -7,6 +7,8 @@ pass def parse_ldraw_code(line): + if isinstance(line, bytes): + line = line.decode() line = line.strip() if not line: return linetypes.EmptyLine() diff -r 5933250813a3 -r db6ca177c6c4 testsuite.py --- a/testsuite.py Tue Jan 23 14:09:44 2018 +0200 +++ b/testsuite.py Tue Jan 23 14:09:52 2018 +0200 @@ -84,14 +84,36 @@ report.append(problem) return report +def problem_text(problem, test_suite): + message = test_suite['messages'][problem['name']] + if callable(message): + message = message(**problem['args']) + return message + +def format_report_html(report, model, test_suite): + result = [] + for problem in report: + ldraw_code = model.body[problem['body-index']].textual_representation() + message = str.format( + '
  • {model_name}:{line_number}:' + '{problem_type}: {message}
    {ldraw_code}
  • ', + model_name = model.name, + line_number = problem['line-number'], + problem_type = problem['type'], + message = problem_text(problem, test_suite), + ldraw_code = ldraw_code, + ) + result.append((problem['line-number'], message)) + return '\n'.join( + problem[1] + for problem in sorted(result) + ) + def format_report(report, model, test_suite): import colorama colorama.init() result = [] for problem in report: - problem_text = test_suite['messages'][problem['name']] - if callable(problem_text): - problem_text = problem_text(**problem['args']) if problem['type'] == 'error': text_colour = colorama.Fore.LIGHTRED_EX elif problem['type'] == 'warning': @@ -106,7 +128,7 @@ model_name = model.name, line_number = problem['line-number'], problem_type = problem['type'], - message = problem_text, + message = problem_text(problem, test_suite), colour_reset = colorama.Fore.RESET, ldraw_code = ldraw_code, ) diff -r 5933250813a3 -r db6ca177c6c4 webfront.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webfront.py Tue Jan 23 14:09:52 2018 +0200 @@ -0,0 +1,41 @@ +from flask import Flask, render_template, redirect, request +from ldcheck import load_config, load_colours, find_ldconfig_ldr_paths +from ldcheck import read_ldraw +from testsuite import load_tests, check_model, format_report_html + +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'] + print(type(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) + model = read_ldraw( + file.stream, + name = file.filename, + config = config, + ) + test_suite = load_tests() + report = check_model(model, test_suite) + return str.format( + '', + report = format_report_html(report, model, test_suite) + ) + return ''' + + Upload new File +

    Upload new File

    +
    +

    + +

    + ''' + +app.run()