Skip to content

Corrige download XLS/CSV da listagem de periódicos no SciELO.org - #1475

Open
samuelveigarangel wants to merge 4 commits into
scieloorg:mainfrom
samuelveigarangel:fix/download-journals-list-scielo-org
Open

Corrige download XLS/CSV da listagem de periódicos no SciELO.org#1475
samuelveigarangel wants to merge 4 commits into
scieloorg:mainfrom
samuelveigarangel:fix/download-journals-list-scielo-org

Conversation

@samuelveigarangel

Copy link
Copy Markdown
Collaborator

O que esse PR faz?

Corrige o download XLS/CSV da listagem de periódicos no SciELO.org, que saía apenas com o nome das colunas. O arquivo passa a incluir os periódicos visíveis na listagem, filtrar por categoria quando o download parte da URL de uma área, e nomear o arquivo com o slug da categoria ou all_journals. Também adiciona a opção Todos no select de categoria.

Onde a revisão poderia começar?

core/home/views.py (_get_scielo_journals_data e _journals_download_filename) e, em seguida, journal/models.py (SciELOJournal.scielo_url, owner_name e as_export_dict).

Como este poderia ser testado manualmente?

  1. Abrir a listagem geral de periódicos no SciELO.org e baixar XLS e CSV: o arquivo deve ter linhas (título, URL SciELO, publisher) e o nome all_journals_AAAA-MM-DD.csv (ou .xls).
  2. Abrir uma URL de categoria (ex.: lista-por-tema/health-sciences/) e baixar XLS/CSV: o arquivo deve conter só os periódicos daquela área e o nome health-sciences_AAAA-MM-DD.csv.
  3. No select de categoria, escolher Todos e confirmar o retorno à listagem completa.
  4. Conferir que periódicos sem domínio da coleção não esvaziam o arquivo inteiro.

Algum cenário de contexto que queira dar?

A view engolia qualquer exceção ao montar a URL (domain.rstrip com domain nulo) e devolvia lista vazia, por isso o download vinha só com o cabeçalho. A listagem por categoria já filtrava por journal__subject__code, mas o botão de download não enviava a categoria.

Screenshots

Não aplicável.

Quais são os tickets relevantes?

Não há issue vinculada.

Referências

Não há.


Segurança da informação (NSI.04)

Seção obrigatória. Marque as opções aplicáveis e justifique quando necessário. Referência: NSI.04 - Norma de Desenvolvimento Seguro.

Este PR manipula dados sensíveis ou pessoais (LGPD)?

  • Sim — descreva os controles de proteção aplicados (criptografia, mascaramento, anonimização, etc.):
  • Não

Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?

  • Sim — descreva o que mudou e por quê:
  • Não

Este PR introduz, atualiza ou remove dependências de terceiros?

  • Sim — as novas dependências foram verificadas no SBOM/Trivy sem vulnerabilidades críticas/altas em aberto?
    • Verificado e aprovado
    • Pendente / vulnerabilidade aceita com justificativa:
  • Não

Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?

  • Sim — link do job:
  • Não aplicável a este PR (justifique): alteração de listagem/download de periódicos já públicos; o pipeline de CI do repositório deve rodar na PR.

Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?

  • Sim — confirme que há sanitização/parametrização (prepared statements, escaping, etc.):
  • Não

Este PR expõe novos endpoints, telas ou serviços?

  • Sim — HTTPS obrigatório está garantido e o acesso segue o princípio de menor privilégio?
  • Não

Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?

  • Não, nenhum segredo foi commitado
  • Sim (bloquear merge e corrigir antes de prosseguir)

Made with Cursor

samuelveigarangel and others added 4 commits September 9, 2026 15:08
A montagem de scielo_url, publisher e o dicionário do download passa a viver no modelo, para a view só consultar e serializar.

Co-authored-by: Cursor <cursoragent@cursor.com>
O arquivo deixa de sair só com o cabeçalho, aplica os mesmos filtros da listagem e nomeia o download com a categoria ou all_journals.

Co-authored-by: Cursor <cursoragent@cursor.com>
A listagem por área passa a voltar para todos os periódicos e o botão de download respeita a categoria da URL.

Co-authored-by: Cursor <cursoragent@cursor.com>
Os testes garantem que o XLS/CSV traz periódicos, filtra por área e usa all_journals ou o slug da categoria no filename.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment thread journal/models.py
Comment on lines +2239 to +2248
def scielo_url(self):
domain = ""
if self.collection and self.collection.domain:
domain = self.collection.domain
if not domain:
return ""
return (
f"{domain.rstrip('/')}/scielo.php?script=sci_serial"
f"&pid={self.issn_scielo or ''}&lng=en"
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uma dúvida:

Essa URL é a padrão para coleção clássica. Pelo que notei, ao acessar para periódico brasileira, ela redireciona para o site opac. Ou seja, https://www.scielo.br/scielo.php?script=sci_serial&pid=2318-8219&lng=es&nrm=iso é redirecionado para https://www.scielo.br/j/abcic/. Pretende-se implementar algo aqui para suportar diretamente o domínio do opac (que usa acronym do periódico) e não precisar do redirect?

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.

2 participants