Added Editor api views
This commit is contained in:
parent
2b2a6ddd25
commit
13c587b7da
@ -1,7 +1,9 @@
|
|||||||
from ..models import Dataset, Entry
|
from ..models import Dataset, Entry, User
|
||||||
|
from ..tools.data import validate_json
|
||||||
from ..tools.test import evaluate_answers, generate_questions
|
from ..tools.test import evaluate_answers, generate_questions
|
||||||
|
|
||||||
from flask import Blueprint, jsonify, request
|
from flask import Blueprint, flash, jsonify, request, url_for
|
||||||
|
from flask_login import login_required
|
||||||
|
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from json import loads
|
from json import loads
|
||||||
@ -26,7 +28,7 @@ def _fetch_questions():
|
|||||||
time_adjustment = test.adjustments[user_code]
|
time_adjustment = test.adjustments[user_code]
|
||||||
_time_limit += time_adjustment
|
_time_limit += time_adjustment
|
||||||
end_delta = timedelta(minutes=_time_limit)
|
end_delta = timedelta(minutes=_time_limit)
|
||||||
end_time = datetime.utcnow() + end_delta
|
end_time = datetime.now() + end_delta
|
||||||
else:
|
else:
|
||||||
end_time = None
|
end_time = None
|
||||||
entry.start()
|
entry.start()
|
||||||
@ -64,3 +66,36 @@ def _submit_quiz():
|
|||||||
'id': id
|
'id': id
|
||||||
}), 200
|
}), 200
|
||||||
|
|
||||||
|
@api.route('/editor/', methods=['POST'])
|
||||||
|
@login_required
|
||||||
|
def _editor(id:str=None):
|
||||||
|
request_data = request.get_json()
|
||||||
|
id = request_data['id']
|
||||||
|
dataset = Dataset.query.filter_by(id=id).first()
|
||||||
|
if not dataset: return jsonify({'error': 'Invalid request. Dataset not found.'}), 404
|
||||||
|
data_path = dataset.get_file()
|
||||||
|
if request_data['action'] == 'fetch':
|
||||||
|
with open(data_path, 'r') as data_file:
|
||||||
|
data = loads(data_file.read())
|
||||||
|
return jsonify({'success': 'Successfully downloaded dataset', 'data': data}), 200
|
||||||
|
default = request_data['default']
|
||||||
|
creator = request_data['creator']
|
||||||
|
name = request_data['name']
|
||||||
|
data = request_data['data']
|
||||||
|
if not validate_json(data): return jsonify({'error': 'The data you submitted was invalid.'}), 400
|
||||||
|
user = User.query.filter_by(id=creator).first()
|
||||||
|
dataset.set_name(name)
|
||||||
|
dataset.creator = user
|
||||||
|
success, message = dataset.update(data=data, default=default)
|
||||||
|
if not success: return jsonify({'error': message}), 400
|
||||||
|
return jsonify({'success': message}), 200
|
||||||
|
|
||||||
|
@api.route('/editor/new/', methods=['POST'])
|
||||||
|
@login_required
|
||||||
|
def _editor_new():
|
||||||
|
new_dataset = Dataset()
|
||||||
|
new_dataset.set_name('New Dataset')
|
||||||
|
success, message = new_dataset.create(data=[], default=False)
|
||||||
|
if not success: return jsonify({'error':message}), 400
|
||||||
|
flash(message, 'success')
|
||||||
|
return jsonify({'success': message, 'redirect_to': url_for('editor._editor_console', id=new_dataset.id)}), 200
|
@ -1,4 +1,10 @@
|
|||||||
from flask import Blueprint, render_template
|
from ..forms.admin import EditDataset
|
||||||
|
from ..models import Dataset, User
|
||||||
|
from ..tools.forms import get_dataset_choices, send_errors_to_client
|
||||||
|
|
||||||
|
from flask import Blueprint, flash, jsonify, redirect, render_template, request
|
||||||
|
from flask.helpers import url_for
|
||||||
|
from flask_login import login_required
|
||||||
|
|
||||||
editor = Blueprint(
|
editor = Blueprint(
|
||||||
name='editor',
|
name='editor',
|
||||||
@ -7,6 +13,26 @@ editor = Blueprint(
|
|||||||
static_folder='static'
|
static_folder='static'
|
||||||
)
|
)
|
||||||
|
|
||||||
@editor.route('/')
|
@editor.route('/', methods=['GET','POST'])
|
||||||
|
@login_required
|
||||||
def _editor():
|
def _editor():
|
||||||
return render_template('/editor/index.html')
|
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('editor._editor_console', id=id)}),200
|
||||||
|
return send_errors_to_client(form=form)
|
||||||
|
form.process()
|
||||||
|
return render_template('/editor/index.html', form=form)
|
||||||
|
|
||||||
|
@editor.route('/<string:id>/')
|
||||||
|
@login_required
|
||||||
|
def _editor_console(id:str=None):
|
||||||
|
dataset = Dataset.query.filter_by(id=id).first()
|
||||||
|
datasets = Dataset.query.count()
|
||||||
|
users = User.query.all()
|
||||||
|
if not dataset:
|
||||||
|
flash('Invalid dataset ID.', 'error')
|
||||||
|
return redirect(url_for('admin._questions'))
|
||||||
|
return render_template('/editor/console.html', dataset=dataset, datasets=datasets, users=users)
|
Loading…
Reference in New Issue
Block a user