Example #1
0
    def testInvalidWikiRoot2 (self):
        """
        Тест на обработку ошибки в файле __page.opt корня вики
        """
        def __createInvalidWiki2 ():
            # Здесь будет создаваться вики
            path = mkdtemp (prefix=u'Абырвалг абыр')
            removeDir (path)

            rootwiki = WikiDocument.create (path)

            factory = TextPageFactory()
            factory.create (rootwiki, u"Страница 1", [])
            factory.create (rootwiki[u"Страница 1"], u"Страница 2", [])

            # Испортим файл __page.opt
            with open (os.path.join (rootwiki.path, u"__page.opt"), "w") as fp:
                fp.write (u"[General]\naaa=xxx\n<<<<<<<<wsfsdf sdf sdfasdfdsf \nasfasdsadf")

            return path

        path = __createInvalidWiki2 ()
        WikiDocument.load (path)

        removeDir (path)
Example #2
0
    def testSubwikiParams (self):
        """
        Проверка того, что установка параметров страницы как полноценной вики не портит исходные параметры
        """
        param = StringOption (self.wikiroot["Страница 1"].params, "TestSection_1", "value1", "")
        param.value = "Значение 1"

        path = os.path.join (self.path, "Страница 1")
        subwiki = WikiDocument.load (path)

        subwikiparam = StringOption (subwiki.params, "TestSection_1", "value1", "")
        self.assertEqual (subwikiparam.value, "Значение 1")

        # Добавим новый параметр
        subwikiparam1 = StringOption (subwiki.params, "TestSection_1", "value1", "")
        subwikiparam2 = StringOption (subwiki.params, "TestSection_2", "value2", "")
        subwikiparam2.value = "Значение 2"

        self.assertEqual (subwikiparam1.value, "Значение 1")
        self.assertEqual (subwikiparam2.value, "Значение 2")

        # На всякий случай прочитаем вики еще раз
        wiki = WikiDocument.load (self.path)

        wikiparam1 = StringOption (wiki["Страница 1"].params, "TestSection_1", "value1", "")
        wikiparam2 = StringOption (wiki["Страница 1"].params, "TestSection_2", "value2", "")

        self.assertEqual (wikiparam1.value, "Значение 1")
        self.assertEqual (wikiparam2.value, "Значение 2")
Example #3
0
    def testPageSelectLoad (self):
        Application.onPageSelect += self.pageSelect

        removeWiki (self.path)

        rootwiki = WikiDocument.create (self.path)
        TextPageFactory.create (rootwiki, u"Страница 1", [])
        TextPageFactory.create (rootwiki, u"Страница 2", [])
        TextPageFactory.create (rootwiki[u"Страница 2"], u"Страница 3", [])

        document = WikiDocument.load (self.path)
        Application.wikiroot = document

        self.assertEqual (document.selectedPage, None)

        document.selectedPage = document[u"Страница 1"]
        
        self.assertEqual (document.selectedPage, document[u"Страница 1"])
        self.assertEqual (self.isPageSelect, True)
        self.assertEqual (self.pageSelectSender, document[u"Страница 1"])
        self.assertEqual (self.pageSelectCount, 1)

        document.selectedPage = document[u"Страница 2/Страница 3"]

        self.assertEqual (document.selectedPage, document[u"Страница 2/Страница 3"])
        self.assertEqual (self.isPageSelect, True)
        self.assertEqual (self.pageSelectSender, document[u"Страница 2/Страница 3"])
        self.assertEqual (self.pageSelectCount, 2)

        Application.onPageSelect -= self.pageSelect
Example #4
0
    def testChangeContent(self):
        from webpage.webnotepage import WebPageFactory

        wikiroot = WikiDocument.create(self.path)
        test_page = WebPageFactory().create(wikiroot, "Страница 1", [])
        test_page.content = "Абырвалг"

        self.application.wikiroot = wikiroot
        self.application.selectedPage = test_page

        pageview = self.application.mainWindow.pagePanel.pageView
        pageview.codeEditor.SetText("Бла-бла-бла")
        pageview.Save()

        self.application.selectedPage = None
        self.application.wikiroot = None

        wikiroot_other = WikiDocument.load(self.path)
        self.application.wikiroot = wikiroot_other
        self.application.selectedPage = wikiroot_other["Страница 1"]

        pageview = self.application.mainWindow.pagePanel.pageView
        pageContent = pageview.codeEditor.GetText()

        self.assertEqual(pageContent, "Бла-бла-бла")
Example #5
0
def __rootFormatErrorHandle(path, readonly):
    """
    Обработчик исключения outwiker.core.exceptions.RootFormatError
    """
    if readonly:
        # Если вики открыт только для чтения, то нельзя изменять файлы
        __canNotLoadWikiMessage(path)
        return

    if (__wantClearWikiOptions(path) != wx.YES):
        return

    # Обнулим файл __page.opt
    WikiDocument.clearConfigFile(path)

    # Попробуем открыть вики еще раз
    try:
        # Загрузить вики
        wikiroot = WikiDocument.load(os.path.realpath(path), readonly)
        Application.wikiroot = wikiroot
    except IOError:
        __canNotLoadWikiMessage(path)

    except outwiker.core.exceptions.RootFormatError:
        __canNotLoadWikiMessage(path)

    finally:
        pass
Example #6
0
    def testInvalidWikiRoot2 (self):
        """
        Тест на обработку ошибки в файле __page.opt корня вики
        """
        def __createInvalidWiki2 ():
            # Здесь будет создаваться вики
            path = u"../test/testwiki"
            removeWiki (path)

            rootwiki = WikiDocument.create (path)

            TextPageFactory.create (rootwiki, u"Страница 1", [])
            TextPageFactory.create (rootwiki[u"Страница 1"], u"Страница 2", [])

            # Испортим файл __page.opt
            with open (os.path.join (rootwiki.path, u"__page.opt"), "w") as fp:
                fp.write (u"[General]\naaa=xxx\n<<<<<<<<wsfsdf sdf sdfasdfdsf \nasfasdsadf")

            return path

        path = __createInvalidWiki2 ()
        self.assertRaises (RootFormatError, WikiDocument.load, path)

        # Сбросим файл __page.opt
        WikiDocument.clearConfigFile (path)

        # Теперь ошибок быть не должно
        WikiDocument.load (path)

        removeWiki (path)
Example #7
0
    def setUp (self):
        # Здесь будет создаваться вики
        self.path = mkdtemp (prefix=u'Абырвалг абыр')

        self._exampleStyleDir = u"../styles/example_jblog"
        self._exampleStyleDir2 = u"../styles/example_jnet"

        wiki = WikiDocument.create (self.path)

        factory = TextPageFactory()
        factory.create (wiki, u"Страница 1", [])
        factory.create (wiki, u"Страница 2", [])
        factory.create (wiki[u"Страница 2"], u"Страница 3", [])
        factory.create (wiki[u"Страница 2/Страница 3"], u"Страница 4", [])
        factory.create (wiki[u"Страница 1"], u"Страница 5", [])
        factory.create (wiki, u"страница 4", [])

        filesPath = u"../test/samplefiles/"
        files = [u"accept.png", u"add.png", u"anchor.png"]

        fullFilesPath = [os.path.join (filesPath, fname) for fname in files]

        Attachment (wiki[u"Страница 4"]).attach (fullFilesPath)
        Attachment (wiki[u"Страница 1/Страница 5"]).attach (fullFilesPath)

        self.wiki = WikiDocument.load (self.path, readonly=True)
Example #8
0
    def testLoad(self):
        path = u"../test/samplewiki"
        Application.onTreeUpdate += self.treeUpdate

        self.assertFalse(self.isTreeUpdate)
        WikiDocument.load(path)

        self.assertFalse(self.isTreeUpdate)
        self.assertEqual(self.treeUpdateSender, None)
        self.assertEqual(self.treeUpdateCount, 0)

        Application.onTreeUpdate -= self.treeUpdate
Example #9
0
    def testLoad_02 (self):
        path = u"../test/samplewiki"
        Application.getEvent ('onTreeUpdate').bind (self.treeUpdate)

        self.assertFalse(self.isTreeUpdate)
        WikiDocument.load (path)

        self.assertFalse (self.isTreeUpdate)
        self.assertEqual (self.treeUpdateSender, None)
        self.assertEqual (self.treeUpdateCount, 0)

        Application.getEvent ('onTreeUpdate').unbind (self.treeUpdate)
Example #10
0
    def testReadOnly (self):
        wikiReadOnly = WikiDocument.load (self.path, readonly=True)
        Application.wikiroot = wikiReadOnly

        Application.selectedPage = wikiReadOnly[u"Страница 1"]
        self._tabsController.cloneTab()
        self._tabsController.openInTab (wikiReadOnly[u"Страница 2"], True)
        self.assertEqual (self._tabsController.getTabsCount(), 3)

        # Загрузим вики еще раз, чтобы убедиться, что состояние вкладок мы не поменяли
        otherwiki = WikiDocument.load (self.path, readonly=True)
        Application.wikiroot = otherwiki
        self.assertEqual (self._tabsController.getTabsCount(), 1)
        self.assertEqual (Application.selectedPage, None)
Example #11
0
    def testSaveTabs5(self):
        wiki = WikiDocument.load(self.wikiroot.path)
        self.application.wikiroot = wiki

        self.application.selectedPage = wiki["Страница 1"]
        self._tabsController.cloneTab()
        self._tabsController.openInTab(wiki["Страница 2"], True)
        self.assertEqual(self._tabsController.getTabsCount(), 3)

        # Загрузим вики еще раз, чтобы убедиться, что состояние вкладок мы не поменяли
        otherwiki = WikiDocument.load(self.wikiroot.path)
        self.application.wikiroot = otherwiki
        self.assertEqual(self._tabsController.getTabsCount(), 3)
        self.assertEqual(self.application.selectedPage, otherwiki["Страница 2"])
Example #12
0
def createNewWiki(parentwnd):
    """
    Создать новую вики
    parentwnd - окно-владелец диалога выбора файла
    """
    dlg = TestedFileDialog(parentwnd, style=wx.FD_SAVE)

    newPageTitle = _(u"First Wiki Page")
    newPageContent = _(u"""!! First Wiki Page

This is the first page. You can use a text formatting: '''bold''', ''italic'', {+underlined text+}, [[https://jenyay.net | link]] and others.""")

    if dlg.ShowModal() == wx.ID_OK:
        try:
            from outwiker.pages.wiki.wikipage import WikiPageFactory

            newwiki = WikiDocument.create(dlg.GetPath())
            WikiPageFactory().create(newwiki, newPageTitle, [_(u"test")])
            firstPage = newwiki[newPageTitle]
            firstPage.content = newPageContent

            Application.wikiroot = newwiki
            Application.wikiroot.selectedPage = firstPage
        except (IOError, OSError) as e:
            # TODO: проверить под Windows
            showError(Application.mainWindow, _(u"Can't create wiki\n") + e.filename)

    dlg.Destroy()
Example #13
0
    def testLoadingOldVersion2(self):
        """
        Тест на чтение вики старой версии, когда еще не было параметра order
        """
        TextPageFactory().create(self.wikiroot, u"Страница 1", [])
        TextPageFactory().create(self.wikiroot, u"Страница 0", [])
        TextPageFactory().create(self.wikiroot, u"Страница 3", [])
        TextPageFactory().create(self.wikiroot, u"Страница 2", [])

        # Удалим параметры order
        IntegerOption(self.wikiroot[u"Страница 0"].params,
                      PageConfig.sectionName,
                      PageConfig.orderParamName, -1).remove_option()
        IntegerOption(self.wikiroot[u"Страница 1"].params,
                      PageConfig.sectionName,
                      PageConfig.orderParamName, -1).remove_option()
        IntegerOption(self.wikiroot[u"Страница 2"].params,
                      PageConfig.sectionName,
                      PageConfig.orderParamName, -1).remove_option()
        IntegerOption(self.wikiroot[u"Страница 3"].params,
                      PageConfig.sectionName,
                      PageConfig.orderParamName, -1).remove_option()

        wikiroot = WikiDocument.load(self.path)

        self.assertEqual(wikiroot[u"Страница 0"].order, 0)
        self.assertEqual(wikiroot[u"Страница 1"].order, 1)
        self.assertEqual(wikiroot[u"Страница 2"].order, 2)
        self.assertEqual(wikiroot[u"Страница 3"].order, 3)
Example #14
0
    def test_alias_readonly_01(self):
        newwiki = WikiDocument.load(self.path, readonly=True)
        page = newwiki[u'Страница 1']

        self.assertRaises(ReadonlyException,
                          self._changeAlias,
                          page, u'Тест')
Example #15
0
    def __createWiki (self):
        # Здесь будет создаваться вики
        self.path = mkdtemp (prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create (self.path)
        WikiPageFactory().create (self.wikiroot, u"Страница 2", [])
        self.testPage = self.wikiroot[u"Страница 2"]
Example #16
0
    def _createWiki(self):
        self.path = mkdtemp(prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        WikiPageFactory().create(self.wikiroot, u"Страница 1", [])
        self.testPage = self.wikiroot[u"Страница 1"]
Example #17
0
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix=u"Абырвалг абыр")

        self.wikiroot = WikiDocument.create(self.path)
        WikiPageFactory().create(self.wikiroot, u"Страница 2", [])
        self.testPage = self.wikiroot[u"Страница 2"]

        files = [
            u"accept.png",
            u"add.png",
            u"anchor.png",
            u"filename.tmp",
            u"файл с пробелами.tmp",
            u"картинка с пробелами.png",
            u"image.jpg",
            u"image.jpeg",
            u"image.png",
            u"image.tif",
            u"image.tiff",
            u"image.gif",
            u"image_01.JPG",
            u"dir",
            u"dir.xxx",
            u"dir.png",
        ]

        fullFilesPath = [os.path.join(self.filesPath, fname) for fname in files]

        self.attach_page2 = Attachment(self.wikiroot[u"Страница 2"])

        # Прикрепим к двум страницам файлы
        Attachment(self.testPage).attach(fullFilesPath)
Example #18
0
    def testReloading (self):
        attach = Attachment (self.page)
        attach.attach (self.fullFilesPath)

        self.wikiroot.selectedPage = self.page
        Application.wikiroot = self.wikiroot

        self.assertEqual (self.wnd.attachPanel.panel.attachList.GetItemCount(), len (self.fullFilesPath))

        # Создадим другую независимую вики
        newpath = u"../test/testwiki2"
        newwikiroot = WikiDocument.create (newpath)

        TextPageFactory.create (newwikiroot, u"Новая страница 1", [])
        TextPageFactory.create (newwikiroot, u"Новая страница 2", [])

        filesPath = u"../test/samplefiles/"
        newfiles = [u"accept.png", u"add.png", u"anchor.png"]
        newfullFilesPath = [os.path.join (filesPath, fname) for fname in newfiles]    

        newattach = Attachment (newwikiroot[u"Новая страница 1"])
        newattach.attach (newfullFilesPath)
        newwikiroot.selectedPage = newwikiroot[u"Новая страница 1"]

        Application.wikiroot = newwikiroot
        self.assertEqual (self.wnd.attachPanel.panel.attachList.GetItemCount(), len (newfullFilesPath))

        Application.wikiroot.selectedPage = None
        Application.wikiroot = None
        removeWiki (newpath)
Example #19
0
    def testAutoLineWrapRename (self):
        self.rootwiki[u"Страница 1"].autoLineWrap = False
        self.rootwiki[u"Страница 1"].title = u"Страница 666"
        self.assertFalse (self.rootwiki[u"Страница 666"].autoLineWrap)

        wiki = WikiDocument.load (self.path)
        self.assertFalse (wiki[u"Страница 666"].autoLineWrap)
Example #20
0
 def testEmptyContent (self):
     """
     Тест страницы без файла контента
     """
     wiki = WikiDocument.load (path)
     page = wiki[u"Страница без контента"]
     self.assertEqual (page.content, "")
Example #21
0
    def setUp(self):
        # Здесь будет создаваться вики
        self.path = u"../test/testwiki"
        removeWiki (self.path)
        self.eventcount = 0

        self.rootwiki = WikiDocument.create (self.path)

        TextPageFactory.create (self.rootwiki, u"Страница 1", [])
        TextPageFactory.create (self.rootwiki, u"Страница 2", [])
        TextPageFactory.create (self.rootwiki[u"Страница 2"], u"Страница 3", [])
        TextPageFactory.create (self.rootwiki[u"Страница 2/Страница 3"], u"Страница 4", [])
        TextPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 5", [])

        self.rootwiki[u"Страница 1"].content = u"1234567"
        self.rootwiki[u"Страница 2/Страница 3"].content = u"Абырвалг"
        self.rootwiki[u"Страница 2/Страница 3/Страница 4"].content = u"Тарам-пам-пам"
        self.rootwiki[u"Страница 1/Страница 5"].content = u"111111"

        self.rootwiki[u"Страница 1"].tags = [u"метка 1"]
        self.rootwiki[u"Страница 2/Страница 3"].tags = [u"метка 2", u"метка 3"]
        self.rootwiki[u"Страница 2/Страница 3/Страница 4"].tags = [u"метка 1", u"метка 2", u"метка 4"]

        self.rootwiki[u"Страница 2/Страница 3/Страница 4"].icon = "../test/images/feed.gif"

        self.icons = ["../test/images/icon.gif", 
                "../test/images/icon.png",
                "../test/images/icon.jpg",
                "../test/images/icon.ico"]

        Application.wikiroot = None
Example #22
0
    def __export (self,
                  page,
                  root,
                  outdir,
                  imagesonly,
                  alwaysOverwrite):
        """
        page - страница, начиная с которой надо начать экспортирование
        root - корневая страница, откуда началось общее экспортирование (для определения имени файлов)
        outdir - директория для экспорта
        imagesonly - из вложений оставлять только картинки?
        alwaysOverwrite - перезаписывать существующие файлы?
        """
        if page.getTypeString() != WikiDocument.getTypeString():
            try:
                exporter = ExporterFactory.getExporter (page)
                exportname = self.__nameGenerator.getName (page)
                self.__renames[page] = exportname

                exporter.export (outdir, exportname, imagesonly, alwaysOverwrite)
            except BaseException as error:
                self.__log.append (u"{0}: {1}".format (page.title, str(error)))

        for child in page.children:
            self.__export (
                child,
                root,
                outdir,
                imagesonly,
                alwaysOverwrite)
Example #23
0
    def testSelection5 (self):
        self.rootwiki.selectedPage = self.rootwiki[u"Страница 2/Страница 3"]
        self.rootwiki[u"Страница 2"].remove()

        wiki2 = WikiDocument.load (self.path)

        self.assertEqual (wiki2.selectedPage, None)
Example #24
0
    def setUp(self):
        # Количество срабатываний особытий при обновлении страницы
        self.treeUpdateCount = 0
        self.treeUpdateSender = None
        Application.wikiroot = None

        # Здесь будет создаваться вики
        self.path = mkdtemp (prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create (self.path)

        factory = TextPageFactory()
        factory.create (self.wikiroot, u"Страница 8", [])
        factory.create (self.wikiroot, u"Страница 2", [])
        factory.create (self.wikiroot, u"Страница 5", [])
        factory.create (self.wikiroot, u"Страница 4", [])
        factory.create (self.wikiroot, u"Страница 6", [])
        factory.create (self.wikiroot, u"Страница 1", [])
        factory.create (self.wikiroot, u"Страница 3", [])
        factory.create (self.wikiroot, u"Страница 7", [])

        self.wikiroot[u"Страница 8"].order = 0
        self.wikiroot[u"Страница 2"].order = 1
        self.wikiroot[u"Страница 5"].order = 2
        self.wikiroot[u"Страница 4"].order = 3
        self.wikiroot[u"Страница 6"].order = 4
        self.wikiroot[u"Страница 1"].order = 5
        self.wikiroot[u"Страница 3"].order = 6
        self.wikiroot[u"Страница 7"].order = 7
Example #25
0
 def testNotPage (self):
     """
     Тест папок, которые не являются страницами
     """
     wiki = WikiDocument.load (path)
     page = wiki[u"Просто папка"]
     self.assertEqual (page, None)
Example #26
0
 def threadFunc (path, readonly):
     try:
         return WikiDocument.load (path, readonly)
     except IOError as error:
         return error
     except outwiker.core.exceptions.RootFormatError as error:
         return error
Example #27
0
    def testRestoreReadonly_02(self):
        from sessions.sessioncontroller import SessionController

        wiki = WikiDocument.load(self.wikiroot.path, readonly=True)
        self.application.wikiroot = wiki
        self.application.selectedPage = wiki["Страница 1"]

        tabsController = self.application.mainWindow.tabsController
        tabsController.openInTab(wiki["Страница 2"], True)
        tabsController.openInTab(wiki["Страница 1/Страница 3/Страница 4"],
                                 True)
        tabsController.openInTab(wiki["Страница 1/Страница 3"], False)

        controller = SessionController(self.application)
        session = controller.getCurrentSession()

        tabsController.closeTab(1)
        tabsController.closeTab(1)
        tabsController.closeTab(1)

        controller.restore(session)

        self.assertEqual(os.path.abspath(self.application.wikiroot.path),
                         os.path.abspath(self.wikiroot.path))
        self.assertTrue(self.application.wikiroot.readonly)

        self.assertEqual(os.path.abspath(self.application.wikiroot.path),
                         os.path.abspath(self.wikiroot.path))
        self.assertEqual(tabsController.getTabsCount(), 4)
        self.assertEqual(tabsController.getSelection(), 2)

        self.assertEqual(tabsController.getPage(0).title, "Страница 1")
        self.assertEqual(tabsController.getPage(1).title, "Страница 2")
        self.assertEqual(tabsController.getPage(2).title, "Страница 4")
        self.assertEqual(tabsController.getPage(3).title, "Страница 3")
Example #28
0
    def testRestore_05(self):
        from sessions.sessioncontroller import SessionController

        self.__createWiki2()
        wiki2 = WikiDocument.load(self.path2, True)

        self.application.wikiroot = self.wikiroot
        self.application.selectedPage = self.wikiroot["Страница 1"]

        tabsController = self.application.mainWindow.tabsController
        tabsController.openInTab(self.wikiroot["Страница 2"], True)

        controller = SessionController(self.application)
        session = controller.getCurrentSession()

        uid1 = self._getPageLink(self.wikiroot["Страница 1"])
        uid2 = self._getPageLink(self.wikiroot["Страница 2"])

        self.application.wikiroot = wiki2
        self.assertEqual(tabsController.getTabsCount(), 1)

        controller.restore(session)

        self.assertEqual(os.path.abspath(self.application.wikiroot.path),
                         os.path.abspath(self.wikiroot.path))
        self.assertEqual(tabsController.getTabsCount(), 2)
        self.assertEqual(tabsController.getSelection(), 1)

        newsession = controller.getCurrentSession()
        self.assertEqual(newsession.pages[0], uid1)
        self.assertEqual(newsession.pages[1], uid2)
Example #29
0
    def testSaveSession_06(self):
        from sessions.sessionstorage import SessionStorage
        from sessions.sessioncontroller import SessionController

        tabsController = self.application.mainWindow.tabsController

        uid1 = self._getPageLink(self.wikiroot["Страница 1"])
        uid2 = self._getPageLink(self.wikiroot["Страница 2"])

        wiki = WikiDocument.load(self.wikiroot.path, True)
        self.application.wikiroot = wiki

        self.application.selectedPage = wiki["Страница 1"]
        tabsController.openInTab(wiki["Страница 2"], True)

        sessionName = "Имя сессии"
        controller = SessionController(self.application)
        session = controller.getCurrentSession()

        # Сохраним сессию дважды под одним и тем же именем
        SessionStorage(self.application.config).save(session, sessionName)
        SessionStorage(self.application.config).save(session, sessionName)

        otherStorage = SessionStorage(self.application.config)

        sessions = otherStorage.getSessions()

        self.assertEqual(len(sessions), 1)
        self.assertEqual(len(sessions[sessionName].pages), 2)
        self.assertEqual(sessions[sessionName].pages[0], uid1)
        self.assertEqual(sessions[sessionName].pages[1], uid2)
        self.assertEqual(sessions[sessionName].currentTab, 1)
        self.assertTrue(sessions[sessionName].readonly)
Example #30
0
    def setUp(self):
        # Здесь будет создаваться вики
        self.path = os.path.realpath (u"../test/testwiki")
        removeWiki (self.path)

        self.rootwiki = WikiDocument.create (self.path)

        # - Страница 1
        #   - # Страница 5
        #   - Страница 6
        # - Страница 2
        #   - Страница 3
        #     - # Страница 4
        WikiPageFactory.create (self.rootwiki, u"Страница 1", [])
        WikiPageFactory.create (self.rootwiki, u"Страница 2", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 2"], u"Страница 3", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 2/Страница 3"], u"# Страница 4", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"# Страница 5", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1"], u"Страница 6", [])
        WikiPageFactory.create (self.rootwiki[u"Страница 1/# Страница 5"], u"Страница 7", [])

        filesPath = u"../test/samplefiles/"
        self.files = [u"accept.png", u"add.png", u"anchor.png", u"файл с пробелами.tmp", u"dir"]
        self.fullFilesPath = [os.path.join (filesPath, fname) for fname in self.files]

        Attachment (self.rootwiki[u"Страница 1"]).attach (self.fullFilesPath)
        Attachment (self.rootwiki[u"Страница 1/# Страница 5"]).attach (self.fullFilesPath)

        Application.wikiroot = None
Example #31
0
    def testLoadContent(self):
        from webpage.webnotepage import WebPageFactory

        wikiroot = WikiDocument.create(self.path)
        test_page = WebPageFactory().create(wikiroot, "Страница 1", [])

        test_page.content = "Абырвалг"

        self.application.wikiroot = wikiroot
        self.application.selectedPage = test_page

        pageview = self.application.mainWindow.pagePanel.pageView
        pageContent = pageview.codeEditor.GetText()

        self.assertEqual(pageContent, "Абырвалг")
Example #32
0
        def __createInvalidWiki1():
            # Здесь будет создаваться вики
            path = mkdtemp(prefix='Абырвалг абыр')

            rootwiki = WikiDocument.create(path)

            factory = TextPageFactory()
            factory.create(rootwiki, "Страница 1", [])
            factory.create(rootwiki["Страница 1"], "Страница 2", [])

            # Испортим файл __page.opt
            with open(os.path.join(rootwiki.path, "__page.opt"), "w") as fp:
                fp.write("wsfsdf sdf sdfasdfdsf \nasfasdsadf")

            return path
Example #33
0
    def setUp(self):
        self.thumbmaker = PageThumbmaker()

        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = TextPageFactory()
        factory.create(self.wikiroot, u"Страница 1", [])
        factory.create(self.wikiroot, u"Страница 2", [])
        factory.create(self.wikiroot[u"Страница 2"], u"Страница 3", [])
        factory.create(self.wikiroot[u"Страница 2/Страница 3"], u"Страница 4",
                       [])
        factory.create(self.wikiroot[u"Страница 1"], u"Страница 5", [])
Example #34
0
    def testLoading3(self):
        TextPageFactory().create(self.wikiroot, "Страница 0", [])
        TextPageFactory().create(self.wikiroot, "Страница 1", [])
        TextPageFactory().create(self.wikiroot, "Страница 2", [])
        TextPageFactory().create(self.wikiroot, "Страница 3", [])

        self.wikiroot["Страница 0"].order += 1
        self.wikiroot["Страница 3"].order -= 1

        wikiroot = WikiDocument.load(self.path)

        self.assertEqual(wikiroot["Страница 1"].order, 0)
        self.assertEqual(wikiroot["Страница 0"].order, 1)
        self.assertEqual(wikiroot["Страница 3"].order, 2)
        self.assertEqual(wikiroot["Страница 2"].order, 3)
Example #35
0
    def testChangeContent(self):
        plugin = self.loader["TestPage"]

        wikiroot = WikiDocument.create(self.wikiroot.path)
        test_page = plugin.TestPageFactory().create(wikiroot, "Страница 1", [])
        test_page.content = "Абырвалг"

        self.application.wikiroot = wikiroot
        self.application.selectedPage = test_page

        pageview = self.application.mainWindow.pagePanel.pageView
        pageview.text.SetValue("Бла-бла-бла")

        self.application.selectedPage = None
        self.application.wikiroot = None

        wikiroot_other = WikiDocument.load(self.wikiroot.path)
        self.application.wikiroot = wikiroot_other
        self.application.selectedPage = wikiroot_other["Страница 1"]

        pageview = self.application.mainWindow.pagePanel.pageView
        pageContent = pageview.text.GetValue()

        self.assertEqual(pageContent, "Бла-бла-бла")
Example #36
0
    def testLoadSearchPage(self):
        GlobalSearch.create(self.wikiroot,
                            phrase="декабрь",
                            tags=["Метка 1", "Метка 2"],
                            strategy=AllTagsSearchStrategy)

        wiki = WikiDocument.load(self.path)
        page = wiki[GlobalSearch.pageTitle]

        self.assertNotEqual(page, None)
        self.assertEqual(page.phrase, "декабрь")
        self.assertEqual(len(page.searchTags), 2)
        self.assertTrue("Метка 1" in page.searchTags)
        self.assertTrue("Метка 2" in page.searchTags)
        self.assertEqual(page.strategy, AllTagsSearchStrategy)
Example #37
0
    def testInvalidWikiRoot1(self):
        """
        Тест на обработку ошибки в файле __page.opt корня вики
        """
        def __createInvalidWiki1():
            # Здесь будет создаваться вики
            path = mkdtemp(prefix='Абырвалг абыр')

            rootwiki = WikiDocument.create(path)

            factory = TextPageFactory()
            factory.create(rootwiki, "Страница 1", [])
            factory.create(rootwiki["Страница 1"], "Страница 2", [])

            # Испортим файл __page.opt
            with open(os.path.join(rootwiki.path, "__page.opt"), "w") as fp:
                fp.write("wsfsdf sdf sdfasdfdsf \nasfasdsadf")

            return path

        path = __createInvalidWiki1()
        WikiDocument.load(path)

        removeDir(path)
Example #38
0
    def testCreateEvent(self):
        Application.onTreeUpdate += self.treeUpdate
        Application.onPageCreate += self.pageCreate

        removeDir(self.path)

        self.assertFalse(self.isTreeUpdate)
        self.assertFalse(self.isPageUpdate)
        self.assertFalse(self.isPageCreate)

        # Создаем вики
        rootwiki = WikiDocument.create(self.path)

        self.assertFalse(self.isTreeUpdate)
        self.assertEqual(self.treeUpdateSender, None)

        Application.wikiroot = rootwiki

        # Создаем страницу верхнего уровня (не считая корня)
        self.isPageCreate = False
        self.pageCreateSender = None

        TextPageFactory().create(rootwiki, u"Страница 1", [])

        self.assertTrue(self.isPageCreate)
        self.assertEqual(self.pageCreateSender, rootwiki[u"Страница 1"])

        # Создаем еще одну страницу
        self.isPageCreate = False
        self.pageCreateSender = None

        TextPageFactory().create(rootwiki, u"Страница 2", [])

        self.assertTrue(self.isPageCreate)
        self.assertEqual(self.pageCreateSender, rootwiki[u"Страница 2"])

        # Создаем подстраницу
        self.isPageCreate = False
        self.pageCreateSender = None

        TextPageFactory().create(rootwiki[u"Страница 2"], u"Страница 3", [])

        self.assertTrue(self.isPageCreate)
        self.assertEqual(self.pageCreateSender,
                         rootwiki[u"Страница 2/Страница 3"])

        Application.onTreeUpdate -= self.treeUpdate
        Application.onPageCreate -= self.pageCreate
Example #39
0
    def testLoadContent(self):
        plugin = self.loader[u"TestPage"]

        wikiroot = WikiDocument.create(self.path)
        test_page = plugin.TestPageFactory().create(wikiroot, u"Страница 1",
                                                    [])

        test_page.content = u"Абырвалг"

        Application.wikiroot = wikiroot
        Application.selectedPage = test_page

        pageview = Application.mainWindow.pagePanel.pageView
        pageContent = pageview.text.GetValue()

        self.assertEqual(pageContent, u"Абырвалг")
Example #40
0
    def setUp(self):
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        WikiPageFactory().create(self.wikiroot, "Страница 1", [])
        self.testPage = self.wikiroot["Страница 1"]

        filesPath = "../test/samplefiles/"
        self.files = [
            "accept.png", "add.png", "first.jpg", "image.jpeg",
            "файл с пробелами.tmp"
        ]
        self.fullFilesPath = [
            os.path.join(filesPath, fname) for fname in self.files
        ]
Example #41
0
    def testCreateOrder8(self):
        TextPageFactory().create(self.wikiroot, "Плагины", [])
        TextPageFactory().create(self.wikiroot, "Абырвалг", [])
        TextPageFactory().create(self.wikiroot, "Тест", [])

        self.assertEqual(self.wikiroot["Плагины"].order, 0)
        self.assertEqual(self.wikiroot["Абырвалг"].order, 1)
        self.assertEqual(self.wikiroot["Тест"].order, 2)

        self.wikiroot["Абырвалг"].title = "Ррррр"

        wiki = WikiDocument.load(self.path)

        self.assertEqual(wiki["Плагины"].order, 0)
        self.assertEqual(wiki["Ррррр"].order, 1)
        self.assertEqual(wiki["Тест"].order, 2)
    def __createWiki(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = WikiPageFactory()
        factory.create(self.wikiroot, u"Страница 1", [])
        time.sleep(0.1)
        factory.create(self.wikiroot[u"Страница 1"], u"Страница 2", [])
        time.sleep(0.1)
        factory.create(self.wikiroot[u"Страница 1"], u"Страница 4", [])
        time.sleep(0.1)
        factory.create(self.wikiroot[u"Страница 1"], u"СТРАНИЦА 3", [])

        self.testPage = self.wikiroot[u"Страница 1"]
Example #43
0
    def setUp (self):
        self.path = mkdtemp (prefix=u'Абырвалг абыр')
        Application.wikiroot = None

        self.wikiroot = WikiDocument.create (self.path)

        factory = TextPageFactory()
        factory.create (self.wikiroot, u"Страница 1", [])
        factory.create (self.wikiroot, u"Страница 2", [])
        factory.create (self.wikiroot[u"Страница 2"], u"Страница 3", [])
        factory.create (self.wikiroot[u"Страница 2/Страница 3"], u"Страница 4", [])
        factory.create (self.wikiroot[u"Страница 1"], u"Страница 5", [])
        factory.create (self.wikiroot, u"Страница 6", [])

        self.pageRemoveCount = 0
        Application.wikiroot = None
Example #44
0
    def testTags(self):
        wiki = WikiDocument.load(self.path)
        self.assertTrue("метка 1" in wiki["Страница 1"].tags)
        self.assertEqual(len(wiki["Страница 1"].tags), 1)

        self.assertIn("метка 2", wiki["Страница 2/Страница 3"].tags)
        self.assertIn("метка 3", wiki["Страница 2/Страница 3"].tags)
        self.assertEqual(len(wiki["Страница 2/Страница 3"].tags), 2)

        self.assertIn("метка 1", wiki["Страница 2/Страница 3/Страница 4"].tags)

        self.assertIn("метка 2", wiki["Страница 2/Страница 3/Страница 4"].tags)

        self.assertIn("метка 4", wiki["Страница 2/Страница 3/Страница 4"].tags)

        self.assertEqual(len(wiki["Страница 2/Страница 3/Страница 4"].tags), 3)
Example #45
0
    def testSetPageParams(self):
        param = StringOption(self.wikiroot["Страница 1"].params,
                             "TestSection_1", "value1", "")
        param.value = "Значение 1"

        param2 = StringOption(self.wikiroot["Страница 1"].params,
                              "TestSection_1", "value1", "")
        self.assertEqual(param.value, "Значение 1")
        self.assertEqual(param2.value, "Значение 1")

        # Прочитаем вики и проверим установленный параметр
        wiki = WikiDocument.load(self.path)
        param3 = StringOption(wiki["Страница 1"].params, "TestSection_1",
                              "value1", "")

        self.assertEqual(param3.value, "Значение 1")
Example #46
0
    def setUp(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = TextPageFactory()
        factory.create(self.wikiroot, "page 1", ["Метка 1", "Метка 2"])
        factory.create(self.wikiroot, "Страница 2", ["Метка 1", "Метка 3"])
        factory.create(self.wikiroot["Страница 2"],
                       "Страница 3",
                       ["Метка 2"])
        factory.create(self.wikiroot["Страница 2/Страница 3"],
                       "Страница 4",
                       ["Метка 1"])
        factory.create(self.wikiroot["page 1"], "page 5", ["Метка 4"])
Example #47
0
    def setUp(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = TextPageFactory()
        factory.create(self.wikiroot, "Страница 1", [])
        factory.create(self.wikiroot, "Страница 2", [])
        factory.create(self.wikiroot["Страница 2"], "Страница 3", [])
        factory.create(self.wikiroot["Страница 2/Страница 3"],
                       "Страница 4",
                       [])
        factory.create(self.wikiroot["Страница 1"], "Страница 5", [])

        Application.wikiroot = None
Example #48
0
    def setUp(self):
        # Количество срабатываний особытий при обновлении страницы
        self.pageUpdateCount = 0
        self.pageUpdateSender = None

        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)
        Application.wikiroot = self.wikiroot

        factory = TextPageFactory()
        factory.create(self.wikiroot, "Страница 1", [])
        factory.create(self.wikiroot, "Страница 2", [])
        factory.create(self.wikiroot["Страница 2"], "Страница 3", [])
        factory.create(self.wikiroot["Страница 2/Страница 3"], "Страница 4", [])
        factory.create(self.wikiroot["Страница 1"], "Страница 5", [])
Example #49
0
    def setUp(self):
        # Здесь будет создаваться вики
        self.path = mkdtemp(prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = TextPageFactory()
        factory.create(self.wikiroot, u"Страница 1", [])
        factory.create(self.wikiroot, u"Страница 2", [])
        factory.create(self.wikiroot[u"Страница 2"], u"Страница 3", [])
        factory.create(self.wikiroot[u"Страница 2/Страница 3"], u"Страница 4",
                       [])
        factory.create(self.wikiroot[u"Страница 1"], u"Страница 5", [])

        self.bookmarkCount = 0
        self.bookmarkSender = None
        Application.wikiroot = None
Example #50
0
    def testSaveAfterMove(self):
        self.application.wikiroot = self.wikiroot
        self.application.selectedPage = self.wikiroot["Страница 1"]
        self._tabsController.cloneTab()
        self._tabsController.openInTab(self.wikiroot["Страница 2"], True)

        self.wikiroot["Страница 1"].moveTo(self.wikiroot["Страница 2"])

        otherwiki = WikiDocument.load(self.wikiroot.path)
        self.application.wikiroot = otherwiki
        self.assertEqual(self._tabsController.getTabsCount(), 3)
        self.assertEqual(self._tabsController.getPage(0),
                         otherwiki["Страница 2/Страница 1"])
        self.assertEqual(self._tabsController.getPage(1),
                         otherwiki["Страница 2/Страница 1"])
        self.assertEqual(self._tabsController.getPage(2),
                         otherwiki["Страница 2"])
Example #51
0
    def setUp(self):
        super().setUp()
        self._eventCount = 0
        self._period_ms = 50
        self._application = Application
        self._application.onAttachListChanged += self._onAttachListChanged

        # Path to path with files
        self._sample_path = 'testdata/samplefiles'

        # Path to wiki
        self.path = mkdtemp(prefix='OutWiker AttachWatcherTest Тесты')
        self.wikiroot = WikiDocument.create(self.path)
        self.page_01 = TextPageFactory().create(self.wikiroot, "Страница 1",
                                                [])
        self.page_02 = TextPageFactory().create(self.wikiroot, "Страница 2",
                                                [])
Example #52
0
    def setUp(self):
        self.outputdir = "../test/temp"
        self.pluginname = u"Export2Html"

        self.path = u"../test/samplewiki"
        self.root = WikiDocument.load(self.path)

        dirlist = [u"../plugins/export2html"]

        self.loader = PluginsLoader(Application)
        self.loader.load(dirlist)

        removeDir(self.outputdir)

        os.mkdir(self.outputdir)

        Application.wikiroot = None
Example #53
0
    def testManySearchPages2(self):
        TextPageFactory().create(self.wikiroot, '# Search', [])

        GlobalSearch.create(self.wikiroot,
                            phrase="декабрь",
                            tags=["Метка 1", "Метка 2"],
                            strategy=AllTagsSearchStrategy)

        wiki = WikiDocument.load(self.path)
        page = wiki['# Search' + " 2"]

        self.assertNotEqual(page, None)
        self.assertEqual(page.phrase, "декабрь")
        self.assertEqual(len(page.searchTags), 2)
        self.assertTrue("Метка 1" in page.searchTags)
        self.assertTrue("Метка 2" in page.searchTags)
        self.assertEqual(page.strategy, AllTagsSearchStrategy)
Example #54
0
    def setUp(self):
        self.path = mkdtemp(prefix='Абырвалг абыр')

        self.wikiroot = WikiDocument.create(self.path)

        factory = TextPageFactory()
        factory.create(self.wikiroot, "Страница 1", [])
        factory.create(self.wikiroot, "Страница 2", [])
        factory.create(self.wikiroot["Страница 2"], "Страница 3", [])
        factory.create(self.wikiroot["Страница 2/Страница 3"], "Страница 4",
                       [])
        factory.create(self.wikiroot["Страница 1"], "Страница 5", [])
        factory.create(self.wikiroot, "Страница 6", [])

        self.treeUpdateCount = 0
        self.eventSender = None

        Application.wikiroot = None
Example #55
0
    def testPageSelectCreateNoEvent(self):
        Application.onPageSelect += self.pageSelect

        removeDir(self.path)

        rootwiki = WikiDocument.create(self.path)
        TextPageFactory().create(rootwiki, u"Страница 1", [])
        TextPageFactory().create(rootwiki, u"Страница 2", [])
        TextPageFactory().create(rootwiki[u"Страница 2"], u"Страница 3", [])

        Application.wikiroot = rootwiki

        self.assertEqual(rootwiki.selectedPage, None)

        rootwiki.selectedPage = rootwiki[u"Страница 1"]

        self.assertEqual(rootwiki.selectedPage, rootwiki[u"Страница 1"])
        self.assertEqual(self.isPageSelect, True)
Example #56
0
    def testEmptyAttaches2(self):
        """
        Попытка прикрепления файлов к странице без папки __attach
        """
        filesPath = "testdata/samplefiles/"
        files = ["accept.png", "add.png", "anchor.png"]
        attaches = [os.path.join(filesPath, fname) for fname in files]

        wiki = WikiDocument.load(self.path)
        Attachment(wiki["Страница без аттачей"]).attach(attaches)

        self.assertEqual(
            len(Attachment(wiki["Страница без аттачей"]).attachmentFull), 3)

        # Удалим прикрепленные файлы
        attachPath = Attachment(wiki["Страница без аттачей"]).getAttachPath()
        shutil.rmtree(attachPath)
        wiki["Страница без аттачей"].datetime = self.defaultdate
Example #57
0
        def __createInvalidWiki2():
            # Здесь будет создаваться вики
            path = mkdtemp(prefix=u'Абырвалг абыр')
            removeDir(path)

            rootwiki = WikiDocument.create(path)

            factory = TextPageFactory()
            factory.create(rootwiki, u"Страница 1", [])
            factory.create(rootwiki[u"Страница 1"], u"Страница 2", [])

            # Испортим файл __page.opt
            with open(os.path.join(rootwiki.path, u"__page.opt"), "w") as fp:
                fp.write(
                    u"[General]\naaa=xxx\n<<<<<<<<wsfsdf sdf sdfasdfdsf \nasfasdsadf"
                )

            return path
Example #58
0
    def testCreate(self):
        from webpage.webnotepage import WebPageFactory, WebNotePage

        wikiroot = WikiDocument.create(self.path)
        test_page = WebPageFactory().create(wikiroot, "Страница 1", [])
        self.assertEqual(type(test_page), WebNotePage)

        self.assertEqual(
            type(FactorySelector.getFactory(WebNotePage.getTypeString())),
            WebPageFactory)

        self.loader.clear()
        self.assertEqual(type(FactorySelector.getFactory(WebNotePage.getTypeString())),
                         UnknownPageTypeFactory)

        self.loader.load(self.dirlist)

        self.assertEqual(type(FactorySelector.getFactory(WebNotePage.getTypeString())),
                         WebPageFactory)
Example #59
0
    def setUp (self):
        # Количество срабатываний особытий при обновлении страницы
        self.pageUpdateCount = 0
        self.pageUpdateSender = None

        # Здесь будет создаваться вики
        self.path = mkdtemp (prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create (self.path)

        TextPageFactory().create (self.wikiroot, u"Страница 1", [])
        self.page = self.wikiroot[u"Страница 1"]

        filesPath = u"../test/samplefiles/"
        self.files = [u"accept.png", u"add.png", u"anchor.png", u"файл с пробелами.tmp", u"dir"]
        self.fullFilesPath = [os.path.join (filesPath, fname) for fname in self.files]

        self.prev_kwargs = None
        Application.wikiroot = self.wikiroot
Example #60
0
    def __createWiki (self):
        # Здесь будет создаваться вики
        self.path = mkdtemp (prefix=u'Абырвалг абыр')

        self.wikiroot = WikiDocument.create (self.path)
        WikiPageFactory().create (self.wikiroot, u"Страница 2", [])
        self.testPage = self.wikiroot[u"Страница 2"]

        files = [u"accept.png", u"add.png", u"anchor.png", u"filename.tmp",
                 u"файл с пробелами.tmp", u"картинка с пробелами.png",
                 u"image.jpg", u"image.jpeg", u"image.png", u"image.tif", u"image.tiff", u"image.gif",
                 u"image_01.JPG", u"dir", u"dir.xxx", u"dir.png"]

        fullFilesPath = [os.path.join (self.filesPath, fname) for fname in files]

        self.attach_page2 = Attachment (self.wikiroot[u"Страница 2"])

        # Прикрепим к двум страницам файлы
        Attachment (self.testPage).attach (fullFilesPath)