From 33a1aee5c3c3af524cc56056590643af3b127558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Smodi=C5=A1?= Date: Wed, 26 Aug 2015 22:55:53 +0200 Subject: Implemented activity service (auto-saving of traces and solutions). --- wsgi_server.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'wsgi_server.py') diff --git a/wsgi_server.py b/wsgi_server.py index 9b3a51e..76489db 100644 --- a/wsgi_server.py +++ b/wsgi_server.py @@ -102,9 +102,16 @@ class Login(CodeqService): return {'code': 0, 'message': 'OK', 'sid':session.get_sid()} class Activity(CodeqService): - def on_get(self, req, resp): - resp.body = '{}' - resp.status = falcon.HTTP_200 + def process(self, js, session): + trace = js.get('trace') + solution = js.get('solution') + problem_id = js.get('problem_id') + if (trace is not None) or (solution is not None): + # we have something to do + if problem_id is None: + return {'code': 1, 'message': 'Problem ID is missing'} + else: + session.update_solution(problem_id, trace, solution) class Query(CodeqService): def process(self, js, session): @@ -112,28 +119,33 @@ class Query(CodeqService): if step is None: return {'code': 1, 'message': '"step" is not set'} else: + problem_id = js.get('problem_id') + if problem_id is None: + return {'code': 4, 'message': 'Problem ID not given'} + trace = js.get('trace') prolog = session.get_prolog() + program = None if step == 'run': program = js.get('program') query = js.get('query') - problem_id = js.get('problem_id') if program is None: - return {'code': 2, 'message': 'No program specified'} + result = {'code': 2, 'message': 'No program specified'} elif query is None: - return {'code': 3, 'message': 'No query specified'} - elif problem_id is None: - return {'code': 4, 'message': 'Problem ID not given'} + result = {'code': 3, 'message': 'No query specified'} else: messages, status, have_more = prolog.run_for_user(session.get_uid(), problem_id, program, query) - return {'code': 0, 'message': 'ok', 'terminal': {'messages': messages, 'status': status, 'have_more': have_more}} + result = {'code': 0, 'message': 'ok', 'terminal': {'messages': messages, 'status': status, 'have_more': have_more}} elif step == 'next': messages, status, have_more = prolog.step() - return {'code': 0, 'message': 'ok', 'terminal': {'messages': messages, 'status': status, 'have_more': have_more}} + result = {'code': 0, 'message': 'ok', 'terminal': {'messages': messages, 'status': status, 'have_more': have_more}} elif step == 'end': messages, status, have_more = prolog.end() - return {'code': 0, 'message': 'ok', 'terminal': {'messages': messages, 'status': status, 'have_more': have_more}} + result = {'code': 0, 'message': 'ok', 'terminal': {'messages': messages, 'status': status, 'have_more': have_more}} else: - return {'code': 5, 'message': 'Unknown prolog step: {0}'.format(step)} + result = {'code': 5, 'message': 'Unknown prolog step: {0}'.format(step)} + if program or trace: + session.update_solution(problem_id, trace, program) + return result class GetProblem(CodeqService): def process(self, js, session): -- cgit v1.2.1