def testParseSortDescendDate(self):
        files = [
            "add.png", "Anchor.png", "image2.png", "image.png", "add.png2",
            "файл с пробелами.tmp", "filename"
        ]

        fullFilesPath = [
            os.path.join("testdata/samplefiles/for_sort", fname)
            for fname in files
        ]

        attach = Attachment(self.testPage)
        attach.attach(fullFilesPath)

        os.utime(attach.getFullPath(files[3]), (1000000000, 1000000000))
        os.utime(attach.getFullPath(files[0]), (1000000000, 1100000000))
        os.utime(attach.getFullPath(files[2]), (1000000000, 1200000000))
        os.utime(attach.getFullPath(files[6]), (1000000000, 1300000000))
        os.utime(attach.getFullPath(files[4]), (1000000000, 1400000000))
        os.utime(attach.getFullPath(files[5]), (1000000000, 1500000000))
        os.utime(attach.getFullPath(files[1]), (1000000000, 1600000000))

        text = "(:attachlist sort=descenddate:)"
        result = self.parser.toHtml(text)

        names = [
            files[1], files[5], files[4], files[6], files[2], files[0],
            files[3]
        ]
        titles = names[:]

        self._compareResult(titles, names, result)
Beispiel #2
0
    def testSortByDateRelative (self):
        files = [u"add.png", u"Anchor.png",
                 u"image2.png", u"image.png",
                 u"add.png2", u"файл с пробелами.tmp",
                 u"filename"]

        fullFilesPath = [os.path.join (u"../test/samplefiles/for_sort", fname) for fname in files]


        attach = Attachment (self.page)
        attach.attach (fullFilesPath)

        files_list = attach.attachmentFull
        files_list.sort (Attachment.sortByName)

        os.utime (files_list[3], (1000000000, 1000000000))
        os.utime (files_list[0], (1000000000, 1100000000))
        os.utime (files_list[2], (1000000000, 1200000000))
        os.utime (files_list[6], (1000000000, 1300000000))
        os.utime (files_list[4], (1000000000, 1400000000))
        os.utime (files_list[5], (1000000000, 1500000000))
        os.utime (files_list[1], (1000000000, 1600000000))

        attach2 = Attachment (self.page)
        files_list2 = attach.getAttachRelative()
        files_list2.sort (attach2.sortByDateRelative)

        for n in range (1, len (files)):
            self.assertTrue (os.stat (attach2.getFullPath (files_list2[n - 1])).st_mtime <=
                             os.stat (attach2.getFullPath (files_list2[n])).st_mtime)
    def testParseSortDescendDate (self):
        files = [u"add.png", u"Anchor.png",
                 u"image2.png", u"image.png",
                 u"add.png2", u"файл с пробелами.tmp",
                 u"filename"]

        fullFilesPath = [os.path.join (u"../test/samplefiles/for_sort", fname) for fname in files]


        attach = Attachment (self.testPage)
        attach.attach (fullFilesPath)

        os.utime (attach.getFullPath (files[3]), (1000000000, 1000000000))
        os.utime (attach.getFullPath (files[0]), (1000000000, 1100000000))
        os.utime (attach.getFullPath (files[2]), (1000000000, 1200000000))
        os.utime (attach.getFullPath (files[6]), (1000000000, 1300000000))
        os.utime (attach.getFullPath (files[4]), (1000000000, 1400000000))
        os.utime (attach.getFullPath (files[5]), (1000000000, 1500000000))
        os.utime (attach.getFullPath (files[1]), (1000000000, 1600000000))

        text = u"(:attachlist sort=descenddate:)"
        result = self.parser.toHtml (text)

        names = [files[1], files[5], files[4], files[6], files[2], files[0], files[3]]
        titles = names[:]

        self._compareResult (titles, names, result)
Beispiel #4
0
    def testMoveInvalid (self):
        """
        А что, если кто-то блокирует папку с заметкой?
        """
        page = self.wiki[u"Страница 1"]
        attachname = u"add.png"

        attach = Attachment (page)
        attach.attach ([os.path.join (u"../test/samplefiles", attachname)])

        # Откроем на запись файл в папке с вложениями, чтобы нельзя было переместить папку
        with open (attach.getFullPath (u"lock.tmp", True), "w"):
            try:
                page.moveTo (self.wiki[u"Страница 2/Страница 3"])
            except TreeException:
                # Если не удалось переместить страницу
                self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1"], None)
                self.assertNotEqual (self.wiki[u"Страница 1"], None)
                self.assertEqual (len (self.wiki[u"Страница 2/Страница 3"]), 1)

                self.assertTrue (os.path.exists (page.path))
                self.assertFalse (os.path.exists (os.path.join (self.wiki[u"Страница 2/Страница 3"].path, u"Страница 1")))

                self.assertTrue (os.path.exists (attach.getFullPath (attachname)))
            else:
                # А если страницу переместить удалось, то проверим, что она действительно перенеслась
                self.assertEqual (self.wiki[u"Страница 1"], None)
                self.assertTrue (os.path.exists (os.path.join (self.wiki[u"Страница 2/Страница 3"].path, u"Страница 1")))

                self.assertEqual (len (self.wiki[u"Страница 2/Страница 3"]), 2)
                self.assertEqual (len (self.wiki), 3)
                self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1"].title, u"Страница 1")
                self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].title, u"Страница 5")
                self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1"].subpath, u"Страница 2/Страница 3/Страница 1")
                self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].subpath, u"Страница 2/Страница 3/Страница 1/Страница 5")
Beispiel #5
0
    def testMoveInvalid(self):
        """
        А что, если кто-то блокирует папку с заметкой?
        """
        page = self.wiki[u"Страница 1"]
        attachname = u"add.png"

        attach = Attachment(page)
        attach.attach([os.path.join(u"../test/samplefiles", attachname)])

        # Откроем на запись файл в папке с вложениями,
        # чтобы нельзя было переместить папку
        with open(attach.getFullPath(u"lock.tmp", True), "w"):
            try:
                page.moveTo(self.wiki[u"Страница 2/Страница 3"])
            except TreeException:
                # Если не удалось переместить страницу
                self.assertEqual(
                    self.wiki[u"Страница 2/Страница 3/Страница 1"],
                    None
                )
                self.assertNotEqual(self.wiki[u"Страница 1"], None)
                self.assertEqual(len(self.wiki[u"Страница 2/Страница 3"]), 1)

                self.assertTrue(os.path.exists(page.path))
                self.assertFalse(os.path.exists(
                    os.path.join(self.wiki[u"Страница 2/Страница 3"].path,
                                 u"Страница 1")))

                self.assertTrue(os.path.exists(attach.getFullPath(attachname)))
            else:
                # А если страницу переместить удалось, то проверим,
                # что она действительно перенеслась
                self.assertEqual(self.wiki[u"Страница 1"], None)
                self.assertTrue(
                    os.path.exists(
                        os.path.join(
                            self.wiki[u"Страница 2/Страница 3"].path,
                            u"Страница 1")
                    )
                )

                self.assertEqual(len(self.wiki[u"Страница 2/Страница 3"]), 2)
                self.assertEqual(len(self.wiki), 3)
                self.assertEqual(
                    self.wiki[u"Страница 2/Страница 3/Страница 1"].title,
                    u"Страница 1"
                )
                self.assertEqual(
                    self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].title,
                    u"Страница 5"
                )
                self.assertEqual(
                    self.wiki[u"Страница 2/Страница 3/Страница 1"].subpath,
                    u"Страница 2/Страница 3/Страница 1")
                self.assertEqual(
                    self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].subpath,
                    u"Страница 2/Страница 3/Страница 1/Страница 5")
    def testRemoveError2(self):
        page1 = self.wikiroot["Страница 2"]
        page2 = self.wikiroot["Страница 2/Страница 3"]

        pagepath = page1.path

        attach2 = Attachment(page2)
        attachname = "add.png"
        attach2.attach([os.path.join("../test/samplefiles", attachname)])

        with open(attach2.getFullPath("111.txt", True), "w"):
            try:
                page1.remove()
            except IOError:
                self.assertTrue(os.path.exists(pagepath))
                self.assertNotEqual(self.wikiroot["Страница 2"], None)
                self.assertTrue(
                    os.path.exists(self.wikiroot["Страница 2"].path)
                )
                self.assertEqual(len(self.wikiroot), 3)
                self.assertNotEqual(self.wikiroot["Страница 2/Страница 3"],
                                    None)
                self.assertNotEqual(
                    self.wikiroot["Страница 2/Страница 3/Страница 4"],
                    None)
            else:
                self.assertEqual(self.wikiroot["Страница 2"], None)
                self.assertFalse(os.path.exists(pagepath))
Beispiel #7
0
    def testRemoveError2(self):
        page1 = self.wikiroot["Страница 2"]
        page2 = self.wikiroot["Страница 2/Страница 3"]

        pagepath = page1.path

        attach2 = Attachment(page2)
        attachname = "add.png"
        attach2.attach([os.path.join("../test/samplefiles", attachname)])

        with open(attach2.getFullPath("111.txt", True), "w"):
            try:
                page1.remove()
            except IOError:
                self.assertTrue(os.path.exists(pagepath))
                self.assertNotEqual(self.wikiroot["Страница 2"], None)
                self.assertTrue(
                    os.path.exists(self.wikiroot["Страница 2"].path)
                )
                self.assertEqual(len(self.wikiroot), 3)
                self.assertNotEqual(self.wikiroot["Страница 2/Страница 3"],
                                    None)
                self.assertNotEqual(
                    self.wikiroot["Страница 2/Страница 3/Страница 4"],
                    None)
            else:
                self.assertEqual(self.wikiroot["Страница 2"], None)
                self.assertFalse(os.path.exists(pagepath))
Beispiel #8
0
    def test_attach_rename(self):
        self._application.wikiroot = self.wikiroot
        self._application.selectedPage = self.page_01
        self._attach_files(self.page_01, ['add.png'])

        attach = Attachment(self.page_01)
        src_fname = attach.getFullPath('add.png')
        dest_fname = attach.getFullPath('newname.png')

        watcher = AttachWatcher(self._application, self._period_ms)
        watcher.initialize()

        os.rename(src_fname, dest_fname)

        wx.MilliSleep(500)
        self.myYield()
        watcher.clear()
        self.assertEqual(self._eventCount, 1)
Beispiel #9
0
    def test_attach_rename(self):
        self._application.wikiroot = self.wikiroot
        self._application.selectedPage = self.page_01
        self._attach_files(self.page_01, ['add.png'])

        attach = Attachment(self.page_01)
        src_fname = attach.getFullPath('add.png')
        dest_fname = attach.getFullPath('newname.png')

        watcher = AttachWatcher(self._application, self._period_ms)
        watcher.initialize()

        os.rename(src_fname, dest_fname)

        wx.MilliSleep(500)
        self.myYield()
        watcher.clear()
        self.assertEqual(self._eventCount, 1)
Beispiel #10
0
    def testGetFullPath3 (self):
        attach = Attachment (self.page)
        fname = u"Имя файла.ext"

        path_full = attach.getFullPath (fname, create=True)
        path_right = os.path.join (attach.getAttachPath(), fname)

        self.assertTrue (os.path.exists (attach.getAttachPath()))
        self.assertEqual (path_full, path_right)
Beispiel #11
0
    def testSortBySizeRelative (self):
        files = [u"add.png", u"Anchor.png",
                 u"image2.png", u"image.png",
                 u"add.png2", u"файл с пробелами.tmp",
                 u"filename"]

        fullFilesPath = [os.path.join (u"../test/samplefiles/for_sort", fname) for fname in files]

        attach = Attachment (self.page)
        attach.attach (fullFilesPath)
        attach.attach ([os.path.join (u"../test/samplefiles", "dir")])

        attach2 = Attachment (self.page)
        files_list = attach2.getAttachRelative()
        files_list.sort (attach2.sortBySizeRelative)

        for n in range (1, len (files_list)):
            self.assertTrue (os.stat (attach2.getFullPath (files_list[n - 1])).st_size <=
                             os.stat (attach2.getFullPath (files_list[n])).st_size)
Beispiel #12
0
    def testRenameError (self):
        page = self.wikiroot[u"Страница 2"]
        attach = Attachment (page)

        with open (attach.getFullPath ("111.txt", True), "w"):
            try:
                page.title = u"Новое имя"
            except OSError:
                pass
            else:
                self.assertTrue (os.path.exists (self.wikiroot[u"Новое имя"].path))
                self.assertEqual (self.wikiroot[u"Страница 2"], None)
Beispiel #13
0
    def testRenameError(self):
        page = self.wikiroot[u"Страница 2"]
        attach = Attachment(page)

        with open(attach.getFullPath("111.txt", True), "w"):
            try:
                page.title = u"Новое имя"
            except OSError:
                pass
            else:
                self.assertTrue(
                    os.path.exists(self.wikiroot[u"Новое имя"].path))
                self.assertEqual(self.wikiroot[u"Страница 2"], None)
Beispiel #14
0
    def test_attach_touch_write(self):
        self._application.wikiroot = self.wikiroot
        self._application.selectedPage = self.page_01
        self._attach_files(self.page_01, ['add.png'])

        watcher = AttachWatcher(self._application, self._period_ms)
        watcher.initialize()

        attach = Attachment(self.page_01)
        with open(attach.getFullPath('add.png'), 'w'):
            pass

        wx.MilliSleep(500)
        self.myYield()
        watcher.clear()
        self.assertEqual(self._eventCount, 0)
Beispiel #15
0
    def test_attach_touch_write(self):
        self._application.wikiroot = self.wikiroot
        self._application.selectedPage = self.page_01
        self._attach_files(self.page_01, ['add.png'])

        watcher = AttachWatcher(self._application, self._period_ms)
        watcher.initialize()

        attach = Attachment(self.page_01)
        with open(attach.getFullPath('add.png'), 'w'):
            pass

        wx.MilliSleep(500)
        self.myYield()
        watcher.clear()
        self.assertEqual(self._eventCount, 0)
Beispiel #16
0
    def _prepareDialog(self):
        attach = Attachment(self._page)

        attachList = [self.createFileLink(fname)
                      for fname
                      in attach.getAttachRelative()
                      if (not fname.startswith(u'__') or
                          os.path.isfile(attach.getFullPath(fname)))]

        attachList.sort()
        self._dlg.linkText.AppendItems(attachList)

        if not self._dlg.comment:
            self._dlg.comment = self._selectedString

        if not self._dlg.link:
            self._dlg.link = self._findLink()
    def _prepareDialog(self):
        attach = Attachment(self._page)

        attachList = [
            self.createFileLink(fname) for fname in attach.getAttachRelative()
            if (not fname.startswith(u'__')
                or os.path.isfile(attach.getFullPath(fname)))
        ]

        attachList.sort()
        self._dlg.linkText.AppendItems(attachList)

        if not self._dlg.comment:
            self._dlg.comment = self._selectedString

        if not self._dlg.link:
            self._dlg.link = self._findLink()
Beispiel #18
0
    def testRemoveError1(self):
        page = self.rootwiki[u"Страница 2"]
        pagepath = page.path

        attach = Attachment(page)
        attachname = u"add.png"
        attach.attach([os.path.join(u"../test/samplefiles", attachname)])

        with open(attach.getFullPath("111.txt", True), "w") as fp:
            try:
                page.remove()
            except IOError:
                self.assertTrue(os.path.exists(pagepath))
                self.assertNotEqual(self.rootwiki[u"Страница 2"], None)
                self.assertTrue(os.path.exists(self.rootwiki[u"Страница 2"].path))
                self.assertEqual(len(self.rootwiki), 3)
                self.assertNotEqual(self.rootwiki[u"Страница 2/Страница 3"], None)
                self.assertNotEqual(self.rootwiki[u"Страница 2/Страница 3/Страница 4"], None)
            else:
                self.assertEqual(self.rootwiki[u"Страница 2"], None)
                self.assertFalse(os.path.exists(pagepath))
Beispiel #19
0
    def _prepareDialog(self):
        attach = Attachment(self._page)

        attachList = [
            self.createFileLink(fname) for fname in attach.getAttachRelative()
            if (not fname.startswith(u'__')
                or os.path.isfile(attach.getFullPath(fname)))
        ]

        attachList.sort()
        self._dlg.linkText.AppendItems(attachList)

        if not self._dlg.comment:
            self._dlg.comment = self._selectedString

        if not self._dlg.link:
            self._dlg.link = self._findLink()

        if self._isPageLink(self._dlg.link):
            prefix = 'page://'
            uid = self._dlg.link[len(prefix):]
            page = PageUidDepot(self._page.root)[uid]
            if page is not None and not self._selectedString:
                self._dlg.comment = page.display_title