aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar momothereal <[email protected]>2018-06-20 11:09:46 -0400
committerGravatar momothereal <[email protected]>2018-06-20 11:09:46 -0400
commitdc2a9aeb1c55fef3a7f4ab656301f36f665a1e10 (patch)
tree278291ac2cc8522ce49afed03bdfd2e3dd7f9830
parentFix 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.py47
-rw-r--r--pysite/views/main/jams/teams_list.py2
-rw-r--r--templates/main/jams/team_view.html7
-rw-r--r--templates/main/jams/teams_list.html11
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> &nbsp;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 %}