From 1bfd0cc2f048f668d8d5ac9b81878ad0b8909da1 Mon Sep 17 00:00:00 2001 From: James Tauber Date: Wed, 1 Aug 2012 22:59:41 -0400 Subject: [PATCH] implemented team apply --- symposion/teams/urls.py | 1 + symposion/teams/views.py | 26 +++++++++++++++++++ .../templates/teams/team_detail.html | 7 +++++ 3 files changed, 34 insertions(+) diff --git a/symposion/teams/urls.py b/symposion/teams/urls.py index c96ca0d8..691e458b 100644 --- a/symposion/teams/urls.py +++ b/symposion/teams/urls.py @@ -5,5 +5,6 @@ urlpatterns = patterns("symposion.teams.views", url(r"^(?P[\w\-]+)/$", "team_detail", name="team_detail"), url(r"^(?P[\w\-]+)/join/$", "team_join", name="team_join"), url(r"^(?P[\w\-]+)/leave/$", "team_leave", name="team_leave"), + url(r"^(?P[\w\-]+)/apply/$", "team_apply", name="team_apply"), ) diff --git a/symposion/teams/views.py b/symposion/teams/views.py index a2d719d0..0227d8d5 100644 --- a/symposion/teams/views.py +++ b/symposion/teams/views.py @@ -29,6 +29,14 @@ def can_leave(team, user): return False +def can_apply(team, user): + state = team.get_state_for_user(user) + if team.access == "application" and state is None: + return True + else: + return False + + ## views @@ -44,6 +52,7 @@ def team_detail(request, slug): "state": state, "can_join": can_join(team, request.user), "can_leave": can_leave(team, request.user), + "can_apply": can_apply(team, request.user), }) @@ -78,3 +87,20 @@ def team_leave(request, slug): return redirect("dashboard") else: return redirect("team_detail", slug=slug) + + +@login_required +def team_apply(request, slug): + team = get_object_or_404(Team, slug=slug) + state = team.get_state_for_user(request.user) + if team.access == "invitation" and state is None: + raise Http404() + + if can_apply(team, request.user) and request.method == "POST": + membership, created = Membership.objects.get_or_create(team=team, user=request.user) + membership.state = "applied" + membership.save() + # contrib.message + return redirect("team_detail", slug=slug) + else: + return redirect("team_detail", slug=slug) diff --git a/symposion_project/templates/teams/team_detail.html b/symposion_project/templates/teams/team_detail.html index b423b6d5..1469ea95 100644 --- a/symposion_project/templates/teams/team_detail.html +++ b/symposion_project/templates/teams/team_detail.html @@ -19,4 +19,11 @@ {% endif %} + {% if can_apply %} +
+ {% csrf_token %} + +
+ {% endif %} + {% endblock %}