aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views
diff options
context:
space:
mode:
authorGravatar momothereal <[email protected]>2018-06-20 11:09:46 -0400
committerGravatar momothereal <[email protected]>2018-06-20 11:09:46 -0400
commitdc2a9aeb1c55fef3a7f4ab656301f36f665a1e10 (patch)
tree278291ac2cc8522ce49afed03bdfd2e3dd7f9830 /pysite/views
parentFix teams not being restricted to their jam, and allow users to be in two tea... (diff)
Start work on individual team view
Diffstat (limited to 'pysite/views')
-rw-r--r--pysite/views/main/jams/team_view.py47
-rw-r--r--pysite/views/main/jams/teams_list.py2
2 files changed, 48 insertions, 1 deletions
diff --git a/pysite/views/main/jams/team_view.py b/pysite/views/main/jams/team_view.py
new file mode 100644
index 00000000..ebb1a5ce
--- /dev/null
+++ b/pysite/views/main/jams/team_view.py
@@ -0,0 +1,47 @@
+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 JamsTeamsListView(RouteView, DBMixin, OAuthMixin):
+ path = "/jams/team/<string:team_id>"
+ name = "jams.team_view"
+
+ table_name = "code_jam_teams"
+
+ def get(self, team_id: str):
+ try:
+ query = self.db.query(self.table_name).get(team_id).merge(
+ lambda team: {
+ "members":
+ self.db.query("users")
+ .filter(lambda user: team["members"].contains(user["user_id"]))
+ .merge(
+ lambda user: {
+ "gitlab_username": self.db.query("code_jam_participants").filter(
+ {"id": user["user_id"]}
+ ).coerce_to("array")[0]["gitlab_username"]
+ }
+ ).coerce_to("array"),
+ "jam":
+ self.db.query("code_jams").filter(
+ lambda jam: jam["teams"].contains(team["id"])
+ ).coerce_to("array")[0]
+ }
+ )
+
+ team = self.db.run(query)
+ except ReqlNonExistenceError:
+ log.exception("Failed RethinkDB query")
+ raise NotFound()
+
+ return self.render(
+ "main/jams/team_view.html",
+ team=team
+ )
diff --git a/pysite/views/main/jams/teams_list.py b/pysite/views/main/jams/teams_list.py
index ed4f0748..46ac081d 100644
--- a/pysite/views/main/jams/teams_list.py
+++ b/pysite/views/main/jams/teams_list.py
@@ -4,7 +4,7 @@ from pysite.base_route import RouteView
from pysite.mixins import DBMixin, OAuthMixin
-class JamsTeamView(RouteView, DBMixin, OAuthMixin):
+class JamsTeamsListView(RouteView, DBMixin, OAuthMixin):
path = "/jams/teams"
name = "jams.teams_list"