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") | 
