def test_import_page_image(self): root = get_default_site().root_page importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Test if Image objects where created. self.assertTrue(Image.objects.filter(title__in=( 'AKL Rumšiškėse', 'AKL steigiamasis susirinkimas (II)', )).exists()) # Test if HTML is replaced as intended. def imgid(title): return Image.objects.get(title=title).pk imgids = [ imgid('AKL Rumšiškėse'), imgid('AKL steigiamasis susirinkimas (II)'), ] page = StandardPage.objects.get(url_path='/home/apie/apie/') tags = [ m.group(0) for m in re.finditer(r'<(embed|img)\b[^>]+>', page.body) ] self.assertEqual(tags, [ '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="%d"/>' % imgids[0], '<embed alt="AKL steigiamasis susirinkimas (II)" embedtype="image" format="right" id="%d"/>' % imgids[1], '<img src=\'http://wesnoth.org/start/1.10/images/start-1.jpg\' alt=\'Vesnoto ekranvaizdis\'/>', ])
def test_parse_images(self): root = get_default_site().root_page path = fixture('image_fixture/apie/apie.html') importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) result = importer.parse_images(path, '\n'.join([ '<img src="../images/akl.jpg" alt="AKL Rumšiškėse"', ' height="181" width="285" border="0"', ' class="lphoto"/>', ])) self.assertEqual(result, ( '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="1"/>' # noqa ))
def test_parse_images(self): root = get_default_site().root_page path = fixture('image_fixture/apie/apie.html') importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) result = importer.parse_images( path, '\n'.join([ '<img src="../images/akl.jpg" alt="AKL Rumšiškėse"', ' height="181" width="285" border="0"', ' class="lphoto"/>', ])) self.assertEqual( result, ( '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="1"/>' # noqa ))
def test_get_total(self): root = get_default_site().root_page manager = ImportManager(root, fixture('whole_export')) manager.add_importers([ NewsImporter('Naujienos', 'naujienos'), PagesImporter('Atviras kodas', 'ak'), ]) self.assertEqual(manager.get_total(), 19)
def test_import_page_image(self): root = get_default_site().root_page importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Test if Image objects where created. self.assertTrue( Image.objects.filter(title__in=( 'AKL Rumšiškėse', 'AKL steigiamasis susirinkimas (II)', )).exists()) # Test if HTML is replaced as intended. def imgid(title): return Image.objects.get(title=title).pk imgids = [ imgid('AKL Rumšiškėse'), imgid('AKL steigiamasis susirinkimas (II)'), ] page = StandardPage.objects.get(url_path='/home/apie/apie/') tags = [ m.group(0) for m in re.finditer(r'<(embed|img)\b[^>]+>', page.body) ] self.assertEqual(tags, [ '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="%d"/>' % imgids[0], '<embed alt="AKL steigiamasis susirinkimas (II)" embedtype="image" format="right" id="%d"/>' % imgids[1], '<img src=\'http://wesnoth.org/start/1.10/images/start-1.jpg\' alt=\'Vesnoto ekranvaizdis\'/>', ])
def test_document_import(self): root = get_default_site().root_page importer = PagesImporter('Skaitykla', 'skaitykla') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Check if Document instances are created. self.assertTrue(Document.objects.filter(title__in=( 'Kazarinas-Technologijos-ir-etika.odt', '2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt', '2004-06-02_Seimas_atviri_standartai.pdf', 'AKP_naudojimo_patirtis_AM.pdf', )).exists()) # Check if HTML is replaced as intended. def docid(title): return Document.objects.get(title=title).pk docids = [ docid('Kazarinas-Technologijos-ir-etika.odt'), docid('2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt'), docid('2004-06-02_Seimas_atviri_standartai.pdf'), docid('AKP_naudojimo_patirtis_AM.pdf'), ] page = StandardPage.objects.get(url_path='/home/skaitykla/pranesimai/') self.assertEqual(re.findall(r'<a\b[^>]+>', page.body), [ '<a href="http://www.vac.lt/seminaras/">', '<a href="http://www.mruni.lt/">', '<a id="%d" linktype="document">' % docids[0], '<a href="http://discovery.ot.lt/linma/">', '<a id="%d" linktype="document">' % docids[1], '<a href="http://www.lrs.lt/">', '<a href="http://www.lrs.lt/ivpk">', '<a href="http://www3.lrs.lt/pls/inter/ivpk_print.doc_view?key=234334">', '<a id="%d" linktype="document">' % docids[2], '<a id="%d" linktype="document">' % docids[3], ])
def test(self): root = get_default_site().root_page importer = PagesImporter('Atviras kodas', 'ak') importer.set_up(root, fixture('whole_export')) importer.import_all_items() importer.post_process() page = StandardPage.objects.get(url_path='/home/ak/knygos/') links = list(lxml.html.fromstring(page.body).xpath('//a/@href')) self.assertEqual(links[0], '/ak/knygos/nuo_win_prie_lin/') self.assertEqual(links, [ '/ak/knygos/nuo_win_prie_lin/', '/ak/knygos/nuo_win_prie_lin/', '/ak/knygos/AKrinkinys/', '/ak/knygos/AKrinkinys/', '/ak/knygos/linuxatmintine/', '/ak/knygos/linuxatmintine/', '/ak/knygos/openoffice/', '/ak/knygos/openoffice/', '/ak/knygos/openoffice_atmintine/', '/ak/knygos/openoffice_atmintine/', '/ak/knygos/IT_vadovelis/', '/ak/knygos/IT_vadovelis/', '/ak/knygos/linux_sistemos_administravimas/', '/ak/knygos/linux_sistemos_administravimas/', '/ak/knygos/php4_vadovas/', '/ak/knygos/php4_vadovas/', '/ak/knygos/mysql4_vadovas/', '/ak/knygos/mysql4_vadovas/', '/ak/knygos/kde_atmintine/', '/ak/knygos/kde_atmintine/', 'http://www.kde.org', '/ak/knygos/grafine_aplinka_kde/', '/ak/knygos/grafine_aplinka_kde/', '/ak/knygos/cathedral_and_bazaar/', '/ak/knygos/cathedral_and_bazaar/', ])
def test_document_import(self): root = get_default_site().root_page importer = PagesImporter('Skaitykla', 'skaitykla') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Check if Document instances are created. self.assertTrue( Document.objects.filter(title__in=( 'Kazarinas-Technologijos-ir-etika.odt', '2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt', '2004-06-02_Seimas_atviri_standartai.pdf', 'AKP_naudojimo_patirtis_AM.pdf', )).exists()) # Check if HTML is replaced as intended. def docid(title): return Document.objects.get(title=title).pk docids = [ docid('Kazarinas-Technologijos-ir-etika.odt'), docid('2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt'), docid('2004-06-02_Seimas_atviri_standartai.pdf'), docid('AKP_naudojimo_patirtis_AM.pdf'), ] page = StandardPage.objects.get(url_path='/home/skaitykla/pranesimai/') self.assertEqual(re.findall(r'<a\b[^>]+>', page.body), [ '<a href="http://www.vac.lt/seminaras/">', '<a href="http://www.mruni.lt/">', '<a id="%d" linktype="document">' % docids[0], '<a href="http://discovery.ot.lt/linma/">', '<a id="%d" linktype="document">' % docids[1], '<a href="http://www.lrs.lt/">', '<a href="http://www.lrs.lt/ivpk">', '<a href="http://www3.lrs.lt/pls/inter/ivpk_print.doc_view?key=234334">', '<a id="%d" linktype="document">' % docids[2], '<a id="%d" linktype="document">' % docids[3], ])
def handle(self, export_dir, *args, **options): verbosity = int(options['verbosity']) if not User.objects.filter(username='******').exists(): User.objects.create_superuser('admin', 'admin@localhost', 'admin') root = Page.objects.get(url_path='/') if not Page.objects.filter(url_path='/akl/').exists(): site_root = root.add_child(instance=IndexPage( title='AKL', slug='akl', )) site = Site.objects.get(is_default_site=True) site.root_page = site_root site.save() else: site_root = Page.objects.get(url_path='/akl/') manager = ImportManager(site_root, export_dir) manager.add_importers([ NewsImporter('Naujienos', 'naujienos', in_menu=False), PagesImporter('Atviras kodas', 'ak', in_menu=True), PagesImporter('Apie AKL', 'apie', in_menu=True), PagesImporter('Projektai', 'projektai', in_menu=True), PagesImporter('Skaitykla', 'skaitykla', in_menu=True), PagesImporter('Rėmėjai', 'remejai', in_menu=True), PagesImporter('Nuorodos', 'nuorodos', in_menu=True), PagesImporter('Balsavimas', 'balsavimas', in_menu=False), PagesImporter('Programos', 'programos', in_menu=False), PagesImporter('2004', '2004', in_menu=False), PagesImporter('2005', '2005', in_menu=False), PagesImporter('2006', '2006', in_menu=False), PagesImporter('2009', '2009', in_menu=False), PagesImporter('2010', '2010', in_menu=False), ]) if verbosity == 1: items = tqdm.tqdm(manager.iterate(), total=manager.get_total()) else: items = manager.iterate() n_created = 0 n_updated = 0 for importer, item in items: if verbosity > 1: self.stdout.write(str(item.path)) try: item = importer.import_item(item) except: self.stdout.write( ('\n\nError occured while importing {path} news file.' ).format(path=item.path)) raise if item.created: n_created += 1 else: n_updated += 1 self.stdout.write( ('Successfully imported {n_created} and updated {n_updated} ' 'items. Total {total} items processed.\n').format( n_created=n_created, n_updated=n_updated, total=(n_updated + n_created), )) pages = (p.specific for p in Page.objects.all()) if verbosity == 1: total = Page.objects.count() generator = tqdm.tqdm(convert_links(pages), total=total) else: generator = convert_links(pages) total = sum(1 for _ in generator) self.stdout.write( ('Successfully converted links in {total} pages.').format( total=total))
def setUp(self): root = get_default_site().root_page self.importer = PagesImporter('Atviras kodas', 'ak') self.importer.set_up(root, fixture('whole_export'))
class PagesImporterTests(TestCase): def setUp(self): root = get_default_site().root_page self.importer = PagesImporter('Atviras kodas', 'ak') self.importer.set_up(root, fixture('whole_export')) def test_get_parent_page(self): self.importer.path /= 'ak' path = self.importer.path / 'atviri_standartai' def url_paths(): return sorted( list(self.importer.root.get_descendants().values_list( 'url_path', flat=True))) # Test situation when parent page does not exist self.importer.get_parent_page(path / 'atviri_standartai.zpt') self.assertEqual(url_paths(), ['/home/ak/atviri_standartai/']) # Test situation when parent page exists self.importer.get_parent_page(path / 'atviri_standartai.zpt') self.assertEqual(url_paths(), ['/home/ak/atviri_standartai/']) def test_iterate_paths(self): base = fixture('whole_export') paths = self.importer.iterate_paths() rel_paths = sorted([str(p.path.relative_to(base)) for p in paths]) self.assertEqual(rel_paths, [ 'ak/atviri_standartai.html', 'ak/atviri_standartai/atviri_standartai.zpt', 'ak/dokumentacija.html', 'ak/dokumentacija/jabber.html', 'ak/dokumentacija/vertimas.html', 'ak/floss.html', 'ak/free-sw.html', 'ak/knygos.html', 'ak/knygos/nuo_win_prie_lin.html', 'ak/laisve.zpt', 'ak/licencijos/apie.html', 'ak/licencijos/copyleft.html', 'ak/licencijos/gpl.html', 'ak/licencijos/kategorijos.html', 'ak/licencijos/lgpl.html', 'ak/osd.html', 'ak/sekme.html', ]) def test_parse_metadata(self): item = ImportItem(path=self.importer.path) data = self.importer.parse_metadata(item) self.assertEqual(data, { 'slug': 'ak', 'date': None, 'title': 'atviras kodas', 'body': '', }) def test_import(self): self.importer.import_all_items() root = get_root_page() pages = (Page.objects.descendant_of(root).values_list( 'url_path', 'title')) self.assertEqual(sorted(pages), [ ('/home/ak/', 'Atviras kodas'), ('/home/ak/atviri_standartai/', 'Atviri standartai'), ('/home/ak/atviri_standartai/atviri_standartai/', 'Atviri standartai, protokolai, formatai. Kodėl Lietuvai jų reikia?' ), ('/home/ak/dokumentacija/', 'Dokumentacija'), ('/home/ak/dokumentacija/jabber/', 'Jabber pokalbių sistemos pradžiamokslis'), ('/home/ak/dokumentacija/vertimas/', 'Vertimo pradžiamokslis'), ('/home/ak/floss/', 'Laisvos, atviro kodo programos'), ('/home/ak/free-sw/', 'Laisvoji programinė įranga'), ('/home/ak/knygos/', 'Knygos'), ('/home/ak/knygos/nuo_win_prie_lin/', 'Nuo Windows prie Linux'), ('/home/ak/laisve/', 'Apie laisvę'), ('/home/ak/licencijos/', 'licencijos'), ('/home/ak/licencijos/apie/', 'Laisvųjų programų licencijavimas'), ('/home/ak/licencijos/copyleft/', 'Kas yra Copyleft?'), ('/home/ak/licencijos/gpl/', 'GNU viešoji licencija'), ('/home/ak/licencijos/kategorijos/', 'PĮ kategorijos'), ('/home/ak/licencijos/lgpl/', 'GNU laisvoji viešoji licencija'), ('/home/ak/osd/', 'Atvirojo kodo apibrėžimas'), ('/home/ak/sekme/', 'Sėkmės istorijos'), ])
class PagesImporterTests(TestCase): def setUp(self): root = get_default_site().root_page self.importer = PagesImporter('Atviras kodas', 'ak') self.importer.set_up(root, fixture('whole_export')) def test_get_parent_page(self): self.importer.path /= 'ak' path = self.importer.path / 'atviri_standartai' def url_paths(): return sorted(list( self.importer.root.get_descendants(). values_list('url_path', flat=True) )) # Test situation when parent page does not exist self.importer.get_parent_page(path / 'atviri_standartai.zpt') self.assertEqual(url_paths(), ['/home/ak/atviri_standartai/']) # Test situation when parent page exists self.importer.get_parent_page(path / 'atviri_standartai.zpt') self.assertEqual(url_paths(), ['/home/ak/atviri_standartai/']) def test_iterate_paths(self): base = fixture('whole_export') paths = self.importer.iterate_paths() rel_paths = sorted([str(p.path.relative_to(base)) for p in paths]) self.assertEqual(rel_paths, [ 'ak/atviri_standartai.html', 'ak/atviri_standartai/atviri_standartai.zpt', 'ak/dokumentacija.html', 'ak/dokumentacija/jabber.html', 'ak/dokumentacija/vertimas.html', 'ak/floss.html', 'ak/free-sw.html', 'ak/knygos.html', 'ak/knygos/nuo_win_prie_lin.html', 'ak/laisve.zpt', 'ak/licencijos/apie.html', 'ak/licencijos/copyleft.html', 'ak/licencijos/gpl.html', 'ak/licencijos/kategorijos.html', 'ak/licencijos/lgpl.html', 'ak/osd.html', 'ak/sekme.html', ]) def test_parse_metadata(self): item = ImportItem(path=self.importer.path) data = self.importer.parse_metadata(item) self.assertEqual(data, { 'slug': 'ak', 'date': None, 'title': 'atviras kodas', 'body': '', }) def test_import(self): self.importer.import_all_items() root = get_root_page() pages = ( Page.objects.descendant_of(root).values_list('url_path', 'title') ) self.assertEqual(sorted(pages), [ ('/home/ak/', 'Atviras kodas'), ('/home/ak/atviri_standartai/', 'Atviri standartai'), ('/home/ak/atviri_standartai/atviri_standartai/', 'Atviri standartai, protokolai, formatai. Kodėl Lietuvai jų reikia?'), ('/home/ak/dokumentacija/', 'Dokumentacija'), ('/home/ak/dokumentacija/jabber/', 'Jabber pokalbių sistemos pradžiamokslis'), ('/home/ak/dokumentacija/vertimas/', 'Vertimo pradžiamokslis'), ('/home/ak/floss/', 'Laisvos, atviro kodo programos'), ('/home/ak/free-sw/', 'Laisvoji programinė įranga'), ('/home/ak/knygos/', 'Knygos'), ('/home/ak/knygos/nuo_win_prie_lin/', 'Nuo Windows prie Linux'), ('/home/ak/laisve/', 'Apie laisvę'), ('/home/ak/licencijos/', 'licencijos'), ('/home/ak/licencijos/apie/', 'Laisvųjų programų licencijavimas'), ('/home/ak/licencijos/copyleft/', 'Kas yra Copyleft?'), ('/home/ak/licencijos/gpl/', 'GNU viešoji licencija'), ('/home/ak/licencijos/kategorijos/', 'PĮ kategorijos'), ('/home/ak/licencijos/lgpl/', 'GNU laisvoji viešoji licencija'), ('/home/ak/osd/', 'Atvirojo kodo apibrėžimas'), ('/home/ak/sekme/', 'Sėkmės istorijos'), ])