# illustrations/urls.py from django.contrib import admin from django.urls import path, re_path, include from django.contrib.auth import views as auth_views from django.views.generic import TemplateView # NEW: for manifest / service worker / offline from core import views as core_views from core import views_user_features as feat_views # NEW from core import views_tts from illustrations.web.views import api_update_pub_codes urlpatterns = [ # Core app path("", core_views.search_page, name="search"), path("search/", core_views.search_page, name="search"), path("entry/new/", core_views.entry_add, name="entry_add"), path("entry//", core_views.entry_view, name="entry_view"), path("entry//edit/", core_views.entry_edit, name="entry_edit"), path("entry//delete/", core_views.entry_delete, name="entry_delete"), path("nav/next/", core_views.nav_next, name="nav_next"), path("nav/prev/", core_views.nav_prev, name="nav_prev"), path("stats/", core_views.stats_page, name="stats"), # Tools already in your project path("tools/normalize-scripture/", core_views.normalize_scripture, name="normalize_scripture"), path("tools/normalize-source/", core_views.normalize_source, name="normalize_source"), path("tools/normalize-subjects/", core_views.normalize_subjects, name="normalize_subjects"), path("api/tts//", views_tts.api_tts_for_entry, name="api_tts_for_entry"), path("settings/delete-all/", core_views.delete_all_entries, name="delete_all_entries"), path("tools/import/", core_views.import_wizard, name="import_wizard"), path("api/set-highlight-hits/", feat_views.api_set_highlight_hits, name="api_set_highlight_hits"), path("tools/announcements/", core_views.announcement_tools, name="announcement_tools"), path("tools/login-attempts/", core_views.login_attempts, name="login_attempts"), path("announcements/dismiss//", core_views.dismiss_announcement, name="dismiss_announcement"), path("tools/clear-history/", core_views.clear_history, name="clear_history"), path("tools/audit-log/", core_views.audit_log, name="audit_log"), # Export/Import/etc (keep what you use) path("export/", core_views.export_csv, name="export_csv"), # Auth path("login/", core_views.login_view, name="login"), path("logout/", auth_views.LogoutView.as_view(next_page="/login/"), name="logout"), path("admin/", admin.site.urls), # --- NEW: per-user features APIs --- path("api/set-font-size/", feat_views.api_set_font_size, name="api_set_font_size"), path("api/get-prefs/", feat_views.api_get_prefs, name="api_get_prefs"), path("api/log-search/", feat_views.api_log_search, name="api_log_search"), path("api/get-search-history/", feat_views.api_get_search_history, name="api_get_search_history"), path("api/log-view//", feat_views.api_log_view, name="api_log_view"), path("api/get-recent-views/", feat_views.api_get_recent_views, name="api_get_recent_views"), path("settings/", core_views.settings_home, name="settings_home"), path("settings/theme/", core_views.set_theme, name="set_theme"), # ✅ FIXED path("api/update-pub-codes/", views.api_update_pub_codes, name="api_update_pub_codes"), # --- NEW (PWA) --- re_path( r"^manifest\.webmanifest$", TemplateView.as_view( template_name="pwa/manifest.webmanifest", content_type="application/manifest+json", ), name="manifest", ), re_path( r"^service-worker\.js$", TemplateView.as_view( template_name="pwa/service-worker.js", content_type="application/javascript", ), name="service_worker", ), path( "offline/", TemplateView.as_view(template_name="pwa/offline.html"), name="offline", ), ]