diff options
Diffstat (limited to 'pysite')
-rw-r--r-- | pysite/views/main/jams/team.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/pysite/views/main/jams/team.py b/pysite/views/main/jams/team.py new file mode 100644 index 00000000..8cc2a8c2 --- /dev/null +++ b/pysite/views/main/jams/team.py @@ -0,0 +1,42 @@ +from pysite.base_route import RouteView +from pysite.mixins import OAuthMixin, DBMixin + + +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"])) + .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 = self.db.run(query).next() + entries.append({ + "team": team, + "jam": jam + }) + + return self.render( + "main/jams/teams_list.html", + entries=entries + ) |