Coverage for ivatar/urls.py: 84%

19 statements  

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

5 

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 

14 

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] 

73 

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

88 

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