def convert_article_xml(file_xml_path): obj_xmltree = xml.loadToXML(file_xml_path) obj_xml = obj_xmltree.getroot() obj_xml.set("specific-use", "sps-1.9") obj_xml.set("dtd-version", "1.1") xml_sps = SPS_Package(obj_xmltree) # CONVERTE O BODY DO AM PARA SPS xml_sps.transform_body() # CONVERTE PUB-DATE PARA SPS 1.9 xml_sps.transform_pubdate() # CONSTROI O SCIELO-id NO XML CONVERTIDO xml_sps.create_scielo_id() # Remove a TAG <counts> do XML xml_sps.transform_article_meta_count() languages = "-".join(xml_sps.languages) _, fname = os.path.split(file_xml_path) fname, fext = fname.rsplit(".", 1) new_file_xml_path = os.path.join(config.get("CONVERSION_PATH"), "%s.%s.%s" % (fname, languages, fext)) xml.objXML2file(new_file_xml_path, xml_sps.xmltree, pretty=True)
class Test_MatchPubDate4(unittest.TestCase): def setUp(self): xml = """<article><article-meta> <pub-date date-type="pub"> <year>2010</year><month>9</month><day>1</day></pub-date> <pub-date date-type="epub-ppub"> <year>2011</year></pub-date> <pub-date date-type="collection"> <year>2012</year><month>2</month></pub-date> </article-meta></article>""" xmltree = etree.fromstring(xml) self.sps_package = SPS_Package(xmltree, None) def test__match_pubdate(self): result = self.sps_package._match_pubdate( ('pub-date[@date-type="pub"]', 'pub-date[@date-type="collection"]')) self.assertEqual(result.findtext("year"), "2010") def test_document_pubdate(self): self.assertEqual(self.sps_package.document_pubdate, ("2010", "09", "01")) def test_documents_bundle_pubdate(self): self.assertEqual(self.sps_package.documents_bundle_pubdate, ("2012", "02", "")) def test_transform_pubdate(self): self.sps_package.transform_pubdate() xpaths_results = ( ('pub-date[@date-type="pub"]', ("2010", "9", "1")), ('pub-date[@date-type="collection"]', ("2012", "2", None)), ) for xpath, result in xpaths_results: with self.subTest(xpath=xpath, result=result): pubdate = self.sps_package.article_meta.find(xpath) self.assertIsNotNone(pubdate) self.assertEqual(pubdate.get("publication-format"), "electronic") self.assertEqual(pubdate.findtext("year"), result[0]) self.assertEqual(pubdate.findtext("month"), result[1]) self.assertEqual(pubdate.findtext("day"), result[2])
class Test_MatchPubDate1_Season(unittest.TestCase): def setUp(self): xml = """<article><article-meta> <pub-date date-type="pub"> <year>2010</year><month>5</month><day>13</day></pub-date> <pub-date date-type="collection"> <year>2012</year><season>Jan-Feb</season></pub-date> </article-meta></article>""" xmltree = etree.fromstring(xml) self.sps_package = SPS_Package(xmltree, None) def test__match_pubdate(self): result = self.sps_package._match_pubdate( ('pub-date[@date-type="pub"]', 'pub-date[@date-type="collection"]')) self.assertEqual(result.findtext("year"), "2010") def test_document_pubdate(self): self.assertEqual(self.sps_package.document_pubdate, ("2010", "05", "13")) def test_documents_bundle_pubdate(self): self.assertEqual(self.sps_package.documents_bundle_pubdate, ("2012", "", "")) def test_transform_pubdate(self): self.sps_package.transform_pubdate() pubdate = self.sps_package.article_meta.find( 'pub-date[@date-type="pub"]') self.assertIsNotNone(pubdate) self.assertEqual(pubdate.get("publication-format"), "electronic") self.assertEqual(pubdate.findtext("year"), "2010") self.assertEqual(pubdate.findtext("month"), "5") self.assertEqual(pubdate.findtext("day"), "13") pubdate = self.sps_package.article_meta.find( 'pub-date[@date-type="collection"]') self.assertIsNotNone(pubdate) self.assertEqual(pubdate.get("publication-format"), "electronic") self.assertEqual(pubdate.findtext("year"), "2012") self.assertEqual(pubdate.findtext("season"), "Jan-Feb")