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)