from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path
from django.views.generic import TemplateView

from apps.core import views as core_views
from apps.core import views_pwa

urlpatterns = [
    path("admin/", admin.site.urls),
    # WS5.12 — Django's built-in set_language POST handler. Mounted on a
    # short URL so the top-nav switcher form posts cleanly.
    path("i18n/", include("django.conf.urls.i18n")),
    path("accounts/", include("apps.core.authentication.urls")),
    # OAuth2/OIDC provider — /o/authorize, /o/token, /o/userinfo,
    # /o/.well-known/openid-configuration ("Log in with IILMP" for Moodle).
    path("o/", include("oauth2_provider.urls", namespace="oauth2_provider")),
    path("rims/", include("apps.rims.urls")),
    path("repository/", include("apps.repository.urls")),
    path("mel/", include("apps.mel.urls")),
    path("alumni/", include("apps.alumni.urls")),
    path("smehub/", include("apps.smehub.urls")),
    path("assistant/", include("apps.core.assistant.urls")),
    # LD010 — PWA shell. Both routes must live at site root scope.
    path("manifest.webmanifest", views_pwa.ManifestView.as_view(), name="pwa_manifest"),
    path("service-worker.js", views_pwa.ServiceWorkerView.as_view(), name="pwa_service_worker"),
    path("offline/", TemplateView.as_view(template_name="offline.html"), name="offline"),
    path("", core_views.root_redirect),
    path("", include("apps.core.urls")),
    path("api/v1/", include("api.v1.urls")),
]

handler403 = "apps.core.views.handler403"

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    if "django_browser_reload" in settings.INSTALLED_APPS:
        urlpatterns += [path("__reload__/", include("django_browser_reload.urls"))]
