1
0
mirror of https://gitlab.com/animath/si/plateforme-corres2math.git synced 2025-07-09 05:30:19 +02:00

Add leave team button

This commit is contained in:
Yohann D'ANELLO
2020-10-20 16:08:42 +02:00
parent b80f98ef43
commit d73a92c7f7
5 changed files with 145 additions and 77 deletions

View File

@ -2,6 +2,9 @@ from io import BytesIO
import os
from zipfile import ZipFile
from django.shortcuts import redirect
from django.views.generic.base import View, TemplateView
from corres2math.lists import get_sympa_client
from corres2math.views import AdminMixin
from django.contrib.auth.mixins import LoginRequiredMixin
@ -236,6 +239,29 @@ class TeamAuthorizationsView(LoginRequiredMixin, DetailView):
return response
class TeamLeaveView(LoginRequiredMixin, TemplateView):
template_name = "participation/team_leave.html"
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return self.handle_no_permission()
if not request.user.registration.team:
raise PermissionDenied(_("You are not in a team."))
if request.user.registration.team.participation.valid is not None:
raise PermissionDenied(_("The team is already validated or the validation is pending."))
return super().dispatch(request, *args, **kwargs)
@transaction.atomic()
def post(self, request, *args, **kwargs):
team = request.user.registration.team
request.user.registration.team = None
request.user.registration.save()
get_sympa_client().unsubscribe(request.user.email, f"equipe-{team.trigram.lower()}", False)
if team.students.count() + team.coachs.count() == 0:
team.delete()
return redirect(reverse_lazy("index"))
class MyParticipationDetailView(LoginRequiredMixin, RedirectView):
def get_redirect_url(self, *args, **kwargs):
user = self.request.user