Repository navigation
fix(multiseek): pusty wynik nie pokazuje nieaktualnego licznika (FD#503) - #951
Merged
Merged
Conversation
Licznik „Razem" pochodzi z 30-minutowego cache agregatów, a klucz zależy tylko od formularza. Gdy rekord zniknął z wyników w czasie życia wpisu, lista była pusta, a pasek dalej pokazywał „Razem: 1" i przyciski wyświetlania/druku. Pusty wynik przy niezerowym wpisie przelicza teraz agregaty. Komunikat „Brak elementów" trafia poza <ol>, bo każdy <li> dostaje z CSS numer i pusta lista wyglądała jak pozycja „0.". Fixes Freshdesk FD#503 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mr7s9on2cdYwgnDrRWrtHo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes Freshdesk FD#503: https://iplweb.freshdesk.com/a/tickets/503
Problem
Multiseek pokazywał „Razem: 1" oraz „Wyświetl wszystkie" i „Drukuj" przy pustej liście, na której jedyną pozycją było „0. Brak elementów".
Przyczyna
paginator_countpochodzi z cache agregatów (TTL 30 min), którego klucz zależy tylko od formularza. Gdy rekord zniknie z wyników w czasie życia wpisu, licznik zostaje stary, a lista jest świeża.<li>w<ol>, a CSS numeruje każdy<li>. Numer „0." wynika zstart_indexrównego 0: paginator liczy przezlen(qs)i widzi świeże 0, czyli stan ze zrzutu klientki („Razem: 1" obok „0.").Zmiany
src/bpp/views/mymultiseek.py: gdy wpis cache ma niezerowy licznik, aqset.exists()zwraca False, agregaty są przeliczane i nadpisywane. Koszt to jedno zapytanieLIMIT 1przy trafieniu w cache.report-body-list.html: „Brak elementów" poza<ol>, jako<p>. Dotyczy też strony „Wyszukiwanie zapytaniem" i eksportu dokumentu, które używają tego szablonu.Zakres
Świadomie naprawiony jest tylko przypadek całkowicie pustego wyniku. Częściowa nieaktualność (np. licznik 5 przy 3 rekordach) zostaje, ograniczona przez TTL, tak jak zakłada komentarz przy cache.
Do osobnego zadania
object_list.count = lambda *args, **kw: ...wget_context_datanie działa: Djangomethod_has_no_argsodrzuca lambdę wariadyczną, więc paginator robilen(object_list), czyli pobiera cały queryset przy każdej stronie. Poprawka tego nie zmienia.Testy
Testy
test_fd503_*wtest_mymultiseek_count_cache.py. Trzy padały przed poprawką;test_fd503_autor_bez_prac_ma_licznik_zeroprzechodzi od początku i wyklucza inne źródło rozjazdu niż cache. Lokalnie:src/bpp/tests -k multiseekbez Playwrighta, 317 passed. Testów Playwright nie uruchamiano.🤖 Generated with Claude Code
https://claude.ai/code/session_01Mr7s9on2cdYwgnDrRWrtHo