Skip to content

Instantly share code, notes, and snippets.

@Tobi-De
Created September 15, 2020 07:27
Show Gist options
  • Save Tobi-De/e8b2be716ece3f27e9578054f3bf194f to your computer and use it in GitHub Desktop.
Save Tobi-De/e8b2be716ece3f27e9578054f3bf194f to your computer and use it in GitHub Desktop.
Override dispatch
class StudentRequiredMixin:
def dispatch(self, request, *args, **kwargs):
response = super().dispatch(request, *args, **kwargs) # noqa
if request.user.status != "étudiant":
messages.info(
request=request,
message="Seuls les étudiants peuvent se pré-inscrire",
)
return redirect("university:detail", slug=self.kwargs.get("slug")) # noqa
return response
class HasAlreadyRegisterMixin:
def dispatch(self, request, *args, **kwargs):
response = super().dispatch(request, *args, **kwargs) # noqa
university = get_object_or_404(University, slug=self.kwargs.get("slug")) # noqa
registration = Registration.objects.filter(
user=request.user, university=university
).first()
if not registration:
return response
if registration.paid:
messages.info(
request=request,
message="Vous etes deja inscrit a cette universite",
)
return redirect("university:detail", slug=university.slug)
messages.info(
request=request,
message="Vous etes inscrit a cette universite, a present Il vous suffit "
"de payer pour valider votre preinscription a cette universite",
)
return redirect(
"university:pre_registration_payment", slug=registration.slug
) # noqa
class RegisterView(
LoginRequiredMixin, StudentRequiredMixin, HasAlreadyRegisterMixin, View
):
template_name = "universities/register.html"
def get_university(self):
return get_object_or_404(University, slug=self.kwargs.get("slug"))
def get_context_data(self, **kwargs): # noqa
return {
"register_form": RegisterForm(prefix="register"),
"tutor_m_form": TutorForm(prefix="tutor_m"),
"tutor_f_form": TutorForm(prefix="tutor_f"),
}
def get(self, request, *args, **kwargs):
registration = Registration.automatic_registration(
user=request.user, university=self.get_university()
)
if registration:
messages.success(
request,
"Vous etes a present inscrit, il vous suffit de payer pour valider votre preinscription"
" a cette universite",
)
return redirect(
"university:pre_registration_payment", slug=registration.slug
)
return render(request, self.template_name, self.get_context_data())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment