diff options
Diffstat (limited to 'server/robot_session.py')
-rw-r--r-- | server/robot_session.py | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/server/robot_session.py b/server/robot_session.py index 649159a..5477c72 100644 --- a/server/robot_session.py +++ b/server/robot_session.py @@ -40,15 +40,30 @@ class RobotSession(server.LanguageSession): pass def hint(self, sid, problem_id, program): + session = server.user_session.get_session_by_id(sid) p = Problem.get(id=problem_id) + language_module = server.problems.load_language(p.language, 'common') problem_module = server.problems.load_problem(p.language, p.group, p.identifier, 'common') + # experiment support for allowing none/automatic/manual/all hints + # descriptor: {'id': 'hints', 'group': 'none|automatic|manual|all'} + allowed_hints = 'all' + for experiment in session.get_experiments(): + if experiment.get('id') == 'hints': + allowed_hints = experiment.get('group') + break + hints = [] - if hasattr(language_module, 'hint'): - hints = language_module.hint(program) - if not hints and hasattr(problem_module, 'hint'): + # manually defined problem-specific hints + if not hints and hasattr(problem_module, 'hint') and \ + allowed_hints in ('all', 'manual'): hints = problem_module.hint(program) + + # generic language hints (style etc.) + if not hints and hasattr(language_module, 'hint'): + hints = language_module.hint(program) + if not hints: hints = [{'id': 'no_hint'}] |