Wed, 05 Jun 2019 00:33:50 +0300
show the filename of the processed file in the report
32
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
1 | #!/usr/bin/env python3 |
29 | 2 | from flask import Flask, render_template, redirect, request |
3 | from ldcheck import load_config, load_colours, find_ldconfig_ldr_paths | |
57 | 4 | from parse import read_ldraw |
32
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
5 | from testsuite import load_tests, check_model, problem_text |
29 | 6 | |
7 | app = Flask('LDCheck') | |
8 | ||
9 | @app.route('/', methods = ['GET', 'POST']) | |
10 | def web_front(): | |
11 | if request.method == 'POST': | |
12 | # check if the post request has the file part | |
13 | if 'file' not in request.files or not request.files['file'].filename: | |
14 | return redirect(request.url) | |
15 | file = request.files['file'] | |
61
15c95d3fcfd8
show the filename of the processed file in the report
Teemu Piippo <teemu@hecknology.net>
parents:
57
diff
changeset
|
16 | filename = file.filename |
29 | 17 | config = load_config('ldcheck.cfg') |
18 | for ldconfig_ldr_path in find_ldconfig_ldr_paths(config): | |
19 | with ldconfig_ldr_path.open() as ldconfig_ldr: | |
20 | load_colours(ldconfig_ldr) | |
21 | model = read_ldraw( | |
22 | file.stream, | |
61
15c95d3fcfd8
show the filename of the processed file in the report
Teemu Piippo <teemu@hecknology.net>
parents:
57
diff
changeset
|
23 | name = filename, |
57 | 24 | ldraw_directories = config['libraries'], |
29 | 25 | ) |
26 | test_suite = load_tests() | |
27 | report = check_model(model, test_suite) | |
32
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
28 | |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
29 | # Amend human-readable messages into the report |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
30 | for problem in report['problems']: |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
31 | object = model.body[problem['body-index']] |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
32 | problem['message'] = problem_text(problem, test_suite) |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
33 | problem['ldraw-code'] = object.textual_representation() |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
34 | else: |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
35 | report = None |
61
15c95d3fcfd8
show the filename of the processed file in the report
Teemu Piippo <teemu@hecknology.net>
parents:
57
diff
changeset
|
36 | filename = None |
32
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
37 | return render_template('webfront.html', |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
38 | report = report, |
61
15c95d3fcfd8
show the filename of the processed file in the report
Teemu Piippo <teemu@hecknology.net>
parents:
57
diff
changeset
|
39 | name = filename |
32
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
40 | ) |
29 | 41 | |
32
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
42 | @app.route('/static/<path:path>') |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
43 | def static_file(path): |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
44 | from flask import send_from_directory |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
45 | from os import path |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
46 | return send_from_directory(path.join('static', path)) |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
47 | |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
48 | if __name__ == '__main__': |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
49 | from argparse import ArgumentParser |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
50 | parser = ArgumentParser() |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
51 | parser.add_argument('-p', '--port', type = int, default = 5000) |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
52 | parser.add_argument('-d', '--debug', action = 'store_true') |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
53 | args = parser.parse_args() |
75f44d3063da
Reworked web front, problems are now sorted by category as well as line number
Santeri Piippo
parents:
29
diff
changeset
|
54 | app.run(port = args.port, debug = args.debug) |