Added Editor api views

This commit is contained in:
2022-06-22 01:57:45 +01:00
parent 2b2a6ddd25
commit 13c587b7da
2 changed files with 68 additions and 7 deletions

View File

@ -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 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 json import loads
@ -26,7 +28,7 @@ def _fetch_questions():
time_adjustment = test.adjustments[user_code]
_time_limit += time_adjustment
end_delta = timedelta(minutes=_time_limit)
end_time = datetime.utcnow() + end_delta
end_time = datetime.now() + end_delta
else:
end_time = None
entry.start()
@ -63,4 +65,37 @@ def _submit_quiz():
'success': 'Your submission has been processed. Redirecting you to receive your results.',
'id': id
}), 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