Files
mandelstudio/mandelstudio/urls.py

69 lines
2.1 KiB
Python

from django.conf.urls.i18n import i18n_patterns
from django.urls import path
from django.views.decorators.cache import cache_page
from ocyan.core.fender import config
from ocyan.main.urls import urlpatterns as ocyan_urlpatterns
from ocyan.plugin.contact_form.entrypoint import SHOP_BASE_URL
from ocyan.plugin.wagtail_oscar_integration.constants import CACHE_DURATION
from ocyan.plugin.wordspinner.views.ai_search import ai_search_view
from contact_form.views import post_contact_form
from .i18n_views import set_language_normalized
from .sitemaps import robots_txt, sitemap_index, sitemap_section
urlpatterns = [
path("i18n/setlang/", set_language_normalized, name="set_language"),
path("robots.txt", robots_txt, name="robots-txt"),
path(
"sitemap.xml",
cache_page(CACHE_DURATION)(sitemap_index),
name="sitemap-index",
),
path(
"sitemap-<section>.xml",
cache_page(CACHE_DURATION)(sitemap_section),
name="sitemaps",
),
]
contact_form_urlpatterns = [
path(
f"{SHOP_BASE_URL}/contact-form/",
post_contact_form,
name="project-contact-form-handler",
),
]
# Ensure public AI search routes are resolved before Wagtail catch-all URLs.
ai_search_urlpatterns = [
path("ai-search/", ai_search_view, name="wordspinner_ai_search_public"),
path("smart-search/", ai_search_view, name="wordspinner_smart_search_public"),
path("wordspinner/ai-search/", ai_search_view, name="wordspinner_ai_search"),
path(
"<str:lang_code>/ai-search/", ai_search_view, name="wordspinner_ai_search_i18n"
),
path(
"<str:lang_code>/smart-search/",
ai_search_view,
name="wordspinner_smart_search_i18n",
),
path(
"<str:lang_code>/wordspinner/ai-search/",
ai_search_view,
name="wordspinner_ai_search_nested_i18n",
),
]
if config.i18n_enabled:
urlpatterns += i18n_patterns(
*contact_form_urlpatterns,
*ai_search_urlpatterns,
prefix_default_language=False,
)
else:
urlpatterns += contact_form_urlpatterns + ai_search_urlpatterns
urlpatterns += ocyan_urlpatterns