Coverage for ivatar/urls.py: 84%
19 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-24 23:06 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-24 23:06 +0000
1"""
2ivatar URL configuration
3"""
5import contextlib
6from django.contrib import admin
7from django.urls import path, include, re_path
8from django.conf.urls.static import static
9from django.views.generic import TemplateView, RedirectView
10from ivatar import settings
11from .views import AvatarImageView, StatsView
12from .views import GravatarProxyView, BlueskyProxyView, DeploymentVersionView
14urlpatterns = [ # pylint: disable=invalid-name
15 path("admin/", admin.site.urls),
16 path("i18n/", include("django.conf.urls.i18n")),
17 path("openid/", include("django_openid_auth.urls")),
18 path("auth/", include("social_django.urls", namespace="social")),
19 path("tools/", include("ivatar.tools.urls")),
20 re_path(
21 r"avatar/(?P<digest>\w{64})", AvatarImageView.as_view(), name="avatar_view"
22 ),
23 re_path(
24 r"avatar/(?P<digest>\w{32})", AvatarImageView.as_view(), name="avatar_view"
25 ),
26 re_path(r"avatar/$", AvatarImageView.as_view(), name="avatar_view"),
27 re_path(
28 r"avatar/(?P<digest>\w*)",
29 RedirectView.as_view(url="/static/img/deadbeef.png"),
30 name="invalid_hash",
31 ),
32 re_path(
33 r"gravatarproxy/(?P<digest>\w*)",
34 GravatarProxyView.as_view(),
35 name="gravatarproxy",
36 ),
37 re_path(
38 r"blueskyproxy/(?P<digest>\w*)",
39 BlueskyProxyView.as_view(),
40 name="blueskyproxy",
41 ),
42 path(
43 "description/",
44 TemplateView.as_view(template_name="description.html"),
45 name="description",
46 ),
47 # The following two are TODO TODO TODO TODO TODO
48 path(
49 "run_your_own/",
50 TemplateView.as_view(template_name="run_your_own.html"),
51 name="run_your_own",
52 ),
53 path(
54 "features/",
55 TemplateView.as_view(template_name="features.html"),
56 name="features",
57 ),
58 path(
59 "security/",
60 TemplateView.as_view(template_name="security.html"),
61 name="security",
62 ),
63 path(
64 "privacy/", TemplateView.as_view(template_name="privacy.html"), name="privacy"
65 ),
66 path(
67 "contact/", TemplateView.as_view(template_name="contact.html"), name="contact"
68 ),
69 path("talk_to_us/", RedirectView.as_view(url="/contact"), name="talk_to_us"),
70 path("stats/", StatsView.as_view(), name="stats"),
71 path(
72 "deployment/version/",
73 DeploymentVersionView.as_view(),
74 name="deployment_version",
75 ),
76]
78MAINTENANCE = False
79with contextlib.suppress(Exception):
80 if settings.MAINTENANCE:
81 MAINTENANCE = True
82if MAINTENANCE:
83 urlpatterns.append(
84 path("", TemplateView.as_view(template_name="maintenance.html"), name="home")
85 )
86 urlpatterns.insert(3, path("accounts/", RedirectView.as_view(url="/")))
87else:
88 urlpatterns.append(
89 path("", TemplateView.as_view(template_name="home.html"), name="home")
90 )
91 urlpatterns.insert(3, path("accounts/", include("ivatar.ivataraccount.urls")))
93urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)