Implementa validação de pacote SPS#1
Open
Rossi-Luciano wants to merge 1 commit into
Open
Conversation
- Adiciona validate_zip e write_csv em xml_manager/utils.py usando packtools xml_validator.validate_xml_content com journal_data extraído automaticamente do próprio XML (abbrev_journal_title, publisher_name_list, nlm_journal_title, license_code) - Adiciona task_validate_sps_package (Celery) com transições de status pending → running → done/error e geração do CSV como documento Wagtail - Substitui os três TODOs em wagtail_hooks.py e views.py pelo disparo da task - Corrige bug do PR scieloorg#93: aspas tipográficas U+201C/U+201D usadas como delimitadores de string em wagtail_hooks.py - Corrige import ausente de task_process_xml_document em views.py - Corrige renderização do campo zip_upload sobrescrevendo get_bound_panel para retornar None, ativando o fallback do template Wagtail que exibe todos os campos visíveis do formulário - Adiciona SPS_Package_Validation_Error em exceptions.py - Adiciona [tool:pytest] em setup.cfg com DJANGO_SETTINGS_MODULE - Adiciona 15 testes novos: ValidateZipTests, WriteCsvTests, TaskValidateSpsPackageTests e test_revalidate_dispatches_task Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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?
Conecta a infraestrutura criada no PR scieloorg#93 à validação real via packtools, eliminando os três
# TODO: here add the code to validate the package.Funcionalidades entregues
Validação assíncrona (Celery)
task_validate_sps_package: executavalidate_zip→ grava CSV como documento Wagtail → atualiza statuspending → running → done/errorExtração automática de metadados do XML (Opção C)
_extract_journal_data(xmltree): extraiabbrev_journal_title,publisher_name_list,nlm_journal_titleelicense_codediretamente do XML SPS, sem input do usuário e sem dependência de banco externojournal-metaque antes eram silenciosamente ignoradas (journal_data=None)Funções standalone
validate_zip(zip_path) -> list[dict]: itera o ZIP viaXMLWithPre, executavalidate_xml_contentcomjournal_dataextraído do XML, retorna lista de 13 campos por itemwrite_csv(rows, output_csv) -> str: grava resultado em CSV comFIELDNAMESpadronizadosCorreções de bugs do PR scieloorg#93
wagtail_hooks.py→SyntaxError"com conteúdo tipográfico preservadotask_process_xml_documentusado mas não importado emviews.pyzip_uploadnão renderizado na interface Wagtail (campo de formulário invisível por ausência deFieldPanel)get_bound_panelsobrescrito para retornarNone, ativando fallback do template que exibe todos os campos visíveis do form⋯(Wagtail 7.4 colocaButtoncomallow_in_dropdown=Trueno dropdown)btn.allow_in_dropdown = Falsepara exibir diretamente na linhavalidate_xml_content()chamado comparams={}(kwarg inexistente) →TypeErrorrulesxlink:href=Nonepropagava e abortava toda a validaçãolist(items)envolvido emtry/exceptpor grupoTestes adicionados (15 novos)
ValidateZipTests(6): retorna list[dict], campos esperados, concatenação deattribute, robustez comNoneWriteCsvTests(3): cria arquivo, cabeçalho correto, retorna caminhoTaskValidateSpsPackageTests(6): transições de status, documento criado,validated_atpreenchido, erro capturado, documento anterior substituídoSPSPackageValidationRevalidateViewTests:test_revalidate_dispatches_taskInfraestrutura de testes
setup.cfg: seção[tool:pytest]comDJANGO_SETTINGS_MODULE = config.settings.testconftest.pycriado na raiz do projetoÂmbito de arquivos
xml_manager/utils.pyxml_manager/tasks.pyxml_manager/wagtail_hooks.py,xml_manager/views.pyxml_manager/exceptions.pyxml_manager/tests/test_sps_package_validation.pysetup.cfg,conftest.pyComo testar manualmente
make up && make django_migratedocker compose -f local.yml logs celeryworker --tail=20tests/fixtures/xmls_to_test_validations/media.zipdo packtools)pendingparadonee o link Validation file aparece na listagemmake pytestTickets relacionados
scieloorg#93
🤖 Generated with Claude Code