add: alltags page and tag styles

This commit is contained in:
2026-04-12 12:46:22 +03:00
parent a301e75cdd
commit 5af505fbe4
5 changed files with 94 additions and 1 deletions

View File

@@ -143,6 +143,44 @@ class TagAutocompleteTests(TestCase):
self.assertEqual(payload['pagination']['more'], False)
class AllTagsPageTests(TestCase):
def setUp(self):
user_model = get_user_model()
self.user = user_model.objects.create_superuser(
username='admin',
email='admin@example.com',
password='password',
)
self.client.force_login(self.user)
item1 = TbContent.objects.create(
szContentHead='Тест 1',
szContentIntro='Анонс 1',
szContentBody='Тело 1',
szContentSlug='test-1',
bContentPublish=True,
)
item2 = TbContent.objects.create(
szContentHead='Тест 2',
szContentIntro='Анонс 2',
szContentBody='Тело 2',
szContentSlug='test-2',
bContentPublish=True,
)
item1.tags.add('alpha', 'beta')
item2.tags.add('alpha')
def test_alltags_page_lists_all_tags_with_counts(self):
response = self.client.get(reverse('web_alltags'))
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'Все теги сайта')
self.assertContains(response, '/tag_alpha')
self.assertContains(response, '/tag_beta')
self.assertContains(response, '<b class="_tag">2</b>')
self.assertContains(response, '<b class="_tag">1</b>')
class TypographTests(TestCase):
def test_save_generates_slug_from_clean_text(self):
item = TbContent(szContentHead='<b>Привет&nbsp;мир</b>')

View File

@@ -60,6 +60,24 @@ def tag_autocomplete(request):
return JsonResponse({"results": results, "pagination": {"more": more}})
@require_GET
def alltags(request):
"""Показывает все теги сайта и число их вхождений во всех публикациях."""
template = "alltags.jinja2"
to_template: dict[str, object] = {"COOKIES": check_cookies(request)}
q_tags = (
Tag.objects.annotate(
NumTotal=Count("taggit_taggeditem_items", distinct=True),
)
.filter(NumTotal__gt=0)
.order_by("-NumTotal", "name")
)
to_template["TAGS_IN_PAGE"] = q_tags
return render(request, template, to_template)
def index(request,
slug_tags: str = "",
ppage: int = 0):