summaryrefslogtreecommitdiff
path: root/kpov_judge/web/kpov_judge/kpov_judge.py
diff options
context:
space:
mode:
Diffstat (limited to 'kpov_judge/web/kpov_judge/kpov_judge.py')
-rwxr-xr-xkpov_judge/web/kpov_judge/kpov_judge.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/kpov_judge/web/kpov_judge/kpov_judge.py b/kpov_judge/web/kpov_judge/kpov_judge.py
index 2febf9a..c0bf885 100755
--- a/kpov_judge/web/kpov_judge/kpov_judge.py
+++ b/kpov_judge/web/kpov_judge/kpov_judge.py
@@ -13,7 +13,7 @@ import kpov_util
import pymongo
import flask
from flask import Flask, g, session, redirect, url_for, abort, render_template, flash, app, request, Response
-from flask.ext.babel import Babel, gettext, ngettext
+from flask.ext.babel import Babel, gettext, ngettext, format_datetime, _
import jinja2
app = Flask(__name__)
@@ -245,10 +245,14 @@ def task_greeting(class_id, task_id, lang):
instr_ok = False
if instr_ok:
try:
- public_params = {}
+ public_params = []
for k, v in meta.items():
if v.get('public', False):
- public_params[k] = params.get(k, "???")
+ public_params += [{
+ 'name': k,
+ 'value': params.get(k),
+ 'description': v.get('descriptions', {}).get(lang)
+ }]
except Exception as e:
instructions = str(e)
computer_list = list(db.student_computers.find({'class_id': class_id, 'task_id': task_id, 'student_id': student_id}))
@@ -266,6 +270,17 @@ def task_greeting(class_id, task_id, lang):
openstackCreated = True
else:
openstackCreated = False
+
+ try:
+ result = db.results.find_one(
+ {'$query': {'class_id': class_id, 'task_id': task_id, 'student_id': student_id},
+ '$orderby': collections.OrderedDict([('result', -1), ('time', 1)])},
+ {'result': 1, 'status': 1, 'hints': 1, 'time': True, '_id': 0})
+ result['time'] = format_datetime(result['time'])
+ print(result)
+ except Exception:
+ result = None
+
return render_template('task_greeting.html',
disk_base_url='/'.join([app.config['STUDENT_DISK_URL'], student_id, class_id, task_id, '']),
class_id=class_id,
@@ -275,8 +290,9 @@ def task_greeting(class_id, task_id, lang):
lang='sl' if lang == 'si' else lang, # TODO s/si/sl in all tasks (and maybe elsewhere)
openstack=openstackCreated,
instructions=jinja2.Template(instructions),
- **public_params,
- )
+ params=public_params,
+ result=result,
+ **{p['name']: p['value'] for p in public_params})
@app.route('/tasks/<class_id>/<task_id>/params.json', methods=['GET', 'POST'])