summaryrefslogtreecommitdiff
path: root/server/problems.py
diff options
context:
space:
mode:
authorTimotej Lazar <timotej.lazar@araneo.org>2015-08-31 18:50:29 +0200
committerTimotej Lazar <timotej.lazar@araneo.org>2015-08-31 18:50:29 +0200
commitcf284202b76c94daa0425ac21e6f36182a375ffc (patch)
tree6efc65e7981b32639e19bcd462d31334e4d54b35 /server/problems.py
parent55e70f4a90ad32bbde58c4f3ad1dc0862739b75e (diff)
Return problems for all languages in list_problems
Diffstat (limited to 'server/problems.py')
-rw-r--r--server/problems.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/server/problems.py b/server/problems.py
index f6f4e45..02f0307 100644
--- a/server/problems.py
+++ b/server/problems.py
@@ -80,24 +80,29 @@ def solutions_for_problems(language, tuples):
pass
return '\n'.join(solutions)
-def list_problems_in_groups(language):
+def list_problems():
conn = get_connection()
try:
cur = conn.cursor()
try:
cur.arraysize = 1000
- cur.execute("select g.identifier, g.name, p.identifier, p.name from problem p inner join problem_group g on g.id = p.problem_group_id where p.language_id = (select id from language where identifier = %s) order by g.identifier, p.identifier", (language,))
+ cur.execute('select l.identifier, l.name, g.identifier, g.name, p.identifier, p.name from problem p inner join language l on l.id = p.language_id inner join problem_group g on g.id = p.problem_group_id order by l.identifier, g.identifier, p.identifier')
result = []
- previous_group_name = ''
+ previous_language = ''
+ previous_group = ''
current_sublist = None
row = cur.fetchone()
while row:
- current_group_name = row[0]
- if previous_group_name != current_group_name:
+ current_language = row[0]
+ current_group = row[2]
+ if previous_language != current_language or previous_group != current_group:
current_sublist = []
- result.append({'identifier': current_group_name, 'name': row[1], 'problems': current_sublist})
- previous_group_name = current_group_name
- current_sublist.append({'identifier': row[2], 'name': row[3]})
+ result.append({'identifier': {'language': current_language, 'group': current_group},
+ 'name': {'language': row[1], 'group': row[3]},
+ 'problems': current_sublist})
+ previous_group = current_group
+ previous_language = current_language
+ current_sublist.append({'identifier': row[4], 'name': row[5]})
row = cur.fetchone()
return result
finally: