aboutsummaryrefslogtreecommitdiffstats
path: root/pysite
diff options
context:
space:
mode:
authorGravatar Momo <[email protected]>2018-07-04 23:43:37 +0000
committerGravatar Gareth Coles <[email protected]>2018-07-04 23:43:37 +0000
commit8519357d2613a870a56a4c1769b4da9069bb0db4 (patch)
tree3e34a5468aac7c588fefd51edb04a67e25794794 /pysite
parentUpdate channel listing (diff)
Revamp jam index, add winner team staff backend and user frontend
Diffstat (limited to 'pysite')
-rw-r--r--pysite/tables.py2
-rw-r--r--pysite/views/main/jams/index.py6
-rw-r--r--pysite/views/staff/jams/actions.py43
3 files changed, 49 insertions, 2 deletions
diff --git a/pysite/tables.py b/pysite/tables.py
index 784183f8..5ccebc77 100644
--- a/pysite/tables.py
+++ b/pysite/tables.py
@@ -52,7 +52,7 @@ TABLES = {
"teams", # list[str]
"theme", # str
"title", # str
- "winners" # list[str]
+ "winning_team" # str
])
),
diff --git a/pysite/views/main/jams/index.py b/pysite/views/main/jams/index.py
index 652779b2..0cd9a287 100644
--- a/pysite/views/main/jams/index.py
+++ b/pysite/views/main/jams/index.py
@@ -29,6 +29,12 @@ class JamsIndexView(RouteView, DBMixin):
)
jams = self.db.run(query, coerce=list)
+ for jam in jams:
+ if "winning_team" in jam and jam["winning_team"]:
+ jam["winning_team"] = self.db.get(self.teams_table, jam["winning_team"])
+ else:
+ jam["winning_team"] = None
+ pass
return self.render("main/jams/index.html", jams=jams, has_applied_to_jam=self.has_applied_to_jam)
def get_jam_response(self, jam, user_id):
diff --git a/pysite/views/staff/jams/actions.py b/pysite/views/staff/jams/actions.py
index 761ba7d6..dfcbf2de 100644
--- a/pysite/views/staff/jams/actions.py
+++ b/pysite/views/staff/jams/actions.py
@@ -11,7 +11,7 @@ GET_ACTIONS = ("questions",)
POST_ACTIONS = (
"associate_question", "disassociate_question", "infraction", "questions", "state", "approve_application",
"unapprove_application", "create_team", "generate_teams", "set_team_member",
- "reroll_team"
+ "reroll_team", "set_winning_team", "unset_winning_team"
)
DELETE_ACTIONS = ("infraction", "question", "team")
@@ -398,6 +398,47 @@ class ActionView(APIView, DBMixin, RMQMixin):
return jsonify({"name": team_obj["name"]})
+ if action == "set_winning_team":
+ team = request.form.get("team")
+
+ if not team:
+ return self.error(
+ ErrorCodes.incorrect_parameters, "Team ID required"
+ )
+
+ team_obj = self.db.get(self.teams_table, team)
+
+ if not team_obj:
+ return self.error(
+ ErrorCodes.incorrect_parameters, "Unknown team ID"
+ )
+
+ jam_number = team_obj["jam"]
+ jam_obj = self.db.get(self.table_name, jam_number)
+ jam_obj["winning_team"] = team
+ self.db.insert(self.table_name, jam_obj, conflict="replace")
+
+ return jsonify({"result": "success"})
+
+ if action == "unset_winning_team":
+ jam = request.form.get("jam", type=int)
+
+ if not jam:
+ return self.error(
+ ErrorCodes.incorrect_parameters, "Jam number required"
+ )
+
+ jam_obj = self.db.get(self.table_name, jam)
+ if not jam_obj:
+ return self.error(
+ ErrorCodes.incorrect_parameters, "Unknown jam number"
+ )
+
+ jam_obj["winning_team"] = None
+ self.db.insert(self.table_name, jam_obj, conflict="replace")
+
+ return jsonify({"result": "success"})
+
if action == "approve_application":
app = request.form.get("id")