diff --git a/symposion/teams/urls.py b/symposion/teams/urls.py index ff0b5143..01145f41 100644 --- a/symposion/teams/urls.py +++ b/symposion/teams/urls.py @@ -2,11 +2,15 @@ from django.conf.urls.defaults import * urlpatterns = patterns("symposion.teams.views", + # team specific 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"), + # membership specific url(r"^promote/(?P\d+)/$", "team_promote", name="team_promote"), url(r"^demote/(?P\d+)/$", "team_demote", name="team_demote"), + url(r"^accept/(?P\d+)/$", "team_accept", name="team_accept"), + url(r"^reject/(?P\d+)/$", "team_reject", name="team_reject"), ) diff --git a/symposion/teams/views.py b/symposion/teams/views.py index d731436c..6c578bd6 100644 --- a/symposion/teams/views.py +++ b/symposion/teams/views.py @@ -134,3 +134,29 @@ def team_demote(request, pk): membership.save() # contrib.message return redirect("team_detail", slug=membership.team.slug) + + +@login_required +def team_accept(request, pk): + if request.method == "POST": + membership = get_object_or_404(Membership, pk=pk) + state = membership.team.get_state_for_user(request.user) + if request.user.is_staff or state == "manager": + if membership.state == "applied": + membership.state = "member" + membership.save() + # contrib.message + return redirect("team_detail", slug=membership.team.slug) + + +@login_required +def team_reject(request, pk): + if request.method == "POST": + membership = get_object_or_404(Membership, pk=pk) + state = membership.team.get_state_for_user(request.user) + if request.user.is_staff or state == "manager": + if membership.state == "applied": + membership.state = "rejected" + membership.save() + # contrib.message + return redirect("team_detail", slug=membership.team.slug) diff --git a/symposion_project/templates/teams/team_detail.html b/symposion_project/templates/teams/team_detail.html index 8b989e6a..c54e01fc 100644 --- a/symposion_project/templates/teams/team_detail.html +++ b/symposion_project/templates/teams/team_detail.html @@ -61,6 +61,10 @@ {% for membership in team.applicants %} {{ membership.user.email }} + +
{% csrf_token %}
+
{% csrf_token %}
+ {% endfor %}