From c7f13a187300dc9eb936aaa00843ce9ed7a547f5 Mon Sep 17 00:00:00 2001 From: momothereal Date: Tue, 19 Jun 2018 23:30:28 -0400 Subject: Cleanup team list querying, add tooltip to Gitlab user button --- pysite/views/main/jams/team.py | 46 ------------------------------------ pysite/views/main/jams/teams_list.py | 39 ++++++++++++++++++++++++++++++ templates/main/jams/teams_list.html | 12 ++++++---- 3 files changed, 46 insertions(+), 51 deletions(-) delete mode 100644 pysite/views/main/jams/team.py create mode 100644 pysite/views/main/jams/teams_list.py diff --git a/pysite/views/main/jams/team.py b/pysite/views/main/jams/team.py deleted file mode 100644 index f266536d..00000000 --- a/pysite/views/main/jams/team.py +++ /dev/null @@ -1,46 +0,0 @@ -from pysite.base_route import RouteView -from pysite.mixins import DBMixin, OAuthMixin - - -class JamsTeamView(RouteView, DBMixin, OAuthMixin): - path = "/jams/teams" - name = "jams.teams_list" - - def get(self): - # list teams a user is (or was) a part of - if not self.user_data: - return self.redirect_login() - - query = self.db.query("code_jam_teams").filter( - lambda team: team["members"].contains(self.user_data["user_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") - } - ) - teams = self.db.run(query) - - entries = [] - - for team in teams: - # find the jam for this team - query = self.db.query("code_jams").filter( - lambda jam: jam["teams"].contains(team["id"]) - ) - jam = next(self.db.run(query)) - entries.append({ - "team": team, - "jam": jam - }) - - return self.render( - "main/jams/teams_list.html", - entries=entries - ) diff --git a/pysite/views/main/jams/teams_list.py b/pysite/views/main/jams/teams_list.py new file mode 100644 index 00000000..ed4f0748 --- /dev/null +++ b/pysite/views/main/jams/teams_list.py @@ -0,0 +1,39 @@ +import rethinkdb + +from pysite.base_route import RouteView +from pysite.mixins import DBMixin, OAuthMixin + + +class JamsTeamView(RouteView, DBMixin, OAuthMixin): + path = "/jams/teams" + name = "jams.teams_list" + + def get(self): + # list teams a user is (or was) a part of + if not self.user_data: + return self.redirect_login() + + query = self.db.query("code_jam_teams").filter( + lambda team: team["members"].contains(self.user_data["user_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] + } + ).order_by(rethinkdb.desc("jam.number")) + teams = self.db.run(query) + + return self.render( + "main/jams/teams_list.html", + teams=teams + ) diff --git a/templates/main/jams/teams_list.html b/templates/main/jams/teams_list.html index 1fc5bf87..fa4e1c8e 100644 --- a/templates/main/jams/teams_list.html +++ b/templates/main/jams/teams_list.html @@ -10,16 +10,18 @@
- {% if entries %} - {% for entry in entries %} + {% if teams %} + {% for team in teams %}
-

Code Jam #{{ entry.jam.number }}: Team {{ entry.team.name }}

+

Code Jam #{{ team.jam.number }}: Team {{ team.name }}

Team Members