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