diff options
author | 2018-06-22 22:37:27 -0400 | |
---|---|---|
committer | 2018-06-22 22:37:27 -0400 | |
commit | 696c34daba34973b8fc0b64689efb6fd05b6ead1 (patch) | |
tree | 2f9ca1ee3aaadde65aa58716b817016fb0a7cf91 /pysite | |
parent | Reset duplicate team members (diff) |
Updated team lists, jam team list, added buttons to team view
Diffstat (limited to 'pysite')
-rw-r--r-- | pysite/views/main/jams/jam_team_list.py | 50 | ||||
-rw-r--r-- | pysite/views/main/jams/user_team_list.py (renamed from pysite/views/main/jams/teams_list.py) | 9 |
2 files changed, 55 insertions, 4 deletions
diff --git a/pysite/views/main/jams/jam_team_list.py b/pysite/views/main/jams/jam_team_list.py new file mode 100644 index 00000000..474c8f77 --- /dev/null +++ b/pysite/views/main/jams/jam_team_list.py @@ -0,0 +1,50 @@ +import logging + +from rethinkdb import ReqlNonExistenceError +from werkzeug.exceptions import NotFound + +from pysite.base_route import RouteView +from pysite.mixins import DBMixin, OAuthMixin + +log = logging.getLogger(__name__) + + +class JamsUserTeamListView(RouteView, DBMixin, OAuthMixin): + path = "/jams/teams/<int:jam_id>" + name = "jams.jam_team_list" + + table_name = "code_jam_teams" + jams_table = "code_jams" + + def get(self, jam_id): + try: + query = self.db.query(self.jams_table).get(jam_id).merge( + lambda jam_obj: { + "teams": + self.db.query(self.table_name) + .filter(lambda team_row: jam_obj["teams"].contains(team_row["id"])) + .pluck(["id", "name", "members"]) + .merge( + lambda team: { + "members": + self.db.query("users") + .filter(lambda user: team["members"].contains(user["user_id"])) + .coerce_to("array") + }).coerce_to("array") + } + ) + + jam_data = self.db.run(query) + except ReqlNonExistenceError: + log.exception("Failed RethinkDB query") + raise NotFound() + + return self.render( + "main/jams/team_list.html", + jam=jam_data, + teams=jam_data["teams"], + member_ids=self.member_ids + ) + + def member_ids(self, members): + return [member["user_id"] for member in members] diff --git a/pysite/views/main/jams/teams_list.py b/pysite/views/main/jams/user_team_list.py index 46ac081d..272c0a74 100644 --- a/pysite/views/main/jams/teams_list.py +++ b/pysite/views/main/jams/user_team_list.py @@ -4,9 +4,9 @@ from pysite.base_route import RouteView from pysite.mixins import DBMixin, OAuthMixin -class JamsTeamsListView(RouteView, DBMixin, OAuthMixin): - path = "/jams/teams" - name = "jams.teams_list" +class JamsUserTeamListView(RouteView, DBMixin, OAuthMixin): + path = "/jams/my_teams" + name = "jams.user_team_list" def get(self): # list teams a user is (or was) a part of @@ -34,6 +34,7 @@ class JamsTeamsListView(RouteView, DBMixin, OAuthMixin): teams = self.db.run(query) return self.render( - "main/jams/teams_list.html", + "main/jams/team_list.html", + user_teams=True, teams=teams ) |