dnscms: better organizer chooser, fixes slugs for organizers, better slugs

This commit is contained in:
2026-05-26 02:24:42 +02:00
parent ec94d82863
commit 7b84b2d480
8 changed files with 121 additions and 3 deletions
+8
View File
@@ -0,0 +1,8 @@
from django.apps import AppConfig
class DnsCmsConfig(AppConfig):
name = "dnscms"
def ready(self):
from dnscms import signals # noqa: F401
+1 -1
View File
@@ -173,7 +173,7 @@ MEDIA_URL = "/media/"
# Wagtail settings
WAGTAIL_SITE_NAME = "dnscms"
WAGTAIL_ALLOW_UNICODE_SLUGS = False
WAGTAIL_ALLOW_UNICODE_SLUGS = True
# Headless: the Next.js frontend uses trailing-slash-free URLs, so strip
# trailing slashes from links generated by Wagtail (e.g. the GraphQL `url` field).
WAGTAIL_APPEND_SLASH = False
+15
View File
@@ -0,0 +1,15 @@
from django.db.models.signals import pre_save
from django.dispatch import receiver
from wagtail.models import Page
from dnscms.utils import slugify
SLUGGED_SNIPPETS = {"events.EventOrganizer", "events.EventCategory"}
@receiver(pre_save)
def normalize_slug(sender, instance, **kwargs):
label = f"{sender._meta.app_label}.{sender.__name__}"
if isinstance(instance, Page) or label in SLUGGED_SNIPPETS:
if getattr(instance, "slug", None):
instance.slug = slugify(instance.slug)
+7
View File
@@ -0,0 +1,7 @@
from django.utils.text import slugify as django_slugify
NORWEGIAN_TRANSLITERATIONS = str.maketrans({"æ": "ae", "ø": "o", "å": "a"})
def slugify(value: str) -> str:
return django_slugify(value.lower().translate(NORWEGIAN_TRANSLITERATIONS))