Ejemplo n.º 1
0
 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',
     ])
Ejemplo n.º 2
0
 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',
     ])
Ejemplo n.º 3
0
    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')
Ejemplo n.º 4
0
 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())
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
 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())
Ejemplo n.º 8
0
    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')
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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))
Ejemplo n.º 11
0
 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'])
Ejemplo n.º 12
0
    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'
        )
Ejemplo n.º 13
0
 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'])