Repository navigation
Torna configurável a exibição do link para o site antigo - #1489
robertatakenaka merged 5 commits into
Conversation
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
Rossi-Luciano
left a comment
There was a problem hiding this comment.
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.pycomoverride_settings: desabilitado →None; URL padrão; URLhttpspersonalizada; sem protocolo → padrão;javascript:→ padrão;http://→ padrão. - Histórico: os commits
3164f008(habilita no ambiente local) e1f11c56f(desabilita de novo) se anulam. Talvez valha juntá-los antes do merge. - NSI.04: o item SonarQube / Trivy ficou sem marcação.
|
|
||
| # 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) |
There was a problem hiding this comment.
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.
| 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): |
There was a problem hiding this comment.
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:
| if not getattr(settings, "SCIELO_OLD_URL_ENABLED", True): | |
| if not settings.SCIELO_OLD_URL_ENABLED: |
| if urlparse(url).scheme not in ("http", "https"): | ||
| url = default_url |
There was a problem hiding this comment.
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:
| 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 |
| if not getattr(settings, "SCIELO_OLD_URL_ENABLED", True): | ||
| return None | ||
|
|
||
| default_url = "http://old.scielo.org/" |
There was a problem hiding this comment.
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.
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 emSCIELO_OLD_URL, em vez de usar um texto fixo. Também garante que uma URL inválida (semhttp://ouhttps://) 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çãoget_old_scielo_link(), e em seguidacore/templates/home/scieloorg/header.html.Como este poderia ser testado manualmente?
SCIELO_OLD_URL_ENABLED(padrãoFalse), acessar a home e verificar que o link para o site antigo não aparece no cabeçalho.SCIELO_OLD_URL_ENABLED=True, reiniciar o container e verificar que o cabeçalho exibe o linkold.scielo.orgapontando parahttp://old.scielo.org/.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.SCIELO_OLD_URL=exemplo.scielo.org(sem protocolo), reiniciar e verificar que o link volta a usarhttp://old.scielo.org/.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 emSCIELO_OLD_URL.Atenção: em produção, o padrão de
SCIELO_OLD_URL_ENABLEDéFalse. Para manter o link visível, é necessário definirSCIELO_OLD_URL_ENABLED=Truenas variáveis de ambiente antes do deploy.Screenshots
Antes

Depois

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)?
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?
http/https) e renderizada com o autoescape do DjangoEste PR expõe novos endpoints, telas ou serviços?
Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?