summaryrefslogtreecommitdiff
path: root/wsgi_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'wsgi_server.py')
-rw-r--r--wsgi_server.py36
1 files changed, 24 insertions, 12 deletions
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):