Files
mandelstudio/mandelstudio/urls.py

104 lines
3.2 KiB
Python

from django.conf.urls.i18n import i18n_patterns
from django.urls import include, 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 ocyan.plugin.wordspinner.views.bulk import BulkAIOperationsView
from ocyan.plugin.wordspinner.views.bulk import ProcessNextBulkAIJobView
from ocyan.plugin.wordspinner.views.results import GeneratedResultsListView
from ocyan.plugin.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",
),
]
wordspinner_urlpatterns = [
path(
"wordspinner/",
include(("ocyan.plugin.wordspinner.urls", "wordspinner"), namespace="wordspinner"),
),
]
# 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",
),
]
wordspinner_i18n_aliases = [
path(
"<str:lang_code>/wordspinner/ai/bulk/",
BulkAIOperationsView.as_view(),
name="wordspinner_bulk_ai_operations_i18n",
),
path(
"<str:lang_code>/wordspinner/ai/bulk/process-next/",
ProcessNextBulkAIJobView.as_view(),
name="wordspinner_bulk_ai_process_next_i18n",
),
path(
"<str:lang_code>/wordspinner/results/",
GeneratedResultsListView.as_view(),
name="wordspinner_generated_results_i18n",
),
]
if config.i18n_enabled:
urlpatterns += i18n_patterns(
*wordspinner_urlpatterns,
*contact_form_urlpatterns,
*ai_search_urlpatterns,
*wordspinner_i18n_aliases,
prefix_default_language=False,
)
else:
urlpatterns += (
wordspinner_urlpatterns
+ contact_form_urlpatterns
+ ai_search_urlpatterns
+ wordspinner_i18n_aliases
)
urlpatterns += ocyan_urlpatterns