def test_joinPath_normalize(self): from zope.traversing.api import joinPath path = u'/bla' args = ('foo', 'bar', '..', 'baz', 'bone') self.assertEqual(joinPath(path, *args), u'/bla/foo/baz/bone') path = u'bla' args = ('foo', 'bar', '.', 'baz', 'bone') self.assertEqual(joinPath(path, *args), u'bla/foo/bar/baz/bone') path = u'/' args = ('foo', 'bar', '.', 'baz', 'bone') self.assertEqual(joinPath(path, *args), u'/foo/bar/baz/bone')
def handleCut(self, action): if not len(self.selectedItems): self.status = self.cutNoItemsMessage return items = [] append = items.append for obj in self.selectedItems: mover = IObjectMover(obj) __name__ = api.getName(obj) if not mover.moveable(): m = {"name": __name__} if name: m["name"] = __name__ self.status = _( "Object '${name}' (${name}) cannot be moved", mapping=m) else: self.status = _("Object '${name}' cannot be moved", mapping=m) transaction.doom() return append(api.joinPath(api.getPath(self.context), __name__)) self.status = self.cutItemsSelected # store the requested operation in the principal annotations: self.clipboard.clearContents() self.clipboard.addItems('cut', items)
def cutObjects(self): """move objects specified in a list of object ids""" request = self.request ids = request.get('ids') if not ids: IStatusMessage(request).add( _("You didn't specify any ids to cut."), 'error') return container = self.context container_path = getPath(container) items = [] for id in ids: ob = container[id] mover = IObjectMover(ob) if not mover.moveable(): IStatusMessage(request).add( _("Object '${name}' cannot be moved", {"name": id}), 'error' ) return items.append(joinPath(container_path, id)) # store the requested operation in the principal annotations: clipboard = getPrincipalClipboard(request) clipboard.clearContents() clipboard.addItems('cut', items) IStatusMessage(request).add(_('Selected items has been cut.'))
def test_joinPath(self): from zope.traversing.api import joinPath path = u'/bla' args = ('foo', 'bar', 'baz', 'bone') self.assertEqual(joinPath(path, *args), u'/bla/foo/bar/baz/bone') path = u'bla' args = ('foo', 'bar', 'baz', 'bone') self.assertEqual(joinPath(path, *args), u'bla/foo/bar/baz/bone') path = u'bla' args = ('foo', 'bar/baz', 'bone') self.assertEqual(joinPath(path, *args), u'bla/foo/bar/baz/bone') path = u'bla/' args = ('foo', 'bar', 'baz', 'bone') self.assertRaises(ValueError, joinPath, path, *args)
def renderLink(self, topic): """Render a href element.""" title = translate(topic.title, context=self.request, default=topic.title) if topic.parentPath: url = joinPath(topic.parentPath, topic.id) else: url = topic.id return '<a href="/++help++/%s">%s</a>\n' % (url, title)
def isExpanded(self, topic): if topic.parentPath: path = joinPath(topic.parentPath, topic.id) else: path = topic.id try: if getPath(self.context).startswith('/' + path): return True except: # noqa: E722 do not use bare 'except' # TODO: fix it, functional test doesn't like getPath? ri pass return False
def copyObjects(self): """Copy objects specified in a list of object ids""" request = self.request ids = request.get('ids') if not ids: self.error = _("You didn't specify any ids to copy.") return container_path = getPath(self.context) # For each item, check that it can be copied; if so, save the # path of the object for later copying when a destination has # been selected; if not copyable, provide an error message # explaining that the object can't be copied. items = [] for id in ids: ob = self.context[id] copier = IObjectCopier(ob) if not copier.copyable(): m = {"name": id} title = getDCTitle(ob) if title: m["title"] = title self.error = _( "Object '${name}' (${title}) cannot be copied", mapping=m) else: self.error = _("Object '${name}' cannot be copied", mapping=m) return items.append(joinPath(container_path, id)) # store the requested operation in the principal annotations: clipboard = getPrincipalClipboard(self.request) clipboard.clearContents() clipboard.addItems('copy', items)
def cutObjects(self): """move objects specified in a list of object ids""" request = self.request ids = request.get('ids') if not ids: self.error = _("You didn't specify any ids to cut.") return container_path = getPath(self.context) # For each item, check that it can be moved; if so, save the # path of the object for later moving when a destination has # been selected; if not movable, provide an error message # explaining that the object can't be moved. items = [] for id in ids: ob = self.context[id] mover = IObjectMover(ob) if not mover.moveable(): m = {"name": id} title = getDCTitle(ob) if title: m["title"] = title self.error = _( "Object '${name}' (${title}) cannot be moved", mapping=m) else: self.error = _("Object '${name}' cannot be moved", mapping=m) return items.append(joinPath(container_path, id)) # store the requested operation in the principal annotations: clipboard = getPrincipalClipboard(self.request) clipboard.clearContents() clipboard.addItems('cut', items)
def test_joinPath_empty_args(self): from zope.traversing.api import joinPath path = 'abc' self.assertEqual(joinPath(path), u'abc')