diff options
| -rw-r--r-- | pysite/views/main/jams/team.py | 42 | ||||
| -rw-r--r-- | templates/main/jams/teams_list.html | 30 | ||||
| -rw-r--r-- | templates/main/navigation.html | 6 | 
3 files changed, 78 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 +        ) diff --git a/templates/main/jams/teams_list.html b/templates/main/jams/teams_list.html new file mode 100644 index 00000000..68000baf --- /dev/null +++ b/templates/main/jams/teams_list.html @@ -0,0 +1,30 @@ +{% extends "main/base.html" %} +{% block title %}Code Jams | My Teams{% endblock %} +{% block og_title %}Code Jams | My Teams{% endblock %} + +{% block content %} +    <div class="uk-section"> +        <div class="uk-container uk-container-small"> +            <h1 class="uk-header uk-article-title uk-heading-divider"> +                Code Jams: My Teams +            </h1> +            <br> + +            {% if entries %} +                {% for entry in entries %} +                    <div> +                        <h3>Code Jam #{{ entry.jam.number }}: Team <strong>{{ entry.team.name }}</strong></h3> +                        <strong>Team Members</strong> +                        <ul> +                            {% for member in entry.team.members %} +                                <li>{{ member.username }}#{{ member.discriminator }}</li> +                            {% endfor %} +                        </ul> +                    </div> +                {% endfor %} +            {% else %} +                <p>You are not part of any team.</p> +            {% endif %} +        </div> +    </div> +{% endblock %} diff --git a/templates/main/navigation.html b/templates/main/navigation.html index cd5b967f..c60fa19d 100644 --- a/templates/main/navigation.html +++ b/templates/main/navigation.html @@ -143,6 +143,12 @@                                  <li><a href="{{ url_for('main.jams.profile') }}">My Profile</a></li>                              {% endif %} +                            {% if current_page == "main.jams.teams_list" %} +                                <li class="uk-active"><a href="{{ url_for('main.jams.teams_list') }}">My Teams</a></li> +                            {% else %} +                                <li><a href="{{ url_for('main.jams.teams_list') }}">My Teams</a></li> +                            {% endif %} +                              <li class="uk-nav-divider"></li>                              {% if current_page.startswith("main.about.privacy") %} | 
