from __future__ import annotations from typing import TYPE_CHECKING from django.conf import settings from django.conf.urls.static import static from django.contrib.sitemaps.views import index from django.contrib.sitemaps.views import sitemap from django.urls import include from django.urls import path from django.views.decorators.cache import cache_page from twitch import sitemaps as twitch_sitemaps from twitch import views as twitch_views if TYPE_CHECKING: from django.contrib.sitemaps import Sitemap from django.urls.resolvers import URLPattern from django.urls.resolvers import URLResolver sitemaps: dict[str, type[Sitemap]] = { "static": twitch_sitemaps.TwitchSitemapGenerator, "games": twitch_sitemaps.GameSitemap, "campaigns": twitch_sitemaps.CampaignSitemap, "organizations": twitch_sitemaps.OrganizationSitemap, "channels": twitch_sitemaps.ChannelSitemap, "badges": twitch_sitemaps.BadgeSitemap, "reward-campaigns": twitch_sitemaps.RewardCampaignSitemap, } urlpatterns: list[URLPattern | URLResolver] = [ path( "sitemap.xml", cache_page(60 * 60)(index), {"sitemaps": sitemaps}, name="sitemap", ), path( "sitemap-
.xml", cache_page(60 * 60)(sitemap), {"sitemaps": sitemaps}, name="django.contrib.sitemaps.views.sitemap", ), path("robots.txt", twitch_views.robots_txt_view, name="robots"), path(route="", view=include("twitch.urls", namespace="twitch")), ] # Serve media in development if settings.DEBUG: urlpatterns += static( settings.MEDIA_URL, document_root=settings.MEDIA_ROOT, ) # If not testing, include debug toolbar and silk URLs if not settings.TESTING: from debug_toolbar.toolbar import debug_toolbar_urls urlpatterns += [path("silk/", include("silk.urls", namespace="silk"))] urlpatterns = [*urlpatterns, *debug_toolbar_urls()]