Fix get_queryset(request) → get_queryset() in SnippetViewSet subclasses#1420
Fix get_queryset(request) → get_queryset() in SnippetViewSet subclasses#1420
Conversation
Migrated from ModelAdmin pattern (get_queryset(self, request)) to SnippetViewSet pattern (get_queryset(self)) across all SnippetViewSet subclasses. Replaced request.user with self.request.user and super().get_queryset(request) with super().get_queryset(). Also moved misplaced get_queryset from ArticlePeerReviewStats model to ArticlePeerReviewStatsSnippetViewSet where it belongs. Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com> Agent-Logs-Url: https://github.com/scieloorg/core/sessions/24f67e11-b3c3-46ee-b6cf-2958974642c8
There was a problem hiding this comment.
Pull request overview
Corrige a assinatura de get_queryset em subclasses de SnippetViewSet para o padrão do Wagtail (get_queryset(self) usando self.request), evitando que chamadas a super().get_queryset(request) retornem None e quebrem listagens de snippets no admin.
Changes:
- Atualiza
get_queryset(self, request)→get_queryset(self)em váriosSnippetViewSet, trocandorequest.userporself.request.userquando necessário. - Ajusta chamadas a
super().get_queryset()para não receberrequest. - Move a lógica de queryset otimizado do proxy
ArticlePeerReviewStatspara oArticlePeerReviewStatsSnippetViewSet.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| thematic_areas/wagtail_hooks.py | Ajusta get_queryset() em viewsets de Thematic Areas para assinatura correta do SnippetViewSet. |
| location/wagtail_hooks.py | Ajusta get_queryset() do LocationAdmin removendo request e mantendo otimizações. |
| journal/wagtail_hooks.py | Corrige assinatura/uso de request em mixin e viewsets (incluindo filtros por permissões via self.request.user). |
| issue/wagtail_hooks.py | Corrige assinatura/uso de request no queryset do admin de Issues. |
| core/wagtail_hooks.py | Corrige assinatura do LicenseViewSet.get_queryset() para padrão SnippetViewSet. |
| article/wagtail_hooks.py | Adiciona get_queryset() otimizado no ArticlePeerReviewStatsSnippetViewSet. |
| article/models.py | Remove get_queryset do proxy model ArticlePeerReviewStats (migração da responsabilidade para o ViewSet). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 'doi', | ||
| 'titles', | ||
| 'languages', |
There was a problem hiding this comment.
get_queryset() is prefetching the M2M relations (doi, titles, languages) for every page of the listing. This adds extra queries and can pull additional rows even though these relations aren’t used in list_display/filters here; consider dropping these prefetch_related() calls (or limiting them to what the list actually needs) to keep the admin listing lighter.
| 'doi', | |
| 'titles', | |
| 'languages', | |
| 'titles', |
O que esse PR faz?
Corrige a assinatura
get_queryset(self, request)(padrão ModelAdmin) paraget_queryset(self)(padrão SnippetViewSet) em todas as subclasses deSnippetViewSet.No Wagtail
SnippetViewSet,get_queryset()não receberequest— usaself.requestinternamente. Passarrequestfaziasuper().get_queryset(request)retornarNoneem vez de um QuerySet.Classes corrigidas:
core/wagtail_hooks.py—LicenseViewSetjournal/wagtail_hooks.py—FilteredJournalQuerysetMixin,JournalAdminOnlySnippetViewSet,SciELOJournalAdminViewSet,CrossmarkPolicyAdminlocation/wagtail_hooks.py—LocationAdminissue/wagtail_hooks.py—IssueAdminSnippetViewSetthematic_areas/wagtail_hooks.py—GenericThematicAreaAdmin,GenericThematicAreaFileAdmin,ThematicAreaAdmin,ThematicAreaFileAdminarticle/models.py+article/wagtail_hooks.py— movidoget_querysetdo proxy modelArticlePeerReviewStatsparaArticlePeerReviewStatsSnippetViewSetdjango_celery_beat/wagtail_hooks.pynão foi alterado pois ainda usaModelAdmin.Onde a revisão poderia começar?
journal/wagtail_hooks.py— contém os casos mais complexos comFilteredJournalQuerysetMixine múltiplas ViewSets que usamself.request.userpara filtragem por permissão.Como este poderia ser testado manualmente?
None)Algum cenário de contexto que queira dar?
Na migração de
ModelAdminparaSnippetViewSet, a assinatura deget_querysetmudou. OSnippetViewSetdo Wagtail não receberequestcomo argumento — ele usaself.requestinternamente. Quando se chamasuper().get_queryset(request), o Wagtail interpreta esserequestde forma inesperada e retornaNone.Screenshots
N/A — correção de backend sem impacto visual.
Quais são tickets relevantes?
N/A
Referências
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.