Exemple #1
0
    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\'/>',
        ])
Exemple #2
0
 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
     ))
Exemple #3
0
 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)
Exemple #5
0
    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],
        ])
Exemple #7
0
    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/',
        ])
Exemple #8
0
    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'),
        ])
Exemple #12
0
 def setUp(self):
     root = get_default_site().root_page
     self.importer = PagesImporter('Atviras kodas', 'ak')
     self.importer.set_up(root, fixture('whole_export'))
Exemple #13
0
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'),
        ])