Repository navigation
Adiciona uma área de relatórios públicos ao site, acessível em /report/, e o primeiro relatório dessa área: **Disponibilidade de dados** - #1488
Open
robertatakenaka wants to merge 15 commits into
Conversation
Concentra a lógica do relatório de disponibilidade de dados em um módulo próprio, separado da camada web, para que possa ser reutilizado e testado de forma isolada. Detalhes de implementação: - filter_articles: filtra Article por coleção, periódico e intervalo de ano de publicação online - build_report: agrupa por ano (do fascículo ou de publicação online) e por data_availability_status, com contagens, porcentagens e linha de totais - journals_for, pub_years_for e filter_options: alimentam os filtros dependentes - GROUP_BY_ISSUE_YEAR e GROUP_BY_OPTIONS: opções de agrupamento usadas pelo formulário
… dados Adiciona testes para o módulo report/data_availability.py, cobrindo filtros, agrupamento por ano, cálculo de totais e porcentagens e opções dos filtros dependentes.
Define o template base compartilhado pelas páginas públicas de relatórios, para que novos relatórios mantenham a mesma estrutura e aparência.
Lista os relatórios públicos disponíveis com título e descrição, a partir de PUBLIC_REPORTS em report/views.py. Estende report/public_base.html.
Apresenta a tabela de artigos por status de disponibilidade de dados e por ano, com filtros e exportação em CSV. Detalhes de implementação: - Filtros por coleção, periódico, intervalo de ano de publicação online e tipo de agrupamento - Periódicos e anos atualizados conforme a coleção/periódico escolhidos, via endpoint JSON de opções - Link 'Baixar CSV' preserva os filtros aplicados (query_string sem o parâmetro format) - Legenda dos status e mensagem quando não há artigos para os filtros - Estende report/public_base.html
Registra as URLs da página inicial de relatórios, do relatório de disponibilidade de dados e do endpoint de opções dos filtros dependentes, incluídas em config/urls.py sob /report/.
Adiciona o formulário de filtros do relatório de disponibilidade de dados, tolerante a valores inválidos para que um filtro mal preenchido não impeça a exibição do relatório. Detalhes de implementação: - DataAvailabilityFilterForm com os campos collection, journal, year_from, year_to e group_by - year_from e year_to validados como ano de 4 dígitos (RegexField) - group_by usa GROUP_BY_OPTIONS de report/data_availability.py - filters(): retorna apenas os valores válidos, ignorando campos inválidos, com group_by padrão GROUP_BY_ISSUE_YEAR
Cria as views da página inicial de relatórios públicos e do relatório de disponibilidade de dados, com exportação em CSV e cache para evitar recalcular sobre toda a tabela Article a cada acesso. Detalhes de implementação: - PUBLIC_REPORTS: registro dos relatórios listados em /report/ - report_index_view: renderiza report/index.html - data_availability_view: aplica os filtros, monta o relatório e responde em HTML ou CSV (format=csv) - data_availability_options_view: retorna em JSON os periódicos e anos disponíveis para os filtros dependentes - _data_availability_csv: CSV com separador ';', colunas de contagem e porcentagem por status e linha de total - cache_page de 1 hora (DATA_AVAILABILITY_CACHE_SECONDS) nas views do relatório e de opções
Inclui report.urls em i18n_patterns, antes das rotas do allauth e do Wagtail, para que as páginas de relatórios sejam servidas com prefixo de idioma.
Adiciona as mensagens da página inicial de relatórios e do relatório de disponibilidade de dados (títulos, descrições, filtros, legenda e mensagens de estado vazio).
Recompila locale/en/LC_MESSAGES/django.po com as mensagens dos relatórios públicos.
Adiciona as mensagens da página inicial de relatórios e do relatório de disponibilidade de dados (títulos, descrições, filtros, legenda e mensagens de estado vazio).
Recompila locale/es/LC_MESSAGES/django.po com as mensagens dos relatórios públicos.
Adiciona as mensagens da página inicial de relatórios e do relatório de disponibilidade de dados (títulos, descrições, filtros, legenda e mensagens de estado vazio).
Recompila locale/pt_BR/LC_MESSAGES/django.po com as mensagens dos relatórios públicos.
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.
O que esse PR faz?
Adiciona uma área de relatórios públicos ao site, acessível em
/report/, e o primeiro relatório dessa área: Disponibilidade de dados, que mostra a quantidade de artigos por status de disponibilidade de dados (Article.data_availability_status), por ano, com totais e porcentagens.Funcionalidades:
PUBLIC_REPORTS)ArticleOnde a revisão poderia começar?
Indique o caminho do arquivo e o arquivo onde o revisor deve iniciar a leitura do código.
report/data_availability.py— lógica do relatório (filtros, agrupamento, totais e porcentagens)report/test_data_availability.py— testes do móduloreport/forms.py—DataAvailabilityFilterFormreport/views.py—report_index_view,data_availability_view,data_availability_options_viewe exportação CSVreport/urls.pyeconfig/urls.py— rotasreport/templates/report/—public_base.html,index.htmledata_availability.htmlComo este poderia ser testado manualmente?
Estabeleça os passos necessários para que a funcionalidade seja testada manualmente pelo revisor.
python manage.py test report.test_data_availabilitypython manage.py compilemessages/report/sem estar autenticado e verificar se o relatório "Disponibilidade de dados" aparece na lista20a5) e verificar se o relatório continua sendo exibido, ignorando apenas esse filtro;como separadorAlgum cenário de contexto que queira dar?
Indique um contexto onde as modificações se fazem necessárias ou passe informações que contextualizam o revisor a fim de facilitar o entendimento da funcionalidade.
O relatório responde à necessidade de acompanhar a adoção da declaração de disponibilidade de dados nos artigos publicados, por coleção e por periódico, sem exigir acesso à área administrativa.
O ano do fascículo (legenda bibliográfica) e o ano de publicação online podem divergir, por exemplo em publicação contínua ou ahead of print. Por isso o filtro de intervalo se aplica sempre ao ano de publicação online, enquanto o agrupamento das linhas pode usar qualquer um dos dois anos. Essa distinção está explicada na própria página do relatório.
Para adicionar novos relatórios públicos, basta incluir a rota em
report/urls.pye uma entrada emPUBLIC_REPORTSemreport/views.py.Como o relatório é público e consulta toda a tabela
Article, as views usamcache_pagecom validade de 1 hora; alterações recentes nos artigos podem levar até esse tempo para aparecer.Screenshots
Quando aplicável e se fizer possível, adicione screenshots que remetem à situação gráfica do problema que o pull request resolve.
Quais são os tickets relevantes?
Indique uma issue à qual o pull request faz relacionamento.
Referências
Indique as referências utilizadas para a elaboração do pull request.
cache_page): https://docs.djangoproject.com/en/stable/topics/cache/#the-per-view-cachei18n_patterns): https://docs.djangoproject.com/en/stable/topics/i18n/translation/#language-prefix-in-url-patternsSegurança da informação (NSI.04)
Este PR manipula dados sensíveis ou pessoais (LGPD)?
Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?
Este PR introduz, atualiza ou remove dependências de terceiros?
Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?
Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?
Este PR expõe novos endpoints, telas ou serviços?
/report/e do relatório de disponibilidade de dados, além do endpoint JSON de opções dos filtros. São públicos por definição, somente leitura (GET) e retornam apenas contagens agregadas de artigos e listas de periódicos/anos, sem dados pessoais. Os parâmetros de entrada são validados pelo formulário e usados apenas via ORM. Servidos sob o mesmo HTTPS do site.Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?