Skip to content

Commit cecaa0f

Browse files
authored
Merge pull request #387 from torchbox/TWE-58-be-remove-filter-tags-from-blogs
TWE-58 Remove tags from BlogPage and BlogIndexPage
2 parents 4b22e7e + aa15091 commit cecaa0f

File tree

8 files changed

+16
-245
lines changed

8 files changed

+16
-245
lines changed

tbx/blog/models.py

Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
from itertools import chain
21
import math
32
import string
43

54
from django import forms
65
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
76
from django.db import models
8-
from django.db.models import Case, Q, When
97
from django.dispatch import receiver
108
from django.utils.functional import cached_property
11-
from django.utils.http import urlencode
129

1310
from modelcluster.fields import ParentalKey, ParentalManyToManyField
1411
from wagtail.admin.panels import (
@@ -78,25 +75,11 @@ def blog_posts(self):
7875
def get_context(self, request, *args, **kwargs):
7976
context = super().get_context(request, *args, **kwargs)
8077

81-
# Get blog_posts
82-
blog_posts = self.blog_posts
83-
84-
# Filter by related_service slug
85-
slug_filter = request.GET.get("filter")
86-
extra_url_params = {}
87-
88-
if slug_filter and slug_filter in self.taxonomy_slugs:
89-
blog_posts = blog_posts.filter(
90-
Q(related_sectors__slug=slug_filter)
91-
| Q(related_services__slug=slug_filter)
92-
)
93-
extra_url_params["filter"] = slug_filter
94-
9578
# use page to filter
9679
page = request.GET.get("page", 1)
9780

9881
# Pagination
99-
paginator = Paginator(blog_posts, 10) # Show 10 blog_posts per page
82+
paginator = Paginator(self.blog_posts, 10) # Show 10 blog_posts per page
10083

10184
try:
10285
blog_posts = paginator.page(page)
@@ -105,20 +88,8 @@ def get_context(self, request, *args, **kwargs):
10588
except EmptyPage:
10689
blog_posts = paginator.page(paginator.num_pages)
10790

108-
# Only show Sectors and Services that have been used
109-
related_sectors = Sector.objects.filter(
110-
pk__in=models.Subquery(self.blog_posts.values("related_sectors"))
111-
)
112-
113-
related_services = Service.objects.filter(
114-
pk__in=models.Subquery(self.blog_posts.values("related_services"))
115-
)
116-
tags = chain(related_services, related_sectors)
117-
11891
context.update(
11992
blog_posts=blog_posts,
120-
tags=tags,
121-
extra_url_params=urlencode(extra_url_params),
12293
)
12394
return context
12495

@@ -162,18 +133,6 @@ def set_body_word_count(self):
162133
).split()
163134
self.body_word_count = len(body_words)
164135

165-
@cached_property
166-
def sectors(self):
167-
return self.related_sectors.all()
168-
169-
@cached_property
170-
def services(self):
171-
return self.related_services.all()
172-
173-
@property
174-
def tags(self):
175-
return chain(self.services, self.sectors)
176-
177136
def get_related_blog_posts(self):
178137
# Assumption that blog posts for the same division
179138
# will be under the same blog index page.
@@ -183,7 +142,7 @@ def get_related_blog_posts(self):
183142
if related := self.related_posts.values_list("page"):
184143
# If some blog posts have been manually selected we show those first
185144
base_queryset |= BlogPage.objects.filter(pk__in=related)
186-
manual_first = Case(When(pk__in=related, then=1), default=2)
145+
manual_first = models.Case(models.When(pk__in=related, then=1), default=2)
187146
order_by.insert(0, manual_first)
188147

189148
prefetch_author_images = models.Prefetch(
@@ -261,6 +220,7 @@ def type(self):
261220
FieldPanel("related_services", widget=forms.CheckboxSelectMultiple),
262221
],
263222
heading="Taxonomies",
223+
help_text="For internal use only, will not be rendered on the final page.",
264224
),
265225
InlinePanel(
266226
"related_posts",

tbx/blog/tests/test_models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,12 @@ def test_related_blog_posts_padded_if_not_enough(self):
133133
],
134134
transform=attrgetter("title"),
135135
)
136+
137+
def test_tags_not_rendered(self):
138+
page = BlogPageFactory(
139+
parent=self.blog_index,
140+
related_services=[ServiceFactory(name="SHOULD_NOT_BE_RENDERED")],
141+
related_sectors=[SectorFactory(name="SHOULD_NOT_BE_RENDERED")],
142+
)
143+
response = self.client.get(page.url)
144+
self.assertNotContains(response, "SHOULD_NOT_BE_RENDERED")

tbx/project_styleguide/templates/patterns/pages/blog/blog_detail.html

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
'author-title' : '{{ page.first_author.role }}',
99
'author-name' : '{{ page.first_author.name }}',
1010
'published' : '{{ page.date|date:"Ymd" }}',
11-
'tags' : [{% for tag in page.services %}'{{tag.name}}'{% if not forloop.last %}, {% endif %}{% endfor %}],
1211
'read-time' : '{{ page.read_time }}',
1312
'id': '{{ page.id }}',
1413
'page-h1' : '{{ page.title }}',
@@ -34,14 +33,6 @@
3433
<h1 class="heading heading--one">{{ page.title }}</h1>
3534

3635
{% pageurl page.blog_index as blog_index_url %}
37-
38-
{# Temporarily hide tags #}
39-
<!-- <div class="tags tags--with-title">
40-
<span class="sr-only">Related post categories</span>
41-
{% for tag in page.tags %}
42-
{% include "patterns/atoms/tag/tag.html" with tag_slug=tag.slug tag_name=tag.name tag_link_base=blog_index_url %}
43-
{% endfor %}
44-
</div> -->
4536
</div>
4637

4738
<div class="blog-meta">
@@ -56,7 +47,7 @@ <h2 class="motif-heading section-title--related-posts section-title--large-gap"
5647
<ul class="grid__related-posts streamfield__related-posts">
5748
{% for post in page.related_blog_posts %}
5849
{% pageurl post as post_url %}
59-
{% include "patterns/molecules/listing/listing--avatar.html" with title=post.title name=post.first_author.name job_title=post.first_author.role link=post_url date=post.date reading_time=post.read_time tags=post.tags hide_tags=True avatar=post.first_author.image tag_link_base=blog_index_url %}
50+
{% include "patterns/molecules/listing/listing--avatar.html" with title=post.title name=post.first_author.name job_title=post.first_author.role link=post_url date=post.date reading_time=post.read_time hide_tags=True avatar=post.first_author.image tag_link_base=blog_index_url %}
6051
{% endfor %}
6152

6253
<li class="mx-auto lg:mx-0 mt-spacerSmall">

tbx/project_styleguide/templates/patterns/pages/blog/blog_detail.yaml

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,6 @@ context:
1414
date: 07 Aug 2024
1515
get_verbose_name: Blog page
1616
read_time: 5
17-
tags:
18-
- name: Digital products
19-
slug: digital-products
20-
- name: Wagtail
21-
slug: wagtail
22-
- name: Digital Marketing
23-
slug: digital-marketing
2417
related_blog_posts:
2518
- link: '/'
2619
title: Reimagining our Agile training and ways of working
@@ -29,38 +22,20 @@ context:
2922
role: Product Director
3023
date: 05 Sep 23
3124
read_time: 4
32-
tags_screenreader_text: 'Filter blog posts by category'
33-
tags:
34-
- name: Innovation
35-
slug: innovation
36-
- name: Culture
37-
slug: culture
3825
- link: '/'
3926
title: The future of AI in healthcare
4027
first_author:
4128
name: Emily Johnson
4229
role: Data Scientist
4330
date: 05 Sep 23
4431
read_time: 6
45-
tags_screenreader_text: 'Filter blog posts by category'
46-
tags:
47-
- name: Artificial Intelligence
48-
slug: ai
49-
- name: Healthcare
50-
slug: healthcare
5132
- link: '/'
5233
title: The impact of machine learning in finance
5334
first_author:
5435
name: Sarah Thompson
5536
role: Financial Analyst
5637
date: 05 Sep 23
5738
read_time: 8
58-
tags_screenreader_text: 'Filter blog posts by category'
59-
tags:
60-
- name: Machine Learning
61-
slug: machine-learning
62-
- name: Finance
63-
slug: finance
6439

6540
tags:
6641
include_block:

tbx/project_styleguide/templates/patterns/pages/blog/blog_listing.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010

1111
{% block content %}
1212
<div class="grid grid--spacer-large">
13-
{% include "patterns/molecules/title-filters/title-filters.html" with item=page tags=tags hide_tags=True %}
13+
{% include "patterns/molecules/title-filters/title-filters.html" with item=page hide_tags=True %}
1414

1515
<ul class="page-listing page-listing--blog">
1616
{% for post in blog_posts %}
1717
{% pageurl post as link %}
18-
{% include "patterns/molecules/listing/listing--avatar.html" with link=link avatar=post.first_author.image title=post.title name=post.first_author.name job_title=post.first_author.role date=post.date reading_time=post.read_time tags=post.tags hide_tags=True tag_link_base=blog_index_url base_class="page-listing__item" %}
18+
{% include "patterns/molecules/listing/listing--avatar.html" with link=link avatar=post.first_author.image title=post.title name=post.first_author.name job_title=post.first_author.role date=post.date reading_time=post.read_time hide_tags=True tag_link_base=blog_index_url base_class="page-listing__item" %}
1919
{% endfor %}
2020
</ul>
2121

tbx/project_styleguide/templates/patterns/pages/blog/blog_listing.yaml

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,71 +23,41 @@ context:
2323
first_author:
2424
name: Paul Vetch
2525
role: Strategy Director
26-
tags:
27-
- name: Digital products
28-
slug: digital-products
29-
- name: Wagtail
30-
slug: wagtail
3126

3227
- title: Wagtail for Public Sector
3328
date: 20 Oct 2023
3429
read_time: '5'
3530
first_author:
3631
name: Paul Vetch
3732
role: Strategy Director
38-
tags:
39-
- name: Social Media
40-
slug: social-media
41-
- name: Culture
42-
slug: culture
4333

4434
- title: Explore the potential of AI in content management
4535
date: 20 Oct 2023
4636
read_time: '5'
4737
first_author:
4838
name: Paul Vetch
4939
role: Strategy Director
50-
tags:
51-
- name: Social Media
52-
slug: social-media
53-
- name: Culture
54-
slug: culture
5540

5641
- title: Wagtail for Public Sector
5742
date: 20 Oct 2023
5843
read_time: '5'
5944
first_author:
6045
name: Will Heinemann
6146
role: New Business Director
62-
tags:
63-
- name: Digital products
64-
slug: digital-products
65-
- name: Wagtail
66-
slug: wagtail
6747

6848
- title: Explore the potential of AI in content management
6949
date: 20 Oct 2023
7050
read_time: '5'
7151
first_author:
7252
name: Will Heinemann
7353
role: New Business Director
74-
tags:
75-
- name: Digital products
76-
slug: digital-products
77-
- name: Wagtail
78-
slug: wagtail
7954

8055
- title: Wagtail for Public Sector
8156
date: 20 Oct 2023
8257
read_time: '5'
8358
first_author:
8459
name: Will Heinemann
8560
role: New Business Director
86-
tags:
87-
- name: Digital products
88-
slug: digital-products
89-
- name: Wagtail
90-
slug: wagtail
9161

9262
tags:
9363
srcset_image:

tbx/project_styleguide/templatetags/navigation_tags.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
override_tag(register, name="primarynav", default_html="")
77
override_tag(register, name="primarynavmobile", default_html="")
88
override_tag(register, name="footerlinks", default_html="")
9+
override_tag(register, name="get_top_level_parent_page", default_html="")

0 commit comments

Comments
 (0)