from ..forms.admin import EditDataset from ..models import Dataset, User from ..tools.forms import get_dataset_choices, send_errors_to_client from ..tools.data import check_dataset_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 from sqlalchemy.exc import SQLAlchemyError view = Blueprint( name='view', import_name=__name__, template_folder='templates', static_folder='static' ) @view.route('/', methods=['GET','POST']) @login_required @check_dataset_exists def _view(): form = EditDataset() form.dataset.choices = get_dataset_choices() if request.method == 'POST': if form.validate_on_submit(): id = request.form.get('dataset') return jsonify({'success': 'Selected dataset', 'redirect_to': url_for('view._view_console', id=id)}),200 return send_errors_to_client(form=form) form.process() return render_template('/view/index.html', form=form) @view.route('//') @login_required @check_dataset_exists def _view_console(id:str=None): try: dataset = Dataset.query.filter_by(id=id).first() datasets = Dataset.query.count() users = User.query.all() except (SQLAlchemyError, ConnectionError) as exception: write('system.log', f'Database error when processing request \'{request.url}\': {exception}') return abort(500) if not dataset: flash('Invalid dataset ID.', 'error') return redirect(url_for('admin._questions')) return render_template('/view/console.html', dataset=dataset, datasets=datasets, users=users)