From 6e67b505013b4ca0e007b0d8d8783beb90d1f618 2012-08-02 01:39:00 From: James Tauber Date: 2012-08-02 01:39:00 Subject: [PATCH] added available teams template tag --- diff --git a/symposion/teams/templatetags/__init__.py b/symposion/teams/templatetags/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/symposion/teams/templatetags/teams_tags.py b/symposion/teams/templatetags/teams_tags.py new file mode 100644 index 0000000000000000000000000000000000000000..253da49abef5170b0abbad6bec1d45483c3a38ef --- /dev/null +++ b/symposion/teams/templatetags/teams_tags.py @@ -0,0 +1,45 @@ +from django import template + +from symposion.teams.models import Team + +register = template.Library() + + +class AvailableTeamsNode(template.Node): + + @classmethod + def handle_token(cls, parser, token): + bits = token.split_contents() + if len(bits) == 3 and bits[1] == "as": + return cls(bits[2]) + else: + raise template.TemplateSyntaxError("%r takes 'as var'" % bits[0]) + + def __init__(self, context_var): + self.context_var = context_var + + def render(self, context): + request = context["request"] + teams = [] + for team in Team.objects.all(): + print team + state = team.get_state_for_user(request.user) + if team.access == "open": + if state in [None, "invited"]: + teams.append(team) + elif team.access == "application": + if state in [None, "invited", "applied"]: + teams.append(team) + elif team.access == "invitation": + if state == "invited": + teams.append(team) + context[self.context_var] = teams + return u"" + + +@register.tag +def available_teams(parser, token): + """ + {% available_teams as available_teams %} + """ + return AvailableTeamsNode.handle_token(parser, token) diff --git a/symposion/teams/views.py b/symposion/teams/views.py index 5b2622e794c0ba014a35c2b3bb84592703486de5..de657b317a675f72dca0971349a4d9b68f79529c 100644 --- a/symposion/teams/views.py +++ b/symposion/teams/views.py @@ -11,6 +11,7 @@ def team_detail(request, slug): team = get_object_or_404(Team, slug=slug) if team.get_state_for_user(request.user) != "manager": raise Http404() - + return render(request, "teams/team_detail.html", { + "team": team, }) diff --git a/symposion_project/templates/dashboard.html b/symposion_project/templates/dashboard.html index 15624294451763de5fbab7e13f60b461bef7bc95..5d8ba586928927d96558651cc70d0a8a23c6fc6e 100644 --- a/symposion_project/templates/dashboard.html +++ b/symposion_project/templates/dashboard.html @@ -2,6 +2,7 @@ {% load i18n %} {% load proposal_tags %} +{% load teams_tags %} {% block head_title %}Dashboard{% endblock %} @@ -144,6 +145,10 @@ {% endfor %} {% endif %} + {% available_teams as available_teams %} + {% for team in available_team %} + {{ team }} + {% endfor %} {% endblock %} diff --git a/symposion_project/templates/teams/team_detail.html b/symposion_project/templates/teams/team_detail.html new file mode 100644 index 0000000000000000000000000000000000000000..c0723be67014db40fcbb62c97acdba2b128987b4 --- /dev/null +++ b/symposion_project/templates/teams/team_detail.html @@ -0,0 +1,8 @@ +{% extends "site_base.html" %} + +{% block head_title %}{{ team.name }}{% endblock %} + +{% block body %} +

{{ team.name }}

+ +{% endblock %}