예제 #1
0
    def generateHtml (self, page):
        resultFileName = self.getHtmlPath()

        cache = self._getCacher (page, self._application)
        # Проверим, можно ли прочитать уже готовый HTML
        if (cache.canReadFromCache() and os.path.exists (resultFileName)) or page.readonly:
            try:
                return readTextFile (resultFileName)
            except IOError:
                MessageBox (_(u"Can't read file {}".format (resultFileName)),
                            _(u"Error"),
                            wx.ICON_ERROR | wx.OK)
                return u""

        style = Style()
        stylepath = style.getPageStyle (page)
        generator = self._getHtmlGenerator (page)

        try:
            html = generator.makeHtml(stylepath)
            cache.saveHash()
        except IOError:
            MessageBox (_(u"Can't create HTML file"),
                        _(u"Error"),
                        wx.ICON_ERROR | wx.OK)

        return html
예제 #2
0
    def testLinkToFilesHtml(self):
        """
        Тест на то, что ссылки на прикрепленные файлы изменяютcя.
        Проверка на HTML-странице
        """
        from export2html.exporterfactory import ExporterFactory

        pagename = u"Страница 1"

        exporter = ExporterFactory.getExporter(self.root[pagename])
        exporter.export(outdir=self.outputdir, exportname=pagename, imagesonly=True, alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, pagename + ".html"))

        self.assertTrue(u'<img src="{pagename}/add.png">'.format(pagename=pagename) in text)

        self.assertTrue(u'<img alt="Картинка" src="{pagename}/add.png" border="1">'.format(pagename=pagename) in text)

        self.assertTrue(u'<a href="{pagename}/wall1.gif">ссылка на файл</a>.'.format(pagename=pagename) in text)

        self.assertTrue(
            u'<a title="Это title" href="{pagename}/wall1.gif">ссылка на файл</a>.'.format(pagename=pagename) in text
        )

        self.assertTrue(
            u'<a href="{pagename}/wall1.gif" title="Это title">ссылка на файл</a>.'.format(pagename=pagename) in text
        )

        self.assertTrue(u"А этот __attach/ содержится в тексте" in text)

        self.assertFalse(u'<img src="__attach/add.png">' in text)
예제 #3
0
    def testPreprocessing_01(self):
        """
        Тест на работу препроцессинга
        """
        Application.wikiroot = self.wikiroot
        Application.selectedPage = self.wikiroot[u"HTML-страница"]
        Application.onPreprocessing += self._onPreProcessing

        pageView = Application.mainWindow.pagePanel.pageView

        # Сначала по умолчанию выбирается вкладка с просмотром
        wx.GetApp().Yield()

        # Переключимся на вкладку с кодом
        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.codeEditor.SetText(u"Абырвалг")

        # Переключимся на результирующий HTML
        pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX
        wx.GetApp().Yield()

        Application.onPreprocessing -= self._onPreProcessing

        result = readTextFile(
            os.path.join(self.wikiroot[u"HTML-страница"].path,
                         PAGE_RESULT_HTML))

        self.assertIn(u"Абырвалг 000", result)
예제 #4
0
    def testPreprocessing_01(self):
        """
        Тест на работу препроцессинга
        """
        Application.wikiroot = self.wikiroot
        Application.selectedPage = self.wikiroot[u"HTML-страница"]
        Application.onPreprocessing += self._onPreProcessing

        pageView = Application.mainWindow.pagePanel.pageView

        # Сначала по умолчанию выбирается вкладка с просмотром
        wx.GetApp().Yield()

        # Переключимся на вкладку с кодом
        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.codeEditor.SetText(u"Абырвалг")

        # Переключимся на результирующий HTML
        pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX
        wx.GetApp().Yield()

        Application.onPreprocessing -= self._onPreProcessing

        result = readTextFile(os.path.join(self.wikiroot[u"HTML-страница"].path, PAGE_RESULT_HTML))

        self.assertIn(u"Абырвалг 000", result)
예제 #5
0
    def testImproved1 (self):
        src = u"""<ul><li>Несортированный список. Элемент 1</li><li>Несортированный список. Элемент 2</li><li>Несортированный список. Элемент 3</li><ol><li>Вложенный сортированный список. Элемент 1</li><li>Вложенный сортированный список. Элемент 2</li><li>Вложенный сортированный список. Элемент 3</li><li>Вложенный сортированный список. Элемент 4</li><ul><li>Совсем вложенный сортированный список. Элемент 1</li><li>Совсем вложенный сортированный список. Элемент 2</li></ul><li>Вложенный сортированный список. Элемент 5</li></ol><ul><li>Вложенный несортированный список. Элемент 1</li></ul></ul>"""

        expectedResult = u"""<ul>
<li>Несортированный список. Элемент 1</li>
<li>Несортированный список. Элемент 2</li>
<li>Несортированный список. Элемент 3</li>
<ol>
<li>Вложенный сортированный список. Элемент 1</li>
<li>Вложенный сортированный список. Элемент 2</li>
<li>Вложенный сортированный список. Элемент 3</li>
<li>Вложенный сортированный список. Элемент 4</li>
<ul>
<li>Совсем вложенный сортированный список. Элемент 1</li>
<li>Совсем вложенный сортированный список. Элемент 2</li>
</ul>
<li>Вложенный сортированный список. Элемент 5</li>
</ol>
<ul>
<li>Вложенный несортированный список. Элемент 1</li>
</ul>
</ul>"""

        templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html")
        tpl = HtmlTemplate (readTextFile (templatepath).strip())

        result = tpl.substitute (BrHtmlImprover().run (src))
        self.assertIn (expectedResult, result)
예제 #6
0
    def testLinkToFilesWiki(self):
        """
        Тест на то, что ссылки на прикрепленные файлы изменяютcя.
        Проверка на вики-странице
        """
        from export2html.exporterfactory import ExporterFactory

        fullpagename = u"Типы страниц/wiki-страница"
        pagename = u"wiki-страница"

        exporter = ExporterFactory.getExporter(self.root[fullpagename])
        exporter.export(outdir=self.outputdir,
                        exportname=pagename,
                        imagesonly=True,
                        alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, pagename + ".html"))

        self.assertTrue(u'<img src="{pagename}/add.png"/>'.format(
            pagename=pagename) in text)
        self.assertTrue(
            u'<a href="{pagename}/wall1.gif">ссылка на файл</a>'.format(
                pagename=pagename) in text)
        self.assertTrue(u'А этот __attach/ содержится в тексте' in text)
        self.assertTrue(
            u'<a href="{pagename}/image.jpg"><img src="{pagename}/__thumb/th_maxsize_250_image.jpg"/></a>'
            .format(pagename=pagename) in text)
예제 #7
0
    def testImproved1(self):
        src = u"""<ul><li>Несортированный список. Элемент 1</li><li>Несортированный список. Элемент 2</li><li>Несортированный список. Элемент 3</li><ol><li>Вложенный сортированный список. Элемент 1</li><li>Вложенный сортированный список. Элемент 2</li><li>Вложенный сортированный список. Элемент 3</li><li>Вложенный сортированный список. Элемент 4</li><ul><li>Совсем вложенный сортированный список. Элемент 1</li><li>Совсем вложенный сортированный список. Элемент 2</li></ul><li>Вложенный сортированный список. Элемент 5</li></ol><ul><li>Вложенный несортированный список. Элемент 1</li></ul></ul>"""

        expectedResult = u"""<ul>
<li>Несортированный список. Элемент 1</li>
<li>Несортированный список. Элемент 2</li>
<li>Несортированный список. Элемент 3</li>
<ol>
<li>Вложенный сортированный список. Элемент 1</li>
<li>Вложенный сортированный список. Элемент 2</li>
<li>Вложенный сортированный список. Элемент 3</li>
<li>Вложенный сортированный список. Элемент 4</li>
<ul>
<li>Совсем вложенный сортированный список. Элемент 1</li>
<li>Совсем вложенный сортированный список. Элемент 2</li>
</ul>
<li>Вложенный сортированный список. Элемент 5</li>
</ol>
<ul>
<li>Вложенный несортированный список. Элемент 1</li>
</ul>
</ul>"""

        templatepath = os.path.join(getTemplatesDir(), "__default",
                                    "__style.html")
        tpl = HtmlTemplate(readTextFile(templatepath).strip())

        result = tpl.substitute(BrHtmlImprover().run(src))
        self.assertIn(expectedResult, result)
예제 #8
0
    def testLinkToPagesHtmlTitleNames(self):
        """
        Тест для проверки того, как исправляются ссылки на страницы
        """
        from export2html.titlenamegenerator import TitleNameGenerator
        from export2html.branchexporter import BranchExporter

        pagename = u"Страница 1"
        namegenerator = TitleNameGenerator(self.outputdir)
        branchExporter = BranchExporter(self.root[pagename], namegenerator, Application)

        branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, u"Страница 6.html"))

        self.assertTrue(u'<A HREF="/Типы страниц">/Типы страниц</A>' in text)

        self.assertTrue(
            u'<A HREF="Страница 2 (2).html">/Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>' in text
        )

        self.assertTrue(u'<A HREF="Страница 2 (2).html">Страница 7/Страница 2</A>' in text)

        self.assertTrue(u'<A HREF="Страница 2 (2).html">Еще одна ссылка</A>' in text)

        self.assertTrue(u'<A HREF="Страница 7.html">Страница 7</A>' in text)

        self.assertTrue(
            u'<A HREF="Страница 2 (2).html" title="бла-бла-бла">Ссылка на /Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>'
            in text
        )

        self.assertTrue(u'<A HREF="Страница 7.html" title="бла-бла-бла">Ссылка на Страницу 7</A>' in text)
예제 #9
0
    def testChangeFontSize (self):
        self.config.fontSize.value = 20
        content = u"бла-бла-бла"
        templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html")
        tpl = HtmlTemplate (readTextFile (templatepath).strip())
        result = tpl.substitute (content=content)

        self.assertIn (u"font-size:20pt;", result)
예제 #10
0
    def testChangeFontSize(self):
        self.config.fontSize.value = 20
        content = u"бла-бла-бла"
        templatepath = os.path.join(getTemplatesDir(), "__default",
                                    "__style.html")
        tpl = HtmlTemplate(readTextFile(templatepath).strip())
        result = tpl.substitute(content=content)

        self.assertIn(u"font-size:20pt;", result)
예제 #11
0
    def generateHtml (self, page):
        path = self.getHtmlPath ()

        if page.readonly and os.path.exists (path):
            # Если страница открыта только для чтения и html-файл уже существует, то покажем его
            return readTextFile (path)

        style = Style()
        stylepath = style.getPageStyle (page)

        try:
            tpl = HtmlTemplate (readTextFile (stylepath))
        except:
            MessageBox (_(u"Page style Error. Style by default is used"),
                        _(u"Error"),
                        wx.ICON_ERROR | wx.OK)

            tpl = HtmlTemplate (readTextFile (style.getDefaultStyle()))

        content = self._changeContentByEvent (self.page,
                                              PreprocessingParams (page.content),
                                              Application.onPreprocessing)

        if page.autoLineWrap:
            content = self._changeContentByEvent (self.page,
                                                  PreHtmlImprovingParams (content),
                                                  Application.onPreHtmlImproving)

            config = HtmlRenderConfig (Application.config)
            improverFactory = HtmlImproverFactory (Application)
            text = improverFactory[config.HTMLImprover.value].run (content)
        else:
            text = content

        userhead = u"<title>{}</title>".format (page.title)
        result = tpl.substitute (content = text,
                                 userhead = userhead)

        result = self._changeContentByEvent (self.page,
                                             PostprocessingParams (result),
                                             Application.onPostprocessing)
        return result
예제 #12
0
    def _loadCustomDict (self):
        """
        Load and show custom dictionary
        """
        self.customDict.SetValue (u'')
        try:
            text = readTextFile (self._getCustomDictFileName())
        except (IOError, SystemError):
            return

        self.customDict.SetValue (self._sanitizeDictText (text))
예제 #13
0
    def _loadCustomDict(self):
        """
        Load and show custom dictionary
        """
        self.customDict.SetValue(u'')
        try:
            text = readTextFile(self._getCustomDictFileName())
        except (IOError, SystemError):
            return

        self.customDict.SetValue(self._sanitizeDictText(text))
예제 #14
0
    def testChangeUserStyleRussian (self):
        style = u"p {background-color: maroon; /* Цвет фона под текстом параграфа */ color: white; /* Цвет текста */ }"

        self.config.userStyle.value = style

        content = u"бла-бла-бла"

        templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html")
        tpl = HtmlTemplate (readTextFile (templatepath).strip())
        result = tpl.substitute (content=content)

        self.assertTrue (style in result, result)
예제 #15
0
    def makeHtml (self, stylepath):
        parser = Parser()
        content = parser.convert (self.page.content)

        text = BrHtmlImprover().run (content)
        head = u""

        tpl = HtmlTemplate (readTextFile (stylepath))

        result = tpl.substitute (content=text, userhead=head)

        return result
예제 #16
0
    def testDefault (self):
        content = u"бла-бла-бла"
        result_right = ur"""<body>
бла-бла-бла
</body>
</html>"""

        templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html")
        tpl = HtmlTemplate (readTextFile (templatepath).strip())
        result = tpl.substitute (content=content)

        self.assertIn (result_right, result.replace ("\r\n", "\n"))
예제 #17
0
    def makeHtml(self, stylepath):
        parser = Parser()
        content = parser.convert(self.page.content)

        text = BrHtmlImprover().run(content)
        head = u""

        tpl = HtmlTemplate(readTextFile(stylepath))

        result = tpl.substitute(content=text, userhead=head)

        return result
예제 #18
0
    def generateHtml(self, page):
        path = self.getHtmlPath()

        if page.readonly and os.path.exists(path):
            # Если страница открыта только для чтения и html-файл уже существует, то покажем его
            return readTextFile(path)

        style = Style()
        stylepath = style.getPageStyle(page)

        try:
            tpl = HtmlTemplate(readTextFile(stylepath))
        except:
            MessageBox(_(u"Page style Error. Style by default is used"),
                       _(u"Error"), wx.ICON_ERROR | wx.OK)

            tpl = HtmlTemplate(readTextFile(style.getDefaultStyle()))

        content = self._changeContentByEvent(self.page,
                                             PreprocessingParams(page.content),
                                             Application.onPreprocessing)

        if page.autoLineWrap:
            content = self._changeContentByEvent(
                self.page, PreHtmlImprovingParams(content),
                Application.onPreHtmlImproving)

            config = HtmlRenderConfig(Application.config)
            improverFactory = HtmlImproverFactory(Application)
            text = improverFactory[config.HTMLImprover.value].run(content)
        else:
            text = content

        userhead = u"<title>{}</title>".format(page.title)
        result = tpl.substitute(content=text, userhead=userhead)

        result = self._changeContentByEvent(self.page,
                                            PostprocessingParams(result),
                                            Application.onPostprocessing)
        return result
예제 #19
0
    def testChangeUserStyleRussian(self):
        style = u"p {background-color: maroon; /* Цвет фона под текстом параграфа */ color: white; /* Цвет текста */ }"

        self.config.userStyle.value = style

        content = u"бла-бла-бла"

        templatepath = os.path.join(getTemplatesDir(), "__default",
                                    "__style.html")
        tpl = HtmlTemplate(readTextFile(templatepath).strip())
        result = tpl.substitute(content=content)

        self.assertTrue(style in result, result)
예제 #20
0
    def testDefault(self):
        content = u"бла-бла-бла"
        result_right = ur"""<body>
бла-бла-бла
</body>
</html>"""

        templatepath = os.path.join(getTemplatesDir(), "__default",
                                    "__style.html")
        tpl = HtmlTemplate(readTextFile(templatepath).strip())
        result = tpl.substitute(content=content)

        self.assertIn(result_right, result.replace("\r\n", "\n"))
예제 #21
0
    def testImproved2 (self):
        src = ur"""<h2>Attach links</h2>Attach:file.odt<br><a href="__attach/file.odt">file.odt</a><br><a href="__attach/file.odt">alternative text</a><br><a href="__attach/file with spaces.pdf">file with spaces.pdf</a><h2>Images</h2>"""

        expectedResult = ur"""<h2>Attach links</h2>
Attach:file.odt<br>
<a href="__attach/file.odt">file.odt</a><br>
<a href="__attach/file.odt">alternative text</a><br>
<a href="__attach/file with spaces.pdf">file with spaces.pdf</a>
<h2>Images</h2>"""

        templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html")
        tpl = HtmlTemplate (readTextFile (templatepath).strip())

        result = tpl.substitute (BrHtmlImprover().run (src))
        self.assertIn (expectedResult, result)
예제 #22
0
    def _updateHtmlCode (self):
        if self.htmlcodePageIndex == -1:
            # Нет вкладки с кодом HTML. Ничего не делаем
            return

        try:
            html = readTextFile (self.getHtmlPath())

            self.htmlCodeWindow.SetReadOnly (False)
            self.htmlCodeWindow.SetText (html)
            self.htmlCodeWindow.SetReadOnly (True)
        except IOError, e:
            MessageBox (_(u"Can't load file %s") % (unicode (e.filename)),
                        _(u"Error"),
                        wx.ICON_ERROR | wx.OK)
예제 #23
0
    def testImproved2(self):
        src = ur"""<h2>Attach links</h2>Attach:file.odt<br><a href="__attach/file.odt">file.odt</a><br><a href="__attach/file.odt">alternative text</a><br><a href="__attach/file with spaces.pdf">file with spaces.pdf</a><h2>Images</h2>"""

        expectedResult = ur"""<h2>Attach links</h2>
Attach:file.odt<br>
<a href="__attach/file.odt">file.odt</a><br>
<a href="__attach/file.odt">alternative text</a><br>
<a href="__attach/file with spaces.pdf">file with spaces.pdf</a>
<h2>Images</h2>"""

        templatepath = os.path.join(getTemplatesDir(), "__default",
                                    "__style.html")
        tpl = HtmlTemplate(readTextFile(templatepath).strip())

        result = tpl.substitute(BrHtmlImprover().run(src))
        self.assertIn(expectedResult, result)
예제 #24
0
    def testLinkToPageByProticolLongNames(self):
        """
        Тест на проверку того, что заменяются ссылки вида page://...
        """
        from export2html.longnamegenerator import LongNameGenerator
        from export2html.branchexporter import BranchExporter

        Application.wikiroot = self.root
        namegenerator = LongNameGenerator(self.root)
        branchExporter = BranchExporter(self.root, namegenerator, Application)

        branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, u"samplewiki_Страница 1.html"))

        self.assertIn(u'<a href="samplewiki_Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">', text)
예제 #25
0
    def testRelativeLinkTitleNames_02(self):
        """
        Тест на проверку того, что заменяются ссылки вида page://...
        """
        from export2html.titlenamegenerator import TitleNameGenerator
        from export2html.branchexporter import BranchExporter

        Application.wikiroot = self.root
        namegenerator = TitleNameGenerator(self.outputdir)
        branchExporter = BranchExporter(self.root, namegenerator, Application)

        branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, u"Страница 2 (2).html"))

        self.assertIn(u'<a href="Страница 7.html">', text)
예제 #26
0
    def testBranchContentTitleNames2(self):
        """
        Экспорт дерева с короткими именами
        """
        from export2html.titlenamegenerator import TitleNameGenerator
        from export2html.branchexporter import BranchExporter

        pagename = u"Страница 1"
        namegenerator = TitleNameGenerator(self.outputdir)
        branchExporter = BranchExporter(self.root[pagename], namegenerator, Application)

        branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, u"Страница 2 (2).html"))

        self.assertTrue(u'<img src="Страница 2 (2)/cd.png"/>' in text)
        self.assertTrue(u'<a href="Страница 2 (2)/cd_go.png">cd_go.png</a>' in text)
예제 #27
0
    def testLinkToPagesHtmlLongNames(self):
        """
        Тест для проверки того, как исправляются ссылки на страницы
        """
        from export2html.longnamegenerator import LongNameGenerator
        from export2html.branchexporter import BranchExporter

        pagename = u"Страница 1"
        namegenerator = LongNameGenerator(self.root[pagename])
        branchExporter = BranchExporter(self.root[pagename], namegenerator,
                                        Application)

        branchExporter.export(outdir=self.outputdir,
                              imagesonly=False,
                              alwaysOverwrite=False)

        text = readTextFile(
            os.path.join(self.outputdir,
                         u"Страница 1_Страница 2_Страница 6.html"))

        self.assertTrue(u'<A HREF="/Типы страниц">/Типы страниц</A>' in text)

        self.assertTrue(
            u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">/Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>'
            in text)

        self.assertTrue(
            u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">Страница 7/Страница 2</A>'
            in text)

        self.assertTrue(
            u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">Еще одна ссылка</A>'
            in text)

        self.assertTrue(
            u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7.html">Страница 7</A>'
            in text)

        self.assertTrue(
            u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html" title="бла-бла-бла">Ссылка на /Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>'
            in text)

        self.assertTrue(
            u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7.html" title="бла-бла-бла">Ссылка на Страницу 7</A>'
            in text)
예제 #28
0
    def testLinkToPageByProticolTitleNames_01(self):
        """
        Тест на проверку того, что заменяются ссылки вида page://...
        """
        from export2html.titlenamegenerator import TitleNameGenerator
        from export2html.branchexporter import BranchExporter

        Application.wikiroot = self.root
        namegenerator = TitleNameGenerator(self.outputdir)
        branchExporter = BranchExporter(self.root, namegenerator, Application)

        branchExporter.export(outdir=self.outputdir,
                              imagesonly=False,
                              alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, u"Страница 1.html"))

        self.assertIn(u'<a href="Страница 2 (2).html">', text)
예제 #29
0
    def testPostprocessing_02(self):
        """
        Тест на работу постпроцессинга
        """
        Application.wikiroot = self.wikiroot
        Application.selectedPage = self.wikiroot[u"HTML-страница"]
        Application.onPostprocessing += self._onPostProcessing

        pageView = Application.mainWindow.pagePanel.pageView

        # В начале по умолчанию выбирается вкладка с просмотром
        wx.GetApp().Yield()

        # Переключимся на вкладку с кодом
        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.codeEditor.SetText(u"Абырвалг")

        # Попереключаемся между вкладками
        pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        Application.onPostprocessing -= self._onPostProcessing

        result = readTextFile(
            os.path.join(self.wikiroot[u"HTML-страница"].path,
                         PAGE_RESULT_HTML))

        self.assertTrue(result.endswith(u" 111"))
        self.assertFalse(result.endswith(u" 111 111"))
예제 #30
0
    def testLinkToFilesHtml(self):
        """
        Тест на то, что ссылки на прикрепленные файлы изменяютcя.
        Проверка на HTML-странице
        """
        from export2html.exporterfactory import ExporterFactory

        pagename = u"Страница 1"

        exporter = ExporterFactory.getExporter(self.root[pagename])
        exporter.export(outdir=self.outputdir,
                        exportname=pagename,
                        imagesonly=True,
                        alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, pagename + ".html"))

        self.assertTrue(u'<img src="{pagename}/add.png">'.format(
            pagename=pagename) in text)

        self.assertTrue(
            u'<img alt="Картинка" src="{pagename}/add.png" border="1">'.format(
                pagename=pagename) in text)

        self.assertTrue(
            u'<a href="{pagename}/wall1.gif">ссылка на файл</a>.'.format(
                pagename=pagename) in text)

        self.assertTrue(
            u'<a title="Это title" href="{pagename}/wall1.gif">ссылка на файл</a>.'
            .format(pagename=pagename) in text)

        self.assertTrue(
            u'<a href="{pagename}/wall1.gif" title="Это title">ссылка на файл</a>.'
            .format(pagename=pagename) in text)

        self.assertTrue(u'А этот __attach/ содержится в тексте' in text)

        self.assertFalse(u'<img src="__attach/add.png">' in text)
예제 #31
0
    def testBranchContentTitleNames2(self):
        """
        Экспорт дерева с короткими именами
        """
        from export2html.titlenamegenerator import TitleNameGenerator
        from export2html.branchexporter import BranchExporter

        pagename = u"Страница 1"
        namegenerator = TitleNameGenerator(self.outputdir)
        branchExporter = BranchExporter(self.root[pagename], namegenerator,
                                        Application)

        branchExporter.export(outdir=self.outputdir,
                              imagesonly=False,
                              alwaysOverwrite=False)

        text = readTextFile(
            os.path.join(self.outputdir, u"Страница 2 (2).html"))

        self.assertTrue(u'<img src="Страница 2 (2)/cd.png"/>' in text)
        self.assertTrue(
            u'<a href="Страница 2 (2)/cd_go.png">cd_go.png</a>' in text)
예제 #32
0
    def testPostprocessing_02(self):
        """
        Тест на работу постпроцессинга
        """
        Application.wikiroot = self.wikiroot
        Application.selectedPage = self.wikiroot[u"HTML-страница"]
        Application.onPostprocessing += self._onPostProcessing

        pageView = Application.mainWindow.pagePanel.pageView

        # В начале по умолчанию выбирается вкладка с просмотром
        wx.GetApp().Yield()

        # Переключимся на вкладку с кодом
        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.codeEditor.SetText(u"Абырвалг")

        # Попереключаемся между вкладками
        pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX
        wx.GetApp().Yield()

        pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX
        wx.GetApp().Yield()

        Application.onPostprocessing -= self._onPostProcessing

        result = readTextFile(os.path.join(self.wikiroot[u"HTML-страница"].path, PAGE_RESULT_HTML))

        self.assertTrue(result.endswith(u" 111"))
        self.assertFalse(result.endswith(u" 111 111"))
예제 #33
0
    def testDownloading_css_url_02 (self):
        from webpage.downloader import Downloader, DownloadController

        template = u'url("{url}")'

        controller = DownloadController(self._tempDir, self._staticDirName)
        downloader = Downloader ()

        examplePath = u'../test/webpage/example1/'
        exampleHtmlPath = os.path.join (examplePath, u'example1.html')

        downloader.start (self._path2url (exampleHtmlPath), controller)

        fname2_text = readTextFile (os.path.join (self._tempDir,
                                                  self._staticDirName,
                                                  u'fname2.css'))

        self.assertIn (template.format (url = u'basic2.css'), fname2_text)
        self.assertIn (template.format (url = u'basic4.css'), fname2_text)
        self.assertIn (template.format (url = u'basic5.css'), fname2_text)
        self.assertIn (template.format (url = u'basic6.css'), fname2_text)
        self.assertIn ('basic3.css', fname2_text)
        self.assertIn ('basic5.css', fname2_text)
예제 #34
0
    def makeHtml (self, stylepath):
        # Get content
        content = (self.page.content
                   if self.page.content
                   else EmptyContent (Application.config).content)

        content = self._changeContentByEvent (self.page,
                                              PreprocessingParams (content),
                                              Application.onPreprocessing)

        # Create parser
        factory = ParserFactory ()
        parser = factory.make(self.page, Application.config)

        config = HtmlRenderConfig (Application.config)

        # Parse wiki content
        html = parser.toHtml (content)

        # Improve HTML
        html = self._changeContentByEvent (self.page,
                                           PreHtmlImprovingParams (html),
                                           Application.onPreHtmlImproving)

        improverFactory = HtmlImproverFactory (Application)
        text = improverFactory[config.HTMLImprover.value].run (html)
        head = parser.head

        # Create final HTML file
        tpl = HtmlTemplate (readTextFile (stylepath))
        result = tpl.substitute (content=text, userhead=head)

        result = self._changeContentByEvent (self.page,
                                             PostprocessingParams (result),
                                             Application.onPostprocessing)

        return result
예제 #35
0
    def testDownloading_css_url_01 (self):
        from webpage.downloader import Downloader, DownloadController

        template = u'url("{url}")'

        controller = DownloadController(self._tempDir, self._staticDirName)
        downloader = Downloader ()

        examplePath = u'../test/webpage/example1/'
        exampleHtmlPath = os.path.join (examplePath, u'example1.html')

        downloader.start (self._path2url (exampleHtmlPath), controller)

        fname1_text = readTextFile (os.path.join (self._tempDir,
                                                  self._staticDirName,
                                                  u'fname1.css'))

        self.assertIn (template.format (url = u'import1.css'), fname1_text)
        self.assertIn (template.format (url = u'back_img_01.png'), fname1_text)
        self.assertIn (template.format (url = u'back_img_02.png'), fname1_text)
        self.assertIn (template.format (url = u'back_img_03.png'), fname1_text)
        self.assertIn (template.format (url = u'back_img_04.png'), fname1_text)
        self.assertIn (template.format (url = u'back_img_05.png'), fname1_text)
        self.assertIn (template.format (url = u'back_img_06.png'), fname1_text)
예제 #36
0
    def makeHtml(self, stylepath):
        # Get content
        content = (self.page.content if self.page.content else EmptyContent(
            Application.config).content)

        content = self._changeContentByEvent(self.page,
                                             PreprocessingParams(content),
                                             Application.onPreprocessing)

        # Create parser
        factory = ParserFactory()
        parser = factory.make(self.page, Application.config)

        config = HtmlRenderConfig(Application.config)

        # Parse wiki content
        html = parser.toHtml(content)

        # Improve HTML
        html = self._changeContentByEvent(self.page,
                                          PreHtmlImprovingParams(html),
                                          Application.onPreHtmlImproving)

        improverFactory = HtmlImproverFactory(Application)
        text = improverFactory[config.HTMLImprover.value].run(html)
        head = parser.head

        # Create final HTML file
        tpl = HtmlTemplate(readTextFile(stylepath))
        result = tpl.substitute(content=text, userhead=head)

        result = self._changeContentByEvent(self.page,
                                            PostprocessingParams(result),
                                            Application.onPostprocessing)

        return result
예제 #37
0
    def testLinkToFilesWiki(self):
        """
        Тест на то, что ссылки на прикрепленные файлы изменяютcя.
        Проверка на вики-странице
        """
        from export2html.exporterfactory import ExporterFactory

        fullpagename = u"Типы страниц/wiki-страница"
        pagename = u"wiki-страница"

        exporter = ExporterFactory.getExporter(self.root[fullpagename])
        exporter.export(outdir=self.outputdir, exportname=pagename, imagesonly=True, alwaysOverwrite=False)

        text = readTextFile(os.path.join(self.outputdir, pagename + ".html"))

        self.assertTrue(u'<img src="{pagename}/add.png"/>'.format(pagename=pagename) in text)
        self.assertTrue(u'<a href="{pagename}/wall1.gif">ссылка на файл</a>'.format(pagename=pagename) in text)
        self.assertTrue(u"А этот __attach/ содержится в тексте" in text)
        self.assertTrue(
            u'<a href="{pagename}/image.jpg"><img src="{pagename}/__thumb/th_maxsize_250_image.jpg"/></a>'.format(
                pagename=pagename
            )
            in text
        )