summaryrefslogtreecommitdiff
path: root/server/python_session.py
diff options
context:
space:
mode:
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}}]