Skip to content

Torna configurável a exibição do link para o site antigo - #1489

Merged
robertatakenaka merged 5 commits into
scieloorg:mainfrom
robertatakenaka:deixa_link_para_site_antigo_como_variavel_ambiente
Oct 20, 2026
Merged

robertatakenaka merged 5 commits into
scieloorg:mainfrom
robertatakenaka:deixa_link_para_site_antigo_como_variavel_ambiente

Conversation

@robertatakenaka

@robertatakenaka robertatakenaka commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

O que esse PR faz?

Torna configurável a exibição do link para o site antigo (old.scielo.org) no cabeçalho do site. Adiciona a configuração SCIELO_OLD_URL_ENABLED, que permite ocultar o link sem alterar código, e passa a derivar o texto exibido a partir da própria URL configurada em SCIELO_OLD_URL, em vez de usar um texto fixo. Também garante que uma URL inválida (sem http:// ou https://) não quebre o link, usando o valor padrão nesse caso.

Onde a revisão poderia começar?

core/home/models.py, na função get_old_scielo_link(), e em seguida core/templates/home/scieloorg/header.html.

Como este poderia ser testado manualmente?

  1. Sem definir SCIELO_OLD_URL_ENABLED (padrão False), acessar a home e verificar que o link para o site antigo não aparece no cabeçalho.
  2. Definir SCIELO_OLD_URL_ENABLED=True, reiniciar o container e verificar que o cabeçalho exibe o link old.scielo.org apontando para http://old.scielo.org/.
  3. Com o link habilitado, definir SCIELO_OLD_URL=https://exemplo.scielo.org/, reiniciar e verificar que o link aponta para essa URL e que o texto exibido é exemplo.scielo.org.
  4. Definir SCIELO_OLD_URL=exemplo.scielo.org (sem protocolo), reiniciar e verificar que o link volta a usar http://old.scielo.org/.
  5. Definir SCIELO_OLD_URL_ENABLED=False, reiniciar e verificar que o link deixa de aparecer.

Algum cenário de contexto que queira dar?

O link para o site antigo é útil durante o período de transição, mas deve poder ser removido do cabeçalho em determinados ambientes ou após a desativação do site antigo, sem necessidade de novo deploy de código. Antes desta alteração, o texto do link era fixo (old.scielo.org) e não acompanhava mudanças em SCIELO_OLD_URL.

Atenção: em produção, o padrão de SCIELO_OLD_URL_ENABLED é False. Para manter o link visível, é necessário definir SCIELO_OLD_URL_ENABLED=True nas variáveis de ambiente antes do deploy.

Screenshots

Antes
Captura de Tela 2026-10-15 às 17 09 42

Depois
Captura de Tela 2026-10-15 às 17 09 33

Quais são os tickets relevantes?

N/A

Referências

N/A


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

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

  • Sim
  • Não

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

  • Sim
  • Não

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

  • Sim
    • 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):

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

  • Sim
  • Não — a URL vem de configuração do ambiente, é validada quanto ao esquema (http/https) e renderizada com o autoescape do Django

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

  • Sim
  • 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)

Adiciona a configuração SCIELO_OLD_URL_ENABLED, lida do ambiente
(padrão: False), para habilitar ou desabilitar o link para o site
antigo no cabeçalho.

Documenta também que SCIELO_OLD_URL deve começar com http:// ou
https:// e que o texto exibido no link é a URL sem o protocolo.
Define SCIELO_OLD_URL_ENABLED=True no .env local para que o link
para old.scielo.org continue visível durante o desenvolvimento.
O link para o site antigo passa a respeitar a configuração de
habilitação e a ter seu texto derivado da própria URL configurada,
em vez de um texto fixo.

Detalhes de implementação:
- Cria get_old_scielo_link(), que retorna {"url": ..., "label": ...}
  ou None quando SCIELO_OLD_URL_ENABLED é False
- Valida SCIELO_OLD_URL com urlparse; se o esquema não for http ou
  https, usa http://old.scielo.org/
- O label é a URL sem o protocolo e sem a barra final
- _default_context passa a expor old_scielo_link no lugar de
  old_scielo_url
O cabeçalho deixa de exibir o texto fixo old.scielo.org e passa a
usar a URL e o rótulo configurados, ocultando o bloco quando o link
está desabilitado.

Detalhes de implementação:
- Envolve a lista do link em {% if old_scielo_link %}
- Usa old_scielo_link.url no href e old_scielo_link.label como texto
@robertatakenaka robertatakenaka changed the title Deixa link para site antigo como variavel ambiente Torna configurável a exibição do link para o site antigo Oct 15, 2026

@Rossi-Luciano Rossi-Luciano left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Rodei a suíte de core.home (13 testes, todos passam; nenhum cobre a função nova) e testei get_old_scielo_link() no Django com override_settings, além de conferir o cabeçalho na interface local nos cenários desabilitado, URL personalizada e URL inválida. O comportamento bate com a descrição, exceto pelo caso comentado em models.py.

Outros pontos, sem linha específica:

  • Testes: a função é pura e fácil de cobrir em core/home/tests.py com override_settings: desabilitado → None; URL padrão; URL https personalizada; sem protocolo → padrão; javascript: → padrão; http:// → padrão.
  • Histórico: os commits 3164f008 (habilita no ambiente local) e 1f11c56f (desabilita de novo) se anulam. Talvez valha juntá-los antes do merge.
  • NSI.04: o item SonarQube / Trivy ficou sem marcação.

Comment thread config/settings/base.py

# LINK TO OLD SCIELO
# Habilita/desabilita a exibição do link para o site antigo no cabeçalho
SCIELO_OLD_URL_ENABLED = env.bool("SCIELO_OLD_URL_ENABLED", default=False)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Com default=False, o link deixa de aparecer em produção no próximo deploy, a menos que alguém defina a variável. A descrição avisa, mas .envs/.production/.django (versionado) não foi atualizado, então o aviso depende de alguém lê-lo na hora do deploy.

Duas opções: manter o comportamento atual com default=True e deixar a desativação como escolha explícita; ou incluir SCIELO_OLD_URL_ENABLED=True em .envs/.production/.django neste PR.

Comment thread core/home/models.py
SCIELO_OLD_URL deve começar com http:// ou https://; caso contrário,
usa o valor padrão. O label é a URL sem o protocolo.
"""
if not getattr(settings, "SCIELO_OLD_URL_ENABLED", True):

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

O fallback do getattr é True, mas o settings define False. Na prática o True nunca é usado, porque base.py sempre define a variável, mas quem lê a função entende o contrário. Como o settings sempre existe, dá para simplificar:

Suggested change
if not getattr(settings, "SCIELO_OLD_URL_ENABLED", True):
if not settings.SCIELO_OLD_URL_ENABLED:

Comment thread core/home/models.py
Comment on lines +95 to +96
if urlparse(url).scheme not in ("http", "https"):
url = default_url

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Uma URL com esquema válido mas sem host (http://, https:///) passa na checagem e gera {"url": "http://", "label": ""}. Confirmei na interface: o cabeçalho renderiza <a href="http://" target="_blank"></a>, vazio, com o link "habilitado" e sem voltar ao padrão. Checar também o netloc resolve:

Suggested change
if urlparse(url).scheme not in ("http", "https"):
url = default_url
parsed = urlparse(url)
if parsed.scheme not in ("http", "https") or not parsed.netloc:
url = default_url

Comment thread core/home/models.py
if not getattr(settings, "SCIELO_OLD_URL_ENABLED", True):
return None

default_url = "http://old.scielo.org/"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

nit: "http://old.scielo.org/" está repetido aqui e no default de base.py:733. Se um mudar, o outro fica para trás. Uma opção é uma constante única, por exemplo SCIELO_OLD_URL_DEFAULT no settings.

@robertatakenaka
robertatakenaka merged commit b8310af into scieloorg:main Oct 20, 2026
3 of 5 checks passed
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.

3 participants