Skip to content

feat(eksport-autora): eksport BibTeX/RIS tylko przez Celery, pełny dorobek dla redakcji - #935

Merged
mpasternak merged 2 commits into
devfrom
feat/eksport-autora-tylko-celery
Oct 24, 2026
Merged

mpasternak merged 2 commits into
devfrom
feat/eksport-autora-tylko-celery

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co i dlaczego

Generowanie eksportu publikacji autora (BibTeX/RIS) w wątku requestu przy dużym dorobku mogło zająć worker serwera WWW. Od teraz plik generuje wyłącznie zadanie Celery, także dla zalogowanych i dla redakcji.

Zmiany

  • Usunięta droga synchroniczna (_BazaEksportuAutoraView, AutorEksportBibtexView/AutorEksportRisView, MAKS_EKSPORT z widoku). Adresy /bpp/autor/<pk>/eksport.bib|.ris (nazwy URL autor_eksport_bibtex|ris zostają) zwracają teraz 302 na autor_eksport_start w odpowiednim formacie, więc linki z dokumentacji i zakładek dalej działają. Przekierowanie niczego nie kolejkuje, a regułę widoczności autora stosuje strona startu.
  • Redakcja dostaje pełny dorobek przez Celery: gdy moze_wprowadzac_dane(user), zadanie dostaje ukryte_statusy=[] i tylko_dla_redakcji=True. Pozostali dostają zakres publiczny (ukryte_statusy_eksportu, fail-closed, bez zmian) i tylko_dla_redakcji=False.
  • Nowe pole AutorEksportTask.tylko_dla_redakcji (BooleanField(default=False)), migracja 0498_autoreksporttask_tylko_dla_redakcji. Istniejące zadania dostają False, więc pozostają publiczne.
  • Deduplikacja po (autor, format, ukryte_statusy, tylko_dla_redakcji): zadanie redakcji nigdy nie jest oddawane osobie spoza redakcji i odwrotnie.
  • Status i pobranie (EksportAutoraStatusView, EksportAutoraDownloadView, także partial HTMX): dla zadania tylko_dla_redakcji wymagany jest zalogowany użytkownik z moze_wprowadzac_dane, w przeciwnym razie 404 (istnienie zadania nie jest zdradzane). Zadania publiczne działają bez zmian (dostęp po UUID).
  • Reguła ukrytych autorów (_autor_dla_eksportu → widoczni_autorzy, po refactor(autor): wspólny helper widoczni_autorzy() dla reguły pokazuj=False #932) bez zmian.
  • Limit żądań: dotychczasowy limit eksportu sync (10 na 60 s na użytkownika) został przeniesiony na start nowego zadania (LIMIT_STARTOW_EKSPORTU). Obejmuje tylko zalogowanych bez uprawnień redakcyjnych, a trafienia deduplikacji nie liczą się do limitu (zwracane jest istniejące zadanie). Anonima chroni ALTCHA (proof-of-work) plus deduplikacja, a redakcja jest z limitu zwolniona. Przekroczenie limitu zwraca 429.
  • Dokumentacja użytkownika (docs/uzytkownik/przegladanie-i-wyszukiwanie.md), newsfragment eksport-autora-tylko-celery.feature.rst. Z niewydanego jeszcze +eksport-autora-altcha.feature.rst usunąłem zdanie o natychmiastowym pobieraniu pod eksport.bib/.ris.

Zmiana zachowania dla wdrożeń

  • Skrypty, które pobierały eksport.bib/.ris z sesją i oczekiwały pliku, dostaną teraz 302 na stronę HTML.
  • Migracja 0498: baseline nie był odświeżany (zgodnie z zasadą „raz, przy scalaniu”), więc Check baseline freshness może zgłosić nieaktualny baseline. To oczekiwane.

Testy

Przepisane i nowe testy w src/bpp/tests/test_profil/ sprawdzają:

  • przekierowanie dawnych adresów;
  • że redaktor dostaje zadanie z pełnym zakresem i tylko_dla_redakcji, a anonim i zwykły użytkownik zakres publiczny;
  • że status i pobranie zadania redakcji dają 404 dla anonima i zwykłego użytkownika, a 200 dla redaktora (również przez HTMX);
  • że deduplikacja rozdziela zadania;
  • że plik redakcji zawiera ukryte prace, a plik publiczny nie;
  • limit startów.

Lokalnie: uv run pytest src/bpp/tests/test_profil/ → 267 passed; makemigrations bpp --check → No changes detected in app 'bpp'.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UJ23Rb1c5UtxHTfAke9ENQ

mpasternak and others added 2 commits October 24, 2026 21:58
…robek dla redakcji

- usunięto synchroniczne generowanie eksportu autora; dawne adresy
  /bpp/autor/<pk>/eksport.bib|.ris przekierowują (302) na stronę startu
  eksportu w tle w odpowiednim formacie,
- redakcja (moze_wprowadzac_dane) dostaje zadanie z pełnym zakresem
  i nowym polem AutorEksportTask.tylko_dla_redakcji; status i pobranie
  takiego zadania dla pozostałych zwracają 404,
- deduplikacja po (autor, format, ukryte_statusy, tylko_dla_redakcji),
- limit żądań przeniesiony z eksportu synchronicznego na start nowych
  zadań (zalogowani bez uprawnień redakcyjnych; anonima chroni ALTCHA),
- migracja 0498, dokumentacja użytkownika, newsfragment, testy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UJ23Rb1c5UtxHTfAke9ENQ
@mpasternak
mpasternak merged commit 6091e39 into dev Oct 24, 2026
40 of 41 checks passed
@mpasternak
mpasternak deleted the feat/eksport-autora-tylko-celery branch October 24, 2026 20:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant