From e50249355d45e4a6f014065b0a5523b874d0e0a9 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Fri, 19 May 2023 20:15:50 +0200 Subject: [PATCH] feat(kfet): Ajoute un formulaire de contact --- kfet/forms.py | 13 ++++++++++ kfet/templates/kfet/base_footer.html | 10 +++----- kfet/templates/kfet/contact.html | 36 ++++++++++++++++++++++++++++ kfet/urls.py | 1 + kfet/views.py | 24 +++++++++++++++++++ 5 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 kfet/templates/kfet/contact.html diff --git a/kfet/forms.py b/kfet/forms.py index db8404ef..ccc2ecbf 100644 --- a/kfet/forms.py +++ b/kfet/forms.py @@ -45,6 +45,19 @@ class DateTimeWidget(forms.DateTimeInput): js = ("kfet/vendor/bootstrap/bootstrap-datetimepicker.min.js",) +class ContactForm(forms.Form): + from_email = forms.EmailField( + label="Adresse mail", + help_text="Si aucune adresse mail n'est renseignée, la soumission sera anonyme.", + required=False, + ) + subject = forms.CharField(label="Objet", required=True) + message = forms.CharField(widget=forms.Textarea, required=True) + + def clean_from_email(self): + return self.cleaned_data["from_email"] or "Anonyme " + + # ----- # Account forms # ----- diff --git a/kfet/templates/kfet/base_footer.html b/kfet/templates/kfet/base_footer.html index c5333476..7a016705 100644 --- a/kfet/templates/kfet/base_footer.html +++ b/kfet/templates/kfet/base_footer.html @@ -1,17 +1,13 @@ {% load wagtailcore_tags %} -{% with "k-fet@ens.fr" as kfet_mail %} - diff --git a/kfet/templates/kfet/contact.html b/kfet/templates/kfet/contact.html new file mode 100644 index 00000000..2e0c63b6 --- /dev/null +++ b/kfet/templates/kfet/contact.html @@ -0,0 +1,36 @@ +{% extends "kfet/base_form.html" %} + +{% block extra_head %} +{{ negative_form.media }} +{% endblock %} + +{% block title %} + Contacter la K-Fêt +{% endblock %} + +{% block header-title %} + Contacter la K-Fêt +{% endblock %} + +{% block footer %} +{% include "kfet/base_footer.html" %} +{% endblock %} + +{% block main %} + +
+
+ Votre message sera envoyé aux Chef·fe·s et aux Wo·men K-Fêt. +
+
+ +
+ +
+ {% csrf_token %} + {% include 'kfet/form_snippet.html' %} + + {% include 'kfet/form_submit_snippet.html' with value="Envoyer" %} +
+ +{% endblock %} diff --git a/kfet/urls.py b/kfet/urls.py index 7a9498ed..57a68f32 100644 --- a/kfet/urls.py +++ b/kfet/urls.py @@ -9,6 +9,7 @@ register_converter(converters.TrigrammeConverter, "trigramme") urlpatterns = [ path("login/generic", views.login_generic, name="kfet.login.generic"), path("history", views.history, name="kfet.history"), + path("contact", views.ContactView.as_view(), name="kfet.contact"), # ----- # Account urls # ----- diff --git a/kfet/views.py b/kfet/views.py index 4ef2692e..0be6fcce 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -13,6 +13,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.models import Permission, User from django.contrib.messages.views import SuccessMessageMixin from django.core.exceptions import SuspiciousOperation +from django.core.mail import EmailMessage from django.db import transaction from django.db.models import ( Count, @@ -63,6 +64,7 @@ from kfet.forms import ( CheckoutStatementCreateForm, CheckoutStatementUpdateForm, CofForm, + ContactForm, FilterHistoryForm, InventoryArticleForm, KFetConfigForm, @@ -113,6 +115,28 @@ def put_cleaned_data_in_dict(dict, form): dict[field] = form.cleaned_data[field] +class ContactView(FormView): + template_name = "kfet/contact.html" + form_class = ContactForm + success_url = reverse_lazy("kfet.contact") + + def form_valid(self, form): + # Envoie un mail lorsque le formulaire est valide + EmailMessage( + form.cleaned_data["subject"], + form.cleaned_data["message"], + from_email=form.cleaned_data["from_email"], + to=("chefs-k-fet@ens.psl.eu",), + ).send() + + messages.success( + self.request, + "Votre message a bien été envoyé aux Wo·men K-Fêt.", + ) + + return super().form_valid(form) + + # ----- # Account views # -----