diff options
author | 2018-06-23 18:43:13 -0400 | |
---|---|---|
committer | 2018-06-23 18:43:13 -0400 | |
commit | 198111e295d4682d7263b1a59e89e24a1675355a (patch) | |
tree | ba9172b2b0a6d3fdbab69d19dc1fa93053c04a93 /pysite | |
parent | [Jams/Teams] De-associate delete teams from jams (diff) |
[Jams/Teams] Hopefully optimize jam team list
Diffstat (limited to 'pysite')
-rw-r--r-- | pysite/views/main/jams/jam_team_list.py | 38 | ||||
-rw-r--r-- | pysite/views/main/jams/team_view.py | 2 |
2 files changed, 16 insertions, 24 deletions
diff --git a/pysite/views/main/jams/jam_team_list.py b/pysite/views/main/jams/jam_team_list.py index 0eb43a5a..49587e36 100644 --- a/pysite/views/main/jams/jam_team_list.py +++ b/pysite/views/main/jams/jam_team_list.py @@ -1,6 +1,5 @@ import logging -from rethinkdb import ReqlNonExistenceError from werkzeug.exceptions import NotFound from pysite.base_route import RouteView @@ -17,32 +16,25 @@ class JamsTeamListView(RouteView, DBMixin, OAuthMixin): 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", "repo"]) - .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") + jam_obj = self.db.get(self.jams_table, jam_id) + if not jam_obj: raise NotFound() + query = self.db.query(self.table_name).get_all(self.table_name, *jam_obj["teams"]).pluck( + ["id", "name", "members", "repo"]).merge( + lambda team: { + "members": + self.db.query("users") + .filter(lambda user: team["members"].contains(user["user_id"])) + .coerce_to("array") + }).coerce_to("array") + + jam_obj["teams"] = self.db.run(query) + return self.render( "main/jams/team_list.html", - jam=jam_data, - teams=jam_data["teams"], + jam=jam_obj, + teams=jam_obj["teams"], member_ids=self.member_ids ) diff --git a/pysite/views/main/jams/team_view.py b/pysite/views/main/jams/team_view.py index 68308934..8be8bc0f 100644 --- a/pysite/views/main/jams/team_view.py +++ b/pysite/views/main/jams/team_view.py @@ -29,7 +29,7 @@ class JamsTeamView(RouteView, DBMixin, OAuthMixin): ).coerce_to("array")[0]["gitlab_username"] } ).coerce_to("array"), - "jam": self.db.query("code_jams").get(team["jam"]) + "jam": self.db.query("code_jams").get(team["jam"]) } ) |