plateforme-corres2math/apps/participation/views.py

61 lines
2.0 KiB
Python
Raw Normal View History

2020-09-22 18:41:42 +00:00
from django.contrib.auth.mixins import LoginRequiredMixin
2020-09-23 21:20:44 +00:00
from django.db import transaction
from django.urls import reverse_lazy
2020-09-22 18:41:42 +00:00
from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, FormView
2020-09-21 13:41:55 +00:00
2020-09-22 18:41:42 +00:00
from participation.forms import TeamForm, JoinTeamForm
from participation.models import Team
class CreateTeamView(LoginRequiredMixin, CreateView):
model = Team
form_class = TeamForm
extra_context = dict(title=_("Create team"))
template_name = "participation/create_team.html"
2020-09-23 21:20:44 +00:00
@transaction.atomic
def form_valid(self, form):
user = self.request.user
registration = user.registration
if not registration.participates:
form.add_error(None, _("You don't participate, so you can't create a team."))
return self.form_invalid(form)
elif registration.team:
form.add_error(None, _("You are already in a team."))
return self.form_invalid(form)
ret = super().form_valid(form)
registration.team = form.instance
registration.save()
return ret
def get_success_url(self):
return reverse_lazy("index")
2020-09-22 18:41:42 +00:00
class JoinTeamView(LoginRequiredMixin, FormView):
model = Team
form_class = JoinTeamForm
extra_context = dict(title=_("Join team"))
template_name = "participation/create_team.html"
2020-09-23 21:20:44 +00:00
@transaction.atomic
def form_valid(self, form):
user = self.request.user
registration = user.registration
if not registration.participates:
form.add_error(None, _("You don't participate, so you can't create a team."))
return self.form_invalid(form)
elif registration.team:
form.add_error(None, _("You are already in a team."))
return self.form_invalid(form)
ret = super().form_valid(form)
registration.team = form.instance
registration.save()
return ret
def get_success_url(self):
return reverse_lazy("index")