aboutsummaryrefslogtreecommitdiffstats
path: root/pysite
diff options
context:
space:
mode:
authorGravatar momothereal <[email protected]>2018-06-23 18:43:13 -0400
committerGravatar momothereal <[email protected]>2018-06-23 18:43:13 -0400
commit198111e295d4682d7263b1a59e89e24a1675355a (patch)
treeba9172b2b0a6d3fdbab69d19dc1fa93053c04a93 /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.py38
-rw-r--r--pysite/views/main/jams/team_view.py2
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"])
}
)