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") %} |