Self-hostable blog for developers built on Wagtail and Django, with webpack, Bootstrap, and CodeMirror.
blogbootstrapdjangodockerhandcodedpythonself-hostedwagtailwebpack
1from django.conf import settings
2from taggit.models import Tag
3
4from accounts.models import User
5
6from pages.models import BlogIndexPage, NewsletterPage
7
8
9def canonical(request):
10 """
11 Gets the canonical URL for the current request.
12 """
13 return {"canonical": request.build_absolute_uri(request.path)}
14
15
16def base_url(request):
17 """
18 Provides the BASE_URL from settings.
19 """
20 return {"BASE_URL": settings.BASE_URL}
21
22
23def site_owner(request):
24 """
25 Provides the site owner's details.
26 """
27 return {"site_owner": User.objects.filter(is_superuser=True).first()}
28
29
30def nav_items(request):
31 """
32 Provides tags for the navigation.
33 """
34 blog_index_page = BlogIndexPage.objects.first()
35 if blog_index_page:
36 tags = blog_index_page.get_tags()
37 else:
38 tags = Tag.objects.none()
39 for tag in tags:
40 tag.name = tag.name.title()
41 try:
42 tag.url = blog_index_page.url + blog_index_page.reverse_subpage(
43 "tag", kwargs={"tag": tag.slug}
44 )
45 except TypeError:
46 continue
47 sorted_tags = sorted(tags, key=lambda tag: tag.name)
48 return {"nav_items": sorted_tags}
49
50
51def newsletter_page(request):
52 """
53 Provides the newsletter page.
54 """
55 return {"newsletter_page": NewsletterPage.objects.first()}