From 56870405fd25710e21d95cdd43093bbfed778ed4 Mon Sep 17 00:00:00 2001 From: momothereal Date: Tue, 19 Jun 2018 20:47:51 -0400 Subject: Start work on team list page --- pysite/views/main/jams/team.py | 42 +++++++++++++++++++++++++++++++++++++ templates/main/jams/teams_list.html | 30 ++++++++++++++++++++++++++ templates/main/navigation.html | 6 ++++++ 3 files changed, 78 insertions(+) create mode 100644 pysite/views/main/jams/team.py create mode 100644 templates/main/jams/teams_list.html 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 %} +
+
+

+ Code Jams: My Teams +

+
+ + {% if entries %} + {% for entry in entries %} +
+

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

+ Team Members +
    + {% for member in entry.team.members %} +
  • {{ member.username }}#{{ member.discriminator }}
  • + {% endfor %} +
+
+ {% endfor %} + {% else %} +

You are not part of any team.

+ {% endif %} +
+
+{% 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 @@
  • My Profile
  • {% endif %} + {% if current_page == "main.jams.teams_list" %} +
  • My Teams
  • + {% else %} +
  • My Teams
  • + {% endif %} +
  • {% if current_page.startswith("main.about.privacy") %} -- cgit v1.2.3