aboutsummaryrefslogtreecommitdiffstats
path: root/pysite
diff options
context:
space:
mode:
authorGravatar momothereal <[email protected]>2018-06-22 22:37:27 -0400
committerGravatar momothereal <[email protected]>2018-06-22 22:37:27 -0400
commit696c34daba34973b8fc0b64689efb6fd05b6ead1 (patch)
tree2f9ca1ee3aaadde65aa58716b817016fb0a7cf91 /pysite
parentReset 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.py50
-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
)