From ca8dcfdf819dae2aed6c864a3a11f1e30c632e96 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Thu, 15 Oct 2015 15:47:47 +0200 Subject: Store identifiers instead of IDs in Problem model --- server/prolog_session.py | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) (limited to 'server/prolog_session.py') diff --git a/server/prolog_session.py b/server/prolog_session.py index 0faad5c..dfb7c28 100644 --- a/server/prolog_session.py +++ b/server/prolog_session.py @@ -93,12 +93,12 @@ class PrologSession(server.LanguageSession): 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) - language_module = problems.load_language(language, 'common') - problem_module = problems.load_problem(language, problem_group, problem, 'common') + p = Problem.get(id=problem_id) + language_module = problems.load_language(p.language, 'common') + problem_module = problems.load_problem(p.language, p.group, p.identifier, 'common') - solved_problems = [p for p in CodeqUser.solved_problems(session.get_uid(), language) - if p != (problem_group, problem)] + solved_problems = [pp for pp in CodeqUser.solved_problems(session.get_uid(), p.language) + if pp != (p.group, p.identifier)] hints = [] # check if the program is already correct @@ -118,12 +118,12 @@ class PrologSession(server.LanguageSession): 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) - language_module = problems.load_language(language, 'common') - problem_module = problems.load_problem(language, problem_group, problem, 'common') + p = Problem.get(id=problem_id) + language_module = problems.load_language(p.language, 'common') + problem_module = problems.load_problem(p.language, p.group, p.identifier, 'common') - solved_problems = [p for p in CodeqUser.solved_problems(session.get_uid(), language) - if p != (problem_group, problem)] + solved_problems = [pp for pp in CodeqUser.solved_problems(session.get_uid(), p.language) + if pp != (p.group, p.identifier)] try: passed, hints = problem_module.test(program, solved_problems) except AttributeError as ex: @@ -147,13 +147,13 @@ class PrologSession(server.LanguageSession): """A "shorthand" method to start a Prolog session, load correct solutions of all user's solved problems and the given program, and ask a query. """ - language, problem_group, problem = Problem.get_identifier(problem_id) - problem_module = problems.load_problem(language, problem_group, problem, 'common') + p = Problem.get(id=problem_id) + problem_module = problems.load_problem(p.language, p.group, p.identifier, 'common') - solved_problems = [p for p in CodeqUser.solved_problems(user_id, language) - if p != (problem_group, problem)] - other_solutions = problems.solutions_for_problems(language, solved_problems) - problem_facts = problems.get_facts(language, problem_module) or '' + solved_problems = [pp for pp in CodeqUser.solved_problems(user_id, p.language) + if pp != (p.group, p.identifier)] + other_solutions = problems.solutions_for_problems(p.language, solved_problems) + problem_facts = problems.get_facts(p.language, problem_module) or '' code = program + '\n' + other_solutions + '\n' + problem_facts messages, status, have_more = self.run(code) @@ -163,8 +163,4 @@ class PrologSession(server.LanguageSession): self._problem_id = problem_id return messages, status, have_more - def get_problem_id(self): - return self._problem_id - server.language_session_handlers['prolog'] = lambda user_session, problem_id, language_identifier, group_identifier, problem_identifier: PrologSession() - -- cgit v1.2.1