Files @ 1bfd0cc2f048
Branch filter:

Location: symposion_app/symposion/teams/templatetags/teams_tags.py

James Tauber
implemented team apply
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():
            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)