def test_iter_news_files(self): importer = NewsImporter('Naujienos', 'naujienos') importer.path = importer.get_path(fixture('')) paths = importer.iterate_paths() self.assertEqual(sorted([p.path.name for p in paths]), [ 'naujiena_0001', 'naujiena_1016', ])
def test_parse_metadata(self): importer = NewsImporter('Naujienos', 'naujienos') importer.path = importer.get_path(fixture('')) items = importer.iterate_paths() data = map(importer.parse_metadata, items) data = sorted(map(shorten_values, data), key=itemgetter('slug')) eq = self.assertEqual eq(len(data), 2) eq( data[0], { 'date': datetime.date(2002, 10, 15), 'title': 'Konkursas', 'blurb': '<p>Vilniuje, dvi dienas ...', 'body': '<p>Vilniuje, dvi dienas ...', 'slug': 'naujiena_0001', }) eq(len(data[1]), 10) eq(data[1]['date'], datetime.date(2010, 3, 16)) eq(data[1]['email'], '*****@*****.**') eq(data[1]['profesionalams'], False) eq(data[1]['title'], 'Praktinis seminaras moky...') eq(data[1]['author'], 'Antanas') eq(data[1]['blurb'], '2010m. kovo 22 ir 26 die...') eq(data[1]['body'], '<p>2010m. kovo 22 ir 26 ...') eq(len(data[1]['categories']), 10) eq(data[1]['categories'][0], 'Biuro programos') eq(data[1]['categories'][1], 'OpenOffice') eq(data[1]['categories'][2], 'Interneto programos') eq(data[1]['categories'][3], 'Grafikos programos') eq(data[1]['categories'][4], 'Multimedia') eq(data[1]['categories'][5], 'Žaidimai ir pramogos') eq(data[1]['categories'][6], 'Laisva PĮ Lietuvoje') eq(data[1]['categories'][7], 'GNU/Linux OS') eq(data[1]['categories'][8], 'GNOME aplinka') eq(data[1]['categories'][9], 'Sėkmės istorijos') eq(len(data[1]['category_values']), 18) eq(data[1]['category_values'][0], 'Biuro programos') eq(data[1]['category_values'][1], 'OpenOffice') eq(data[1]['category_values'][2], 'Interneto programos') eq(data[1]['category_values'][3], 'Grafikos programos') eq(data[1]['category_values'][4], 'Multimedia') eq(data[1]['category_values'][5], 'Žaidimai ir pramogos') eq(data[1]['category_values'][6], 'Programavimas') eq(data[1]['category_values'][7], 'Laisva PĮ Lietuvoje') eq(data[1]['category_values'][8], 'Laisvi formatai ir standartai') eq(data[1]['category_values'][9], 'GNU/Linux OS') eq(data[1]['category_values'][10], 'GNU/Hurd OS') eq(data[1]['category_values'][11], 'FreeBSD OS') eq(data[1]['category_values'][12], 'OpenBSD OS') eq(data[1]['category_values'][13], 'GNOME aplinka') eq(data[1]['category_values'][14], 'KDE aplinka') eq(data[1]['category_values'][15], 'Grafinės aplinkos') eq(data[1]['category_values'][16], 'Sėkmės istorijos') eq(data[1]['category_values'][17], 'Patentai ir autorinės teisės')
def test_import_news_image(self): root = get_default_site().root_page importer = NewsImporter('Naujienos', 'naujienos') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() self.assertTrue(Image.objects.filter(title__in=( 'MS penguin', 'Programuokime smagiai su Scratch', )).exists())
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_duplicates(self): data = { 'date': datetime.date(2002, 10, 15), 'title': 'Konkursas', 'blurb': '<p>Vilniuje, dvi dienas ...', 'body': '<p>Vilniuje, dvi dienas ...', 'slug': 'naujiena_0001', } root = get_default_site().root_page importer = NewsImporter('Naujienos', 'naujienos') importer.root = importer.get_root_page(root) item = ImportItem(pathlib.PurePath()) inst_1, created_1 = importer.create_page(root, item, data) self.assertTrue(created_1) inst_2, created_2 = importer.create_page(root, item, data) self.assertFalse(created_2) self.assertEqual(inst_1.pk, inst_2.pk)
def test_import_news_image(self): root = get_default_site().root_page importer = NewsImporter('Naujienos', 'naujienos') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() self.assertTrue( Image.objects.filter(title__in=( 'MS penguin', 'Programuokime smagiai su Scratch', )).exists())
def test_manager(self): export_dir = fixture('') root = get_default_site().root_page manager = ImportManager(root, export_dir) manager.add_importers([NewsImporter('Naujienos', 'naujienos')]) for importer, item in manager.iterate(): importer.import_item(item) slugs = Page.objects.values_list('slug', flat=True) self.assertEqual(sorted(slugs), [ 'home', 'naujiena_0001', 'naujiena_1016', 'naujienos', 'root', ]) page = Page.objects.get(slug='naujiena_0001') self.assertEqual(page.title, 'Konkursas')
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 test_null_date(self): importer = NewsImporter('Naujienos', 'naujienos') path = fixture('null_date_naujiena/naujiena_0183') data = importer.parse_metadata(ImportItem(path=path)) self.assertIsNone(data['date'])
def test_parse_metadata(self): importer = NewsImporter('Naujienos', 'naujienos') importer.path = importer.get_path(fixture('')) items = importer.iterate_paths() data = map(importer.parse_metadata, items) data = sorted(map(shorten_values, data), key=itemgetter('slug')) eq = self.assertEqual eq(len(data), 2) eq(data[0], { 'date': datetime.date(2002, 10, 15), 'title': 'Konkursas', 'blurb': '<p>Vilniuje, dvi dienas ...', 'body': '<p>Vilniuje, dvi dienas ...', 'slug': 'naujiena_0001', }) eq(len(data[1]), 10) eq(data[1]['date'], datetime.date(2010, 3, 16)) eq(data[1]['email'], '*****@*****.**') eq(data[1]['profesionalams'], False) eq(data[1]['title'], 'Praktinis seminaras moky...') eq(data[1]['author'], 'Antanas') eq(data[1]['blurb'], '2010m. kovo 22 ir 26 die...') eq(data[1]['body'], '<p>2010m. kovo 22 ir 26 ...') eq(len(data[1]['categories']), 10) eq(data[1]['categories'][0], 'Biuro programos') eq(data[1]['categories'][1], 'OpenOffice') eq(data[1]['categories'][2], 'Interneto programos') eq(data[1]['categories'][3], 'Grafikos programos') eq(data[1]['categories'][4], 'Multimedia') eq(data[1]['categories'][5], 'Žaidimai ir pramogos') eq(data[1]['categories'][6], 'Laisva PĮ Lietuvoje') eq(data[1]['categories'][7], 'GNU/Linux OS') eq(data[1]['categories'][8], 'GNOME aplinka') eq(data[1]['categories'][9], 'Sėkmės istorijos') eq(len(data[1]['category_values']), 18) eq(data[1]['category_values'][0], 'Biuro programos') eq(data[1]['category_values'][1], 'OpenOffice') eq(data[1]['category_values'][2], 'Interneto programos') eq(data[1]['category_values'][3], 'Grafikos programos') eq(data[1]['category_values'][4], 'Multimedia') eq(data[1]['category_values'][5], 'Žaidimai ir pramogos') eq(data[1]['category_values'][6], 'Programavimas') eq(data[1]['category_values'][7], 'Laisva PĮ Lietuvoje') eq( data[1]['category_values'][8], 'Laisvi formatai ir standartai' ) eq(data[1]['category_values'][9], 'GNU/Linux OS') eq(data[1]['category_values'][10], 'GNU/Hurd OS') eq(data[1]['category_values'][11], 'FreeBSD OS') eq(data[1]['category_values'][12], 'OpenBSD OS') eq(data[1]['category_values'][13], 'GNOME aplinka') eq(data[1]['category_values'][14], 'KDE aplinka') eq(data[1]['category_values'][15], 'Grafinės aplinkos') eq(data[1]['category_values'][16], 'Sėkmės istorijos') eq( data[1]['category_values'][17], 'Patentai ir autorinės teisės' )