Coverage for ivatar/urls.py: 84%

19 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-24 23:06 +0000

1""" 

2ivatar URL configuration 

3""" 

4 

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 

13 

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] 

77 

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"))) 

92 

93urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)