Use project contact form handler and superuser-only snippet access

This commit is contained in:
2026-05-10 11:00:18 +02:00
parent c6965c422b
commit 2e81970427
8 changed files with 112 additions and 127 deletions

View File

@@ -4,4 +4,3 @@ Ocyan loads contact form handlers via module labels like `contact_form.views`.
By shipping this package in the project repository we can extend behavior
without forking the upstream plugin.
"""

View File

@@ -12,9 +12,10 @@ from django.utils.translation import gettext as _
from django.views.decorators.http import require_http_methods
from django.views.generic import TemplateView
from oscar.core.utils import redirect_to_referrer
from wagtail.models import Locale, Site
from oscar.core.utils import redirect_to_referrer
from ocyan.core.fender import config
from ocyan.plugin.contact_form.forms import ContactForm
from ocyan.plugin.contact_form.utils import get_from_email, get_to_email
@@ -30,6 +31,7 @@ def _client_ip(request) -> str | None:
return forwarded_for.split(",")[0].strip() or None
return request.META.get("REMOTE_ADDR")
def _active_locale(request) -> Locale:
language_code = (getattr(request, "LANGUAGE_CODE", "") or "").split("-")[0]
if language_code:
@@ -51,7 +53,11 @@ def post_contact_form(request):
message_obj = ContactMessage.objects.create(
site=site,
locale=locale,
user=request.user if getattr(request.user, "is_authenticated", False) else None,
user=(
request.user
if getattr(request.user, "is_authenticated", False)
else None
),
ip_address=_client_ip(request),
path=request.path or "",
name=str(cleaned.get("name", "")),
@@ -59,7 +65,11 @@ def post_contact_form(request):
phone_number=str(cleaned.get("phonenumber") or ""),
message=str(cleaned.get("message", "")),
)
logger.info("Saved ContactMessage id=%s email=%s", message_obj.id, message_obj.email)
logger.info(
"Saved ContactMessage id=%s email=%s",
message_obj.id,
message_obj.email,
)
context = {
"website_url": request.build_absolute_uri(),