diff --git a/symposion/teams/urls.py b/symposion/teams/urls.py index ff0b5143015f9592274d18947c5932341986a71b..01145f41c8b1536087ed3199ae45aad6b3dccfeb 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 d731436cd8739919a06c61ae7608036afadc0db9..6c578bd6602d0cf7cc8cc384655fbf2c3e37eeab 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 8b989e6a359c0d77a5f0c87ea072d3c169c9435d..c54e01fc7dbb23ac576cb6aaf329e73071aa484c 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 %}