# 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()