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