diff options
author | 2018-07-04 23:43:37 +0000 | |
---|---|---|
committer | 2018-07-04 23:43:37 +0000 | |
commit | 6cd54614196129cc9c5c57ad5f9394a25e0f585d (patch) | |
tree | 3e34a5468aac7c588fefd51edb04a67e25794794 /pysite | |
parent | Update channel listing (diff) | |
parent | Revamp jam index, add winner team staff backend and user frontend (diff) |
Merge branch 'momo/jam-winner' into 'master'
Revamp jam index, add winner team staff backend and user frontend
See merge request python-discord/projects/site!14
Diffstat (limited to 'pysite')
-rw-r--r-- | pysite/tables.py | 2 | ||||
-rw-r--r-- | pysite/views/main/jams/index.py | 6 | ||||
-rw-r--r-- | pysite/views/staff/jams/actions.py | 43 |
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") |