diff options
| author | 2018-06-23 19:00:07 +0000 | |
|---|---|---|
| committer | 2018-06-23 19:00:07 +0000 | |
| commit | 90b9ebfe6b59a69e9783259a70e7927d989604f8 (patch) | |
| tree | a6b796051cb7b7811ce8528b2b4501278422591e /pysite/views/main/jams/team_view.py | |
| parent | Update Font-Awesome Pro to 5.1.0 (diff) | |
| parent | Add some documentation to the team_edit_repo route (diff) | |
Merge branch 'teams-user-frontend' into 'master'
User frontend for teams
See merge request python-discord/projects/site!9
Diffstat (limited to 'pysite/views/main/jams/team_view.py')
| -rw-r--r-- | pysite/views/main/jams/team_view.py | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/pysite/views/main/jams/team_view.py b/pysite/views/main/jams/team_view.py new file mode 100644 index 00000000..2d99828c --- /dev/null +++ b/pysite/views/main/jams/team_view.py @@ -0,0 +1,51 @@ +import logging + +from rethinkdb import ReqlNonExistenceError +from werkzeug.exceptions import NotFound + +from pysite.base_route import RouteView +from pysite.mixins import DBMixin, OAuthMixin + +log = logging.getLogger(__name__) + + +class JamsTeamView(RouteView, DBMixin, OAuthMixin): +    path = "/jams/team/<string:team_id>" +    name = "jams.team_view" + +    table_name = "code_jam_teams" + +    def get(self, team_id: str): +        try: +            query = self.db.query(self.table_name).get(team_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] +                } +            ) + +            team = self.db.run(query) +        except ReqlNonExistenceError: +            log.exception("Failed RethinkDB query") +            raise NotFound() + +        # check if the current user is a member of this team +        # (this is for edition privileges) +        is_own_team = self.logged_in and self.user_data["user_id"] in [member["user_id"] for member in team["members"]] + +        return self.render( +            "main/jams/team_view.html", +            team=team, is_own_team=is_own_team +        )  |