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 +        ) | 
