From 361f8245079b625560449324faf111ed6fcf3b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Smodi=C5=A1?= Date: Sun, 4 Oct 2015 19:43:09 +0200 Subject: Unification of language session implementations. Added load_problem and end_problem actions so handlers get appropriately created and destroyed upon loading and unloading the problem solving screen. --- server/robot_session.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'server/robot_session.py') diff --git a/server/robot_session.py b/server/robot_session.py index e941641..b41e233 100644 --- a/server/robot_session.py +++ b/server/robot_session.py @@ -3,11 +3,11 @@ import threading from db.models import Problem -from . import problems +import server __all__ = ['RobotSession'] -class RobotSession(object): +class RobotSession(server.LanguageSession): """Abstracts a Robot session. Only public methods are available to the outside world due to the use of multiprocessing managers. Therefore prefix any private methods with an underscore (_). @@ -26,8 +26,8 @@ class RobotSession(object): def hint(self, sid, problem_id, program): language, problem_group, problem = Problem.get_identifier(problem_id) - language_module = problems.load_language(language, 'common') - problem_module = problems.load_problem(language, problem_group, problem, 'common') + language_module = server.problems.load_language(language, 'common') + problem_module = server.problems.load_problem(language, problem_group, problem, 'common') hints = [] if hasattr(language_module, 'hint'): @@ -42,8 +42,8 @@ class RobotSession(object): def test(self, sid, problem_id, program): language, problem_group, problem = Problem.get_identifier(problem_id) - language_module = problems.load_language(language, 'common') - problem_module = problems.load_problem(language, problem_group, problem, 'common') + language_module = server.problems.load_language(language, 'common') + problem_module = server.problems.load_problem(language, problem_group, problem, 'common') try: passed, hints = problem_module.test(program) @@ -63,3 +63,6 @@ class RobotSession(object): hint_type = mod.hint_type[hint['id']] hint_type.instantiate(hint, self._sent_hints) self._sent_hints.extend(hints) + +server.language_session_handlers['robot'] = lambda user_session, problem_id, language_identifier, group_identifier, problem_identifier: RobotSession() + -- cgit v1.2.1