62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
from ..models import Dataset, Test
|
|
from ..tools.data import analyse, check_dataset_exists, check_test_exists
|
|
from ..tools.logs import write
|
|
|
|
from flask import Blueprint, jsonify, render_template, request
|
|
from flask.helpers import abort, flash, redirect, url_for
|
|
from flask_login import login_required
|
|
|
|
analysis = Blueprint(
|
|
name='analysis',
|
|
import_name=__name__,
|
|
template_folder='templates',
|
|
static_folder='static'
|
|
)
|
|
|
|
@analysis.route('/', methods=['GET','POST'])
|
|
@login_required
|
|
@check_dataset_exists
|
|
@check_test_exists
|
|
def _analysis():
|
|
_tests = Test.query.all()
|
|
tests = [ test for test in _tests if test.entries ]
|
|
_datasets = Dataset.query.all()
|
|
datasets = [ dataset for dataset in _datasets if dataset.entries ]
|
|
return render_template('/analysis/index.html', tests=tests, datasets=datasets)
|
|
|
|
@analysis.route('/test/<string:id>')
|
|
@analysis.route('/test/')
|
|
@login_required
|
|
@check_test_exists
|
|
def _test(id:str=None):
|
|
if id in [None, '']:
|
|
flash(message='Please select a valid exam.', category='error')
|
|
return redirect(url_for('analysis._analysis'))
|
|
try:
|
|
test = Test.query.filter_by(id=id).first()
|
|
except Exception as exception:
|
|
write('system.log', f'Database error when processing request \'{request.url}\': {exception}')
|
|
return abort(500)
|
|
if not test:
|
|
flash('Invalid exam.', 'error')
|
|
return redirect(url_for('analysis._analysis'))
|
|
return jsonify(analyse(test))
|
|
return render_template('/analysis/analysis.html', analysis=None, text='Exam')
|
|
|
|
@analysis.route('/dataset/<string:id>')
|
|
@analysis.route('/dataset/')
|
|
@login_required
|
|
@check_dataset_exists
|
|
def _dataset(id:str=None):
|
|
if id in [None, '']:
|
|
flash(message='Please select a valid dataset.', category='error')
|
|
return redirect(url_for('analysis._analysis'))
|
|
try:
|
|
dataset = Dataset.query.filter_by(id=id).first()
|
|
except Exception as exception:
|
|
write('system.log', f'Database error when processing request \'{request.url}\': {exception}')
|
|
return abort(500)
|
|
if not dataset:
|
|
flash('Invalid dataset.', 'error')
|
|
return redirect(url_for('analysis._analysis'))
|
|
return jsonify(analyse(dataset)) |