repos

blog.bythewood.me-wagtail

mirror archived upstream

Self-hostable blog for developers built on Wagtail and Django, with webpack, Bootstrap, and CodeMirror.

blogbootstrapdjangodockerhandcodedpythonself-hostedwagtailwebpack

1.3 KB · 56 lines · Python Raw History
 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()}