80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
import logging
|
|
from django.views.generic import TemplateView
|
|
from django.views import View
|
|
from django.http import JsonResponse
|
|
from django.core.mail import send_mail
|
|
from django.conf import settings
|
|
from .forms import ContactForm
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class HomeView(TemplateView):
|
|
template_name = 'core/home.html'
|
|
|
|
|
|
class ContactAjaxView(View):
|
|
"""Reçoit le formulaire en AJAX, répond en JSON — pas de rechargement."""
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
form = ContactForm(request.POST)
|
|
if form.is_valid():
|
|
contact = form.save()
|
|
subject = f"Nouvelle demande de contact — {contact.first_name} {contact.last_name}"
|
|
body = (
|
|
f"Nom : {contact.last_name}\n"
|
|
f"Prénom : {contact.first_name}\n"
|
|
f"Email : {contact.email}\n"
|
|
f"Téléphone : {contact.phone or '—'}\n\n"
|
|
f"Demande :\n{contact.message}"
|
|
)
|
|
try:
|
|
send_mail(
|
|
subject,
|
|
body,
|
|
settings.DEFAULT_FROM_EMAIL,
|
|
[settings.CONTACT_NOTIFY_EMAIL],
|
|
fail_silently=False,
|
|
)
|
|
logger.info("Mail contact #%s envoyé → %s", contact.pk, settings.CONTACT_NOTIFY_EMAIL)
|
|
except Exception as e:
|
|
logger.error("Échec mail contact #%s : %s — %s", contact.pk, type(e).__name__, e)
|
|
return JsonResponse({'ok': True})
|
|
else:
|
|
errors = {f: e.get_json_data() for f, e in form.errors.items()}
|
|
return JsonResponse({'ok': False, 'errors': errors}, status=400)
|
|
|
|
|
|
class AboutView(TemplateView):
|
|
template_name = 'core/about.html'
|
|
|
|
|
|
class KiriqView(TemplateView):
|
|
template_name = 'core/products/kiriq.html'
|
|
|
|
|
|
class MonitorView(TemplateView):
|
|
template_name = 'core/products/monitor.html'
|
|
|
|
|
|
class JoolidView(TemplateView):
|
|
template_name = 'core/products/joolid.html'
|
|
|
|
|
|
class MonAgroView(TemplateView):
|
|
template_name = 'core/products/monagro.html'
|
|
|
|
|
|
class PrivacyView(TemplateView):
|
|
template_name = 'core/privacy.html'
|
|
|
|
|
|
class RobotsTxtView(TemplateView):
|
|
template_name = 'robots.txt'
|
|
content_type = 'text/plain'
|
|
|
|
|
|
class SitemapXmlView(TemplateView):
|
|
template_name = 'sitemap.xml'
|
|
content_type = 'application/xml'
|