Corrige os dados de Minio para obter o endereço correto dos documentos carregados - #1038
Open
robertatakenaka wants to merge 4 commits into
Open
Corrige os dados de Minio para obter o endereço correto dos documentos carregados#1038robertatakenaka wants to merge 4 commits into
robertatakenaka wants to merge 4 commits into
Conversation
…tar colisão de nomes Propósito: Os parâmetros do construtor de MinioStorage (bucket, object_name_prefix, public_url) tinham nomes genéricos que colidiam semanticamente com properties de mesmo nome em MinioConfiguration, dificultando o rastreamento de onde cada valor era originado. Solução técnica: Renomeados os parâmetros do __init__ para minio_bucket, minio_object_name_prefix e minio_public_url, deixando explícito que são valores específicos de configuração do Minio. Atributos internos (self.bucket, self.object_name_prefix, self.public_url) mantidos inalterados para não impactar o restante da classe.
…com host_root_dir Propósito: get_files_storage montava o MinioStorage usando 'obj.host_root_dir or obj.bucket' diretamente na chamada, sem centralizar essa regra, e a property public_url aplicava o prefixo de host_root_dir por cima da public_base_url informada pelo usuário, alterando um valor que deveria ser respeitado como está. Solução técnica: - Introduzida a property kwargs em MinioConfiguration, centralizando a montagem dos argumentos usados por MinioStorage (agora com os nomes minio_bucket, minio_object_name_prefix, minio_public_url). - Criada a property minio_bucket, que resolve a precedência entre host_root_dir e bucket. - Property object_name_prefix renomeada para minio_object_name_prefix (mesma lógica: bucket vira prefixo somente quando host_root_dir existe). - Property public_url renomeada para minio_public_url e corrigida: quando public_base_url é informado, ele é usado exatamente como está (sem concatenar prefixo); quando ausente, a URL é montada a partir do host e, nesse caso, o minio_bucket é anexado como subcaminho. - get_files_storage agora usa obj.kwargs + minio_http_client, evitando duplicar a lógica de resolução de bucket/prefixo/url na chamada.
…ublic_url Propósito: Os testes existentes validavam os nomes antigos de parâmetros e a regra antiga de public_url (que sempre concatenava o prefixo por cima da public_base_url informada). Solução técnica: Testes ajustados para os nomes minio_bucket, minio_object_name_prefix e minio_public_url, e para o novo comportamento de minio_public_url: - Quando public_base_url é informada, é usada exatamente como está, mesmo havendo host_root_dir. - Quando ausente, a URL é montada a partir do host, anexando minio_bucket como subcaminho. Removidas notas de docstring que descreviam o contrato antigo.
Contributor
|
Validando... |
16 tasks
Contributor
gitnnolabs
approved these changes
Aug 4, 2026
gitnnolabs
left a comment
Contributor
There was a problem hiding this comment.
De acordo com o incorporação.
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?
Corrige a lógica de resolução de
public_urlemMinioConfiguration, que duplicava o prefixo do bucket sobre umapublic_base_urljá informada pelo usuário, e refatoraget_files_storagepara centralizar a montagem dos argumentos deMinioStorageatravés de uma nova propertykwargs. Também renomeia os parâmetros do construtor deMinioStorage(bucket,object_name_prefix,public_url→minio_bucket,minio_object_name_prefix,minio_public_url) para eliminar a colisão de nomes com as properties homônimas deMinioConfiguration.Onde a revisão poderia começar?
files_storage/models.py, pela propertyminio_public_urle pelo métodoget_files_storage.Como este poderia ser testado manualmente?
MinioConfigurationcomhost_root_dirpreenchido epublic_base_urlinformada — confirmar que a URL retornada porget_files_storage(...).public_urlé exatamente apublic_base_urlinformada, sem concatenação.public_base_url— confirmar que a URL é montada a partir dehost/secure, com o bucket resolvido anexado como subcaminho.python manage.py test files_storage.test_models.Algum cenário de contexto que queira dar?
Esse ajuste corrige um bug de produção em potencial: URLs públicas de leitura configuradas manualmente estavam sendo alteradas silenciosamente quando
host_root_direstava presente, o que pode ter causado (ou pode vir a causar) URLs de leitura incorretas para arquivos armazenados via MinIO/S3/Wasabi.Bug encontrado ao resolver #1035
Screenshots
Não aplicável (mudança de lógica de backend, sem interface visual).
Quais são os tickets relevantes?
Relacionado à issue "Corrigir
get_files_storagee inconsistência empublic_urlao usarhost_root_dir".Corrige #1037 (issue aberto)
Corrige #1015 (pr fechado)
Referências
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?
Este PR expõe novos endpoints, telas ou serviços?
Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?