Corrige a obtenção dos pdfs do pacote do Upload v3.x - #1036
Merged
Conversation
## Propósito Atualizar a dependência packtools de 4.16.8 para 4.16.11, disponibilizando recursos necessários para os ajustes subsequentes em Article, SPSPkg e Package (pkg_name_variations, deprecated_sps_pkg_name_list, get_complete_publication_date e path_in_zip em renditions). ## Solução técnica Bump de versão da referência git no requirements/base.txt (packtools.git@4.16.8 -> packtools.git@4.16.11).
…orage ## Propósito Evitar chamada de upload_to_the_cloud com content=None quando o item não possui conteúdo disponível (após KeyError tratado em item["content"]). ## Solução técnica Adicionado `if not content: continue` antes da chamada de upload_to_the_cloud, pulando itens sem conteúdo em vez de tentar enviá-los.
…xistente ## Propósito Corrigir falha em localizar um Article já existente quando o sps_pkg_name do pacote mudou entre versões (nomes depreciados), o que causava criação de registros duplicados em vez de atualização do existente. ## Solução técnica - get_first passa a aceitar o parâmetro name_list e inclui Q(sps_pkg__sps_pkg_name__in=name_list) na busca. - create_or_update tenta obter xml_with_pre.pkg_name_variations; se o atributo não existir (AttributeError), monta a lista manualmente a partir de sps_pkg_name + deprecated_sps_pkg_name_list, e passa essa lista para get_first.
## Propósito Corrigir múltiplos pontos relacionados à publicação de pacotes: leitura incorreta do conteúdo de renditions dentro do zip, ausência de fallback na extração da data de publicação, impossibilidade de forçar reprocessamento do SPSPkg já registrado no Core, e falha na localização de PidReservation/pid_v2 quando o nome do pacote mudou entre versões. Também remove logs de depuração (logging.info) que não agregam valor em produção e renomeia variável para refletir seu real significado. ## Solução técnica - upload_package_directory_path: renomeia variável sps_pkg_name para xml_name, já que representa o nome do arquivo e não necessariamente o nome do pacote SPS. - PackageZip.xmls: remove logging.info supérfluo. - Package.renditions: passa a ler o conteúdo via zf.read(rendition["path_in_zip"]) em vez de rendition["name"], já que o path dentro do zip pode diferir do nome exibido. - Package.set_pid_v2_and_publication_date: adiciona fallback para xml_with_pre.get_complete_publication_date() quando article_publication_date não está disponível/é inválida. - Package.prepare_sps_package / prepare_to_publish: adicionam o parâmetro force_update, permitindo forçar a atualização do SPSPkg mesmo quando já registrado e válido no Core; ajustado o filtro de pdf_langs em renditions removendo a checagem redundante contra xml_with_pre.filenames. - PidReservation.get: passa a aceitar name_list, permitindo buscar por múltiplas variações de pkg_name (pkg_name__in). - PidV2Generator.generate: usa xml_with_pre.pkg_name_variations (com fallback para sps_pkg_name + deprecated_sps_pkg_name_list) ao consultar PidReservation, evitando falha na resolução de pid_v2 quando o nome do pacote mudou; remove logs de depuração (logging.info) intermediários do fluxo.
16 tasks
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 leitura do conteúdo dos renditions (PDFs) durante a publicação de pacotes, que anteriormente falhava ao localizar o arquivo dentro do .zip. Também: (a) permite localizar um
Articlejá existente e reservas de PID (PidReservation) considerando variações/nomes depreciados desps_pkg_name, evitando duplicidade de registros quando o nome do pacote muda entre versões; (b) adiciona fallback para obtenção da data de publicação do artigo quandoarticle_publication_datenão está disponível; (c) adiciona parâmetroforce_updatepara permitir reprocessar o SPSPkg mesmo quando já registrado e válido no Core; (d) evita chamadas de upload ao storage com conteúdo vazio/inexistente; (e) atualiza a dependência packtools para 4.16.11; (f) remove logs de depuração (logging.info) sem valor em produção.Onde a revisão poderia começar?
upload/models.py, no métodoPackage.renditions(leitura derendition["path_in_zip"]em vez derendition["name"]), que é a origem principal do problema relatado (PDFs não encontrados).Como este poderia ser testado manualmente?
namede exibição seja diferente do caminho do arquivo dentro do .zip.No entanto, foi identificado um bug no minio que será tratado no PR ...
Algum cenário de contexto que queira dar?
A questão principal é que os PDFs não eram encontrados. Isso ocorria porque a leitura do conteúdo do rendition usava a chave
name(nome de exibição) ao invés do caminho real do arquivo dentro do .zip (path_in_zip), causando falha na recuperação do conteúdo do PDF durante a publicação. As demais alterações neste PR (variações de nome de pacote, fallback de data de publicação,force_update) foram necessárias para dar suporte e consistência ao fluxo de atualização de pacotes com o packtools 4.16.11.Screenshots
Quando aplicável, anexar prints do erro anterior (PDF não encontrado) e da publicação funcionando corretamente após a correção.
Quais são os tickets relevantes?
Issue relacionada: PDFs de renditions não encontrados durante a publicação de pacotes (ver issue acima).
FIx #1035
Referências
pkg_name_variations,deprecated_sps_pkg_name_list,get_complete_publication_datee estrutura derenditionscompath_in_zip)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?