From dc2a9aeb1c55fef3a7f4ab656301f36f665a1e10 Mon Sep 17 00:00:00 2001 From: momothereal Date: Wed, 20 Jun 2018 11:09:46 -0400 Subject: Start work on individual team view --- pysite/views/main/jams/team_view.py | 47 ++++++++++++++++++++++++++++++++++++ pysite/views/main/jams/teams_list.py | 2 +- templates/main/jams/team_view.html | 7 ++++++ templates/main/jams/teams_list.html | 11 +++++++-- 4 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 pysite/views/main/jams/team_view.py create mode 100644 templates/main/jams/team_view.html diff --git a/pysite/views/main/jams/team_view.py b/pysite/views/main/jams/team_view.py new file mode 100644 index 00000000..ebb1a5ce --- /dev/null +++ b/pysite/views/main/jams/team_view.py @@ -0,0 +1,47 @@ +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 JamsTeamsListView(RouteView, DBMixin, OAuthMixin): + path = "/jams/team/" + 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() + + return self.render( + "main/jams/team_view.html", + team=team + ) diff --git a/pysite/views/main/jams/teams_list.py b/pysite/views/main/jams/teams_list.py index ed4f0748..46ac081d 100644 --- a/pysite/views/main/jams/teams_list.py +++ b/pysite/views/main/jams/teams_list.py @@ -4,7 +4,7 @@ from pysite.base_route import RouteView from pysite.mixins import DBMixin, OAuthMixin -class JamsTeamView(RouteView, DBMixin, OAuthMixin): +class JamsTeamsListView(RouteView, DBMixin, OAuthMixin): path = "/jams/teams" name = "jams.teams_list" diff --git a/templates/main/jams/team_view.html b/templates/main/jams/team_view.html new file mode 100644 index 00000000..b7387a6a --- /dev/null +++ b/templates/main/jams/team_view.html @@ -0,0 +1,7 @@ +{% extends "main/base.html" %} +{% block title %}Team {{ team.name }}{% endblock %} +{% block og_title %}Team {{ team.name }}{% endblock %} + +{% block content %} + +{% endblock %} \ No newline at end of file diff --git a/templates/main/jams/teams_list.html b/templates/main/jams/teams_list.html index fa4e1c8e..3f499feb 100644 --- a/templates/main/jams/teams_list.html +++ b/templates/main/jams/teams_list.html @@ -8,12 +8,19 @@

Code Jams: My Teams

-
- {% if teams %} {% for team in teams %} +

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

+

+ +  View + + + + +

Team Members
    {% for member in team.members %} -- cgit v1.2.3