From 24df4b02a220bbdb59b1e19a5db8f49119de9f74 Mon Sep 17 00:00:00 2001 From: Jordan Robinson Date: Sat, 20 Sep 2025 23:12:42 +0100 Subject: [PATCH] fix tags with hyphen not working on fitler --- main/models.py | 6 ++++++ main/views/general.py | 11 +++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/main/models.py b/main/models.py index feb4d157914fccfad07989c7afa8885cce3993cd..626f6311430c9ff9994570ab20851f2fb96205c9 100644 --- a/main/models.py +++ b/main/models.py @@ -310,6 +310,12 @@ class Post(models.Model): return f"//{self.owner.custom_domain}{path}" else: return self.get_absolute_url() + + def save(self, *args, **kwargs): + if self.tags: + cleaned_tags = [t.strip() for t in self.tags.split(",") if t.strip()] + self.tags = ",".join(cleaned_tags) + super().save(*args, **kwargs) def __str__(self): return self.title diff --git a/main/views/general.py b/main/views/general.py index 781cafe62b70906352a845b502470846fe04ff3d..6f2ffcbf71dd67d1abc890e4f84eaa18dd34bb43 100644 --- a/main/views/general.py +++ b/main/views/general.py @@ -3,6 +3,7 @@ import uuid from collections import defaultdict from datetime import datetime, timedelta from urllib.parse import urlparse +import re import stripe from django.db.models import Q @@ -174,10 +175,7 @@ def post_list_filter(request, tag = None): if models.User.objects.filter(username=request.subdomain).exists(): drafts = [] if request.user.is_authenticated and request.user == request.blog_user: - posts = models.Post.objects.filter(Q(tags__iexact=tag) | - Q(tags__startswith=f"{tag},") | - Q(tags__endswith=f",{tag}") | - Q(tags__contains=f",{tag},"),owner=request.blog_user).defer( + posts = models.Post.objects.filter(Q(tags__regex=rf"(^|,){re.escape(tag)}(,|$)"),owner=request.blog_user).defer( "body", ) drafts = models.Post.objects.filter( @@ -188,10 +186,7 @@ def post_list_filter(request, tag = None): else: models.AnalyticPage.objects.create(user=request.blog_user, path="index") posts = models.Post.objects.filter( - Q(tags__iexact=tag) | - Q(tags__startswith=f"{tag},") | - Q(tags__endswith=f",{tag}") | - Q(tags__contains=f",{tag},"), + Q(tags__regex=rf"(^|,){re.escape(tag)}(,|$)"), owner=request.blog_user, published_at__isnull=False, published_at__lte=timezone.now().date(),