diff options
| author | 2018-06-20 11:09:46 -0400 | |
|---|---|---|
| committer | 2018-06-20 11:09:46 -0400 | |
| commit | dc2a9aeb1c55fef3a7f4ab656301f36f665a1e10 (patch) | |
| tree | 278291ac2cc8522ce49afed03bdfd2e3dd7f9830 | |
| parent | Fix teams not being restricted to their jam, and allow users to be in two tea... (diff) | |
Start work on individual team view
Diffstat (limited to '')
| -rw-r--r-- | pysite/views/main/jams/team_view.py | 47 | ||||
| -rw-r--r-- | pysite/views/main/jams/teams_list.py | 2 | ||||
| -rw-r--r-- | templates/main/jams/team_view.html | 7 | ||||
| -rw-r--r-- | templates/main/jams/teams_list.html | 11 | 
4 files changed, 64 insertions, 3 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..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/<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() + +        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 @@              <h1 class="uk-header uk-article-title uk-heading-divider">                  Code Jams: My Teams              </h1> -            <br> -              {% if teams %}                  {% for team in teams %} +                    <p></p>                      <div>                          <h3>Code Jam #{{ team.jam.number }}: Team <strong>{{ team.name }}</strong></h3> +                        <p> +                            <a href="{{ url_for('main.jams.team_view', team_id=team.id) }}" class="uk-button uk-button-primary"> +                                <i class="uk-icon fa-fw far fa-eye"></i>  View +                            </a> +                            <a href="#" target="_blank" class="uk-button uk-button-default"> +                                <i class="uk-icon fa-fw fab fa-gitlab"></i> +                            </a> +                        </p>                          <strong>Team Members</strong>                          <ul>                              {% for member in team.members %} | 
