def test_delete_documents_raises_error_if_kernel_connect_error( self, mk_hooks): mk_hooks.kernel_connect.side_effect = requests.exceptions.HTTPError( "Not Found") with self.assertRaises(DeleteDocFromKernelException) as exc_info: delete_doc_from_kernel("FX6F3cbyYmmwvtGmMB7WCgr") self.assertEqual(str(exc_info.exception), "Not Found")
def delete_documents(sps_package, xmls_filenames): """ Deleta documentos informados do Kernel dict sps_packages_xmls: dict com os paths dos pacotes SPS e os respectivos nomes dos arquivos XML. """ Logger.debug("delete_documents IN") Logger.info("Reading sps_package: %s" % sps_package) xmls_to_delete = [] with ZipFile(sps_package) as zipfile: for i, sps_xml_file in enumerate(xmls_filenames, 1): Logger.info( 'Reading XML file "%s" from ZIP file "%s" [%s/%s]', sps_xml_file, sps_package, i, len(xmls_filenames), ) try: doc_to_delete = document_to_delete(zipfile, sps_xml_file) except DocumentToDeleteException as exc: Logger.info('Could not delete document "%s": %s', sps_xml_file, str(exc)) else: if doc_to_delete: xmls_to_delete.append(sps_xml_file) try: delete_doc_from_kernel(doc_to_delete) except DeleteDocFromKernelException as exc: Logger.info( 'Could not delete "%s" (scielo_id: "%s") from kernel: %s', sps_xml_file, doc_to_delete, str(exc)) else: Logger.info( 'Document "%s" (scielo_id: "%s") deleted from kernel', sps_xml_file, doc_to_delete) Logger.debug("delete_documents OUT") return list(set(xmls_filenames) - set(xmls_to_delete))
def delete_documents( sps_package: str, xmls_filenames: list ) -> Tuple[List[str], List[dict]]: """ Deleta documentos informados do Kernel dict sps_packages_xmls: dict com os paths dos pacotes SPS e os respectivos nomes dos arquivos XML. """ Logger.debug("delete_documents IN") Logger.info("Reading sps_package: %s" % sps_package) xmls_to_delete = [] executions = [] with ZipFile(sps_package) as zipfile: for i, sps_xml_file in enumerate(xmls_filenames, 1): Logger.info( 'Reading XML file "%s" from ZIP file "%s" [%s/%s]', sps_xml_file, sps_package, i, len(xmls_filenames), ) execution = {"file_name": sps_xml_file, "deletion": True} try: is_doc_to_delete, doc_id = is_document_to_delete(zipfile, sps_xml_file) except DocumentToDeleteException as exc: Logger.error('Error reading document "%s": %s', sps_xml_file, str(exc)) execution.update({"failed": True, "error": str(exc)}) executions.append(execution) else: if is_doc_to_delete: xmls_to_delete.append(sps_xml_file) if doc_id is None: Logger.error( 'Document "%s" will not be deleted because SciELO PID is None', sps_xml_file, ) execution.update( {"failed": True, "error": "SciELO PID V3 is None"} ) executions.append(execution) continue try: delete_doc_from_kernel(doc_id) except DeleteDocFromKernelException as exc: Logger.info( 'Could not delete "%s" (scielo_id: "%s") from kernel: %s', sps_xml_file, doc_id, str(exc), ) execution.update( {"pid": doc_id, "failed": True, "error": str(exc)} ) else: Logger.info( 'Document "%s" (scielo_id: "%s") deleted from kernel', sps_xml_file, doc_id, ) execution.update({"pid": doc_id, "file_name": sps_xml_file}) executions.append(execution) Logger.debug("delete_documents OUT") return (list(set(xmls_filenames) - set(xmls_to_delete)), executions)
def test_delete_doc_from_kernel_calls_kernel_connect(self, mk_hooks): delete_doc_from_kernel("FX6F3cbyYmmwvtGmMB7WCgr") mk_hooks.kernel_connect.assert_called_once_with( "/documents/FX6F3cbyYmmwvtGmMB7WCgr", "DELETE")