summaryrefslogtreecommitdiff
path: root/server/python_session.py
diff options
context:
space:
mode:
authorTimotej Lazar <timotej.lazar@araneo.org>2015-09-03 18:24:42 +0200
committerTimotej Lazar <timotej.lazar@araneo.org>2015-09-03 18:24:42 +0200
commitc494a44b3c0e8faf77419c3cd5bef4da195e89c6 (patch)
treef8ec1c8a6e90d279c357941e10e82b9c49b37960 /server/python_session.py
parent401bef2dcb434c23eb783131fb36d952043b9f31 (diff)
Pass the session object to test and hint functions
Diffstat (limited to 'server/python_session.py')
-rw-r--r--server/python_session.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/server/python_session.py b/server/python_session.py
index 648a901..161ba0d 100644
--- a/server/python_session.py
+++ b/server/python_session.py
@@ -2,6 +2,7 @@
import multiprocessing.managers
import threading
+import server.user_session
from db.models import Problem
from . import problems
@@ -59,24 +60,27 @@ class PythonSession(object):
self._python.destroy(self._interpreter)
self._interpreter = None
- def hint(self, user_id, problem_id, program):
+ def hint(self, sid, problem_id, program):
+ session = server.user_session.get_session_by_id(sid)
language, problem_group, problem = Problem.get_identifier(problem_id)
+ problem_module = problems.load_problem(language, problem_group, problem, 'common')
# Try problem-specific hints.
- problem_module = problems.load_problem(language, problem_group, problem, 'common')
if hasattr(problem_module, 'hint'):
- hints = problem_module.hint(program)
+ hints = problem_module.hint(session, program)
if hints:
return hints
# Finally return a generic "try thinking a bit" message.
return [{'id': 'no_hint'}]
- def test(self, user_id, problem_id, program):
+ def test(self, sid, problem_id, program):
+ session = server.user_session.get_session_by_id(sid)
language, problem_group, problem = Problem.get_identifier(problem_id)
problem_module = problems.load_problem(language, problem_group, problem, 'common')
+
try:
- n_correct, n_all = problem_module.test(program)
+ n_correct, n_all = problem_module.test(session, program)
return [{'id': 'test_results', 'args': {'passed': n_correct, 'total': n_all}}]
except AttributeError as ex:
return [{'id': 'test_results', 'args': {'passed': 0, 'total': 0}}]