예제 #1
0
 def test_moveable(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     self.failUnless(mover.moveable())
예제 #2
0
 def test_copyfolderfromroot(self):
     root = self.rootFolder
     target = traverse(root, '/folder2')
     source = traverse(root, '/folder1')
     copier = IObjectCopier(source)
     copier.copyTo(target)
     self.assertTrue('folder1' in target)
예제 #3
0
 def test_movefolderfromroot(self):
     root = self.rootFolder
     target = traverse(root, '/folder2')
     source = traverse(root, '/folder1')
     mover = IObjectMover(source)
     mover.moveTo(target)
     self.assertTrue('folder1' in target)
예제 #4
0
 def test_movefoldertosibling(self):
     root = self.rootFolder
     target = traverse(root, '/folder2')
     source = traverse(root, '/folder1/folder1_1')
     mover = IObjectMover(source)
     mover.moveTo(target)
     self.failUnless('folder1_1' in target)
    def test_omitted_value(self):
        self.getRootFolder()['test'] = DatetimeTest()
        transaction.commit()

        # remember default values
        object = traverse(self.getRootFolder(), 'test')
        d1 = object.d1
        d2 = object.d2
        self.assert_(d2 is not None)
        d3 = object.d3

        # submit change with only d2 present -- note that required
        # field d1 is omitted, which should not cause a validation error
        response = self.publish('/test/edit.html',
                                form={
                                    'UPDATE_SUBMIT': '',
                                    'field.d2': ''
                                })
        self.assertEqual(response.getStatus(), 200)
        self.assert_(updatedMsgExists(response.getBody()))

        # check new value in object
        object = traverse(self.getRootFolder(), 'test')
        self.assertEqual(object.d1, d1)
        self.assert_(object.d2 is None)
        self.assertEqual(object.d3, d3)
예제 #6
0
 def test_movefolderfromroot2(self):
     root = self.rootFolder
     target = traverse(root, '/folder2/folder2_1/folder2_1_1')
     source = traverse(root, '/folder1')
     mover = IObjectMover(source)
     mover.moveTo(target)
     self.failUnless('folder1' in target)
예제 #7
0
 def test_copyable(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     self.failUnless(copier.copyable())
예제 #8
0
 def test_copyfolderfromroot2(self):
     root = self.rootFolder
     target = traverse(root, '/folder2/folder2_1/folder2_1_1')
     source = traverse(root, '/folder1')
     copier = IObjectCopier(source)
     copier.copyTo(target)
     self.failUnless('folder1' in target)
예제 #9
0
 def test_copyable(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     self.failUnless(copier.copyable())
예제 #10
0
    def __call__(self):
        """Create breadcrumbs for an interface object.

        The breadcrumbs are rooted at the code browser.
        """
        docroot = findAPIDocumentationRoot(self.context)
        codeModule = traverse(docroot, "Code")
        crumbs = [{
            'name': _('[top]'),
            'url': absoluteURL(codeModule, self.request)
        }]
        # We need the __module__ of the interface, not of a location proxy,
        # so we have to remove all proxies.
        iface = removeAllProxies(self.context)
        mod_names = iface.__module__.split('.')
        obj = codeModule
        for name in mod_names:
            try:
                obj = traverse(obj, name)
            except KeyError: # pragma: no cover
                # An unknown (root) module, such as logging
                continue
            crumbs.append({
                'name': name,
                'url': absoluteURL(obj, self.request)
            })
        crumbs.append({
            'name': iface.__name__,
            'url': absoluteURL(self.context, self.request)
        })
        return crumbs
예제 #11
0
 def test_movefolderfromroot2(self):
     root = self.rootFolder
     target = traverse(root, '/folder2/folder2_1/folder2_1_1')
     source = traverse(root, '/folder1')
     mover = IObjectMover(source)
     mover.moveTo(target)
     self.failUnless('folder1' in target)
예제 #12
0
 def test_copyfolderfromroot2(self):
     root = self.rootFolder
     target = traverse(root, '/folder2/folder2_1/folder2_1_1')
     source = traverse(root, '/folder1')
     copier = IObjectCopier(source)
     copier.copyTo(target)
     self.failUnless('folder1' in target)
예제 #13
0
    def test_omitted_value(self):
        self.getRootFolder()['test'] = TextTest()
        transaction.commit()

        # confirm default values
        object = traverse(self.getRootFolder(), 'test')
        self.assertEqual(object.s1, '')
        self.assertEqual(object.s2, u'foo')
        self.assert_(object.s3 is None)

        # submit change with only s2 present -- note that required
        # field s1 is omitted, which should not cause a validation error
        response = self.publish('/test/edit.html',
                                form={
                                    'UPDATE_SUBMIT': '',
                                    'field.s2': u'bar'
                                })
        self.assertEqual(response.getStatus(), 200)
        self.assert_(updatedMsgExists(response.getBody()))

        # check new values in object
        object = traverse(self.getRootFolder(), 'test')
        self.assertEqual(object.s1, '')
        self.assertEqual(object.s2, u'bar')
        self.assert_(object.s3 is None)
예제 #14
0
 def test_moveable(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     self.failUnless(mover.moveable())
예제 #15
0
 def test_movefoldertosibling(self):
     root = self.rootFolder
     target = traverse(root, '/folder2')
     source = traverse(root, '/folder1/folder1_1')
     mover = IObjectMover(source)
     mover.moveTo(target)
     self.failUnless('folder1_1' in target)
    def test_omitted_value(self):
        self.getRootFolder()['test'] = DecimalTest()
        transaction.commit()

        # confirm default values
        object = traverse(self.getRootFolder(), 'test')
        self.assert_(object.f1 is None)
        self.assertEqual(object.f2, decimal.Decimal("1.1"))
        self.assertEqual(object.f3, decimal.Decimal("2.1"))

        # submit change with only f2 present -- note that required
        # field f1 is omitted, which should not cause a validation error
        response = self.publish('/test/edit.html',
                                form={
                                    'UPDATE_SUBMIT': '',
                                    'field.f2': ''
                                })
        self.assertEqual(response.getStatus(), 200)
        self.assert_(updatedMsgExists(response.getBody()))

        # check new value in object
        object = traverse(self.getRootFolder(), 'test')
        self.assert_(object.f1 is None)
        self.assert_(object.f2 is None)
        self.assertEqual(object.f3, decimal.Decimal("2.1"))
예제 #17
0
 def test_copyableTo(self):
     #  A file should be copyable to a folder that has an
     #  object with the same id.
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     self.failUnless(copier.copyableTo(container, 'file1'))
예제 #18
0
 def test_copytosamewithnewname(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(container, 'file2')
     self.failUnless('file1' in container)
     self.failUnless('file2' in container)
예제 #19
0
 def test_movefoldertosame2(self):
     # Should be a noop, because "moving" to same location
     root = self.rootFolder
     target = traverse(root, '/folder1/folder1_1')
     source = traverse(root, '/folder1/folder1_1/folder1_1_1')
     mover = IObjectMover(source)
     mover.moveTo(target)
     self.failUnless('folder1_1_1' in target)
     self.assertEquals(len(target), 1)
예제 #20
0
 def test_movetosamewithnewname(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     mover.moveTo(container, 'file2')
     self.failIf('file1' in container)
     self.failUnless('file2' in container)
예제 #21
0
 def test_copytosame(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(container, 'file1')
     self.assertTrue('file1' in container)
     self.assertTrue('file1-2' in container)
예제 #22
0
 def test_movetosamewithnewname(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     mover.moveTo(container, 'file2')
     self.failIf('file1' in container)
     self.failUnless('file2' in container)
예제 #23
0
 def test_movefoldertosame2(self):
     # Should be a noop, because "moving" to same location
     root = self.rootFolder
     target = traverse(root, '/folder1/folder1_1')
     source = traverse(root, '/folder1/folder1_1/folder1_1_1')
     mover = IObjectMover(source)
     mover.moveTo(target)
     self.failUnless('folder1_1_1' in target)
     self.assertEquals(len(target), 1)
예제 #24
0
 def test_moveableTo(self):
     #  A file should be moveable to a folder that has an
     #  object with the same id.
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     self.assertTrue(mover.moveableTo(container, 'file1'))
예제 #25
0
 def test_copyableTo(self):
     #  A file should be copyable to a folder that has an
     #  object with the same id.
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     self.failUnless(copier.copyableTo(container, 'file1'))
예제 #26
0
 def test_copytosamewithnewname(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(container, 'file2')
     self.failUnless('file1' in container)
     self.failUnless('file2' in container)
예제 #27
0
 def test_movetootherwithnewname(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     mover.moveTo(target, 'file2')
     self.assertFalse('file1' in container)
     self.assertTrue('file2' in target)
예제 #28
0
 def test_movetoother(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     mover.moveTo(target, 'file1')
     self.failIf('file1' in container)
     self.failUnless('file1' in target)
예제 #29
0
 def test_copytootherwithnewname(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(target, 'file2')
     self.assertTrue('file1' in container)
     self.assertTrue('file2' in target)
예제 #30
0
 def test_movetoother(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     mover.moveTo(target, 'file1')
     self.failIf('file1' in container)
     self.failUnless('file1' in target)
예제 #31
0
 def test_movetosame(self):
     # Should be a noop, because "moving" to same location
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     mover.moveTo(container, 'file1')
     self.failUnless('file1' in container)
     self.assertEquals(len(container), 2)
예제 #32
0
 def test_movetosame(self):
     # Should be a noop, because "moving" to same location
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     file = traverse(root, 'folder1/file1')
     mover = IObjectMover(file)
     mover.moveTo(container, 'file1')
     self.failUnless('file1' in container)
     self.assertEquals(len(container), 2)
예제 #33
0
 def test_copytoother(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(target, 'file1')
     self.failUnless('file1' in container)
     self.failUnless('file1' in target)
예제 #34
0
 def test_copytoother(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(target, 'file1')
     self.failUnless('file1' in container)
     self.failUnless('file1' in target)
예제 #35
0
 def testCutFolder3(self):
     container = traverse(self.rootFolder, '/folder1/folder1_1')
     target = traverse(self.rootFolder, '/folder2/folder2_1')
     fc = self._TestView__newView(container)
     tg = self._TestView__newView(target)
     ids = ['folder1_1_1']
     fc.request.form['ids'] = ids
     fc.cutObjects()
     tg.pasteObjects()
     self.failIf('folder1_1_1' in container)
     self.failIf('folder1_1_1' not in target)
예제 #36
0
 def test_notify(self):
     for setup in (lambda: None), self.createRootFolder, self.createRFAndSM:
         setup()
     bootStrapSubscriber(EventStub(self.db))
     cx = self.db.open()
     root = cx.root()
     root_folder = root.get(ZopePublication.root_name, None)
     self.assertTrue(IRootFolder.providedBy(root_folder))
     package_name = '/++etc++site/default'
     traverse(root_folder, package_name)
     cx.close()
예제 #37
0
 def setPath(self):
     test_path = self.getPath()
     if test_path:
         try:
             api.traverse(self.context, 
                 '++resource++' + test_path, request=self.request)
         except LocationError:
             log.exception("Translation for requested language does "
                 "not exist")
             test_path = None
     return test_path or self.default_path
예제 #38
0
 def testCutFolder3(self):
     container = traverse(self.rootFolder, '/folder1/folder1_1')
     target = traverse(self.rootFolder, '/folder2/folder2_1')
     fc = self._TestView__newView(container)
     tg = self._TestView__newView(target)
     ids = ['folder1_1_1']
     fc.request.form['ids'] = ids
     fc.cutObjects()
     tg.pasteObjects()
     self.failIf('folder1_1_1' in container)
     self.failIf('folder1_1_1' not in target)
예제 #39
0
 def setPath(self):
     test_path = self.getPath()
     if test_path:
         try:
             api.traverse(self.context,
                          '++resource++' + test_path,
                          request=self.request)
         except LocationError:
             log.exception("Translation for requested language does "
                           "not exist")
             test_path = None
     return test_path or self.default_path
예제 #40
0
 def test_copytootherwithnamecollision(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     target['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(target, 'file1')
     # we do it twice, just to test auto-name generation
     copier.copyTo(target, 'file1')
     self.failUnless('file1' in container)
     self.failUnless('file1' in target)
     self.failUnless('file1-2' in target)
     self.failUnless('file1-3' in target)
예제 #41
0
 def hasClipboardContents(self):
     """Interogate the ``PrinicipalAnnotation`` to see if clipboard
     contents exist."""
     if not self.isPasteable:
         return False
     # touch at least one item in clipboard to confirm contents
     items = self.clipboard.getContents()
     for item in items:
         try:
             api.traverse(self.context, item['target'])
         except TraversalError:
             pass
         else:
             return True
     return False
예제 #42
0
 def test_copytootherwithnamecollision(self):
     root = self.rootFolder
     container = traverse(root, 'folder1')
     container['file1'] = File()
     target = traverse(root, 'folder2')
     target['file1'] = File()
     file = traverse(root, 'folder1/file1')
     copier = IObjectCopier(file)
     copier.copyTo(target, 'file1')
     # we do it twice, just to test auto-name generation
     copier.copyTo(target, 'file1')
     self.failUnless('file1' in container)
     self.failUnless('file1' in target)
     self.failUnless('file1-2' in target)
     self.failUnless('file1-3' in target)
예제 #43
0
 def icon(self):
     if self._icon is None:
         return None
     icon = self._icon
     if (callable(icon)):
         icon = icon()
     return traverse(self.context, icon, icon, self.request)
예제 #44
0
    def children_utility(self, container):
        """Return an XML document that contains the children of an object."""
        result = []

        keys = list(container.keys())

        # include the site manager
        keys.append(u'++etc++site')

        # dont get children if we get more than 1000 objects
        if len(keys)>=1000:
            keys = [u'++etc++site']

        for name in keys:

            # Only include items we can traverse to
            item = traverse(container, name, None)
            if item is None:
                continue

            iconUrl = self.getIconUrl(item)
            item_len = self.getLengthOf(item)
            if item_len >= 0:
                result.append(xmlEscape(
                    u'<collection name=%s length=%s icon_url=%s/>',
                    name, item_len, iconUrl))
            else:
                result.append(xmlEscape(
                    u'<item name=%s icon_url=%s/>',
                    name, iconUrl))

        return u' '.join(result)
예제 #45
0
    def setUp(self):
        setup.placefulSetUp()
        self.rootFolder = setup.buildSampleFolderTree()
        gsm = getGlobalSiteManager()
        de_catalog = MessageCatalog("de", "default")
        de_catalog.setMessage("short_greeting", "Hallo!", 10)
        de_catalog.setMessage("long_greeting", "Guten Tag!", 10)

        # register global translation domain and add the catalog.
        domain = GlobalTranslationDomain("default")
        domain.addCatalog(de_catalog)
        gsm.registerUtility(domain, ITranslationDomain, "default")

        # create a local site manager and add a local translation domain
        td = TranslationDomain()
        td.domain = "default"
        de_catalog = MessageCatalog("de", "default")
        de_catalog.setMessage("short_greeting", "Hallo Welt!", 10)
        td["de-default-1"] = de_catalog

        mgr = setup.createSiteManager(traverse(self.rootFolder, "folder1"))
        setup.addUtility(mgr, "default", interfaces.ILocalTranslationDomain, td)

        self.trans1 = td
        self.trans = domain
예제 #46
0
 def icon(self):
     if self._icon is None:
         return None
     icon = self._icon
     if (callable(icon)):
         icon = icon()
     return traverse(self.context, icon, icon, self.request)
예제 #47
0
 def getResources(self):
     resources = []
     append = resources.append
     for path in self._paths:
         append(api.traverse(self.context, '++resource++' + path,
             request=self.request))
     return resources
예제 #48
0
    def setUp(self):
        psetup = PlacefulSetup()
        self.sm = psetup.setUp(True, True)
        self.rootFolder = psetup.rootFolder
        setUpSiteManagerLookup()

        import zope.i18n.interfaces
        import zope.i18n.negotiator
        provideUtility(zope.i18n.negotiator.negotiator,
                       zope.i18n.interfaces.INegotiator)

        gsm = getGlobalSiteManager()
        de_catalog = MessageCatalog('de', 'default')
        de_catalog.setMessage('short_greeting', 'Hallo!', 10)
        de_catalog.setMessage('long_greeting', 'Guten Tag!', 10)

        # register global translation domain and add the catalog.
        domain = GlobalTranslationDomain('default')
        domain.addCatalog(de_catalog)
        gsm.registerUtility(domain, ITranslationDomain, 'default')

        # create a local site manager and add a local translation domain
        td = TranslationDomain()
        td.domain = 'default'
        de_catalog = MessageCatalog('de', 'default')
        de_catalog.setMessage('short_greeting', 'Hallo Welt!', 10)
        td['de-default-1'] = de_catalog

        mgr = createSiteManager(traverse(self.rootFolder, 'folder1'))
        mgr['default']['default'] = td
        mgr.registerUtility(mgr['default']['default'], ITranslationDomain,
                            'default')

        self.trans1 = td
        self.trans = domain
예제 #49
0
    def test_alternative_missing_value(self):
        """Tests the addition of an empty value at the top of the dropdown
        that, when selected, updates the field with field.missing_value.
        """

        self.getRootFolder()['test'] = IntTest2()  # note alt. class
        transaction.commit()

        # display edit form
        response = self.publish('/test/edit.html')
        self.assertEqual(response.getStatus(), 200)

        # confirm that i1 is has a blank item at top with value=""
        self.assert_(
            patternExists('<select id="field.i1" name="field.i1" .*>',
                          response.getBody()))
        self.assert_(
            patternExists('<option value="">.*</option>', response.getBody()))
        self.assert_(
            patternExists('<option selected="selected" value="10">10</option>',
                          response.getBody()))

        # submit form as if top item is selected
        response = self.publish('/test/edit.html',
                                form={
                                    'UPDATE_SUBMIT': '',
                                    'field.i1-empty-marker': '1'
                                })

        self.assertEqual(response.getStatus(), 200)
        self.assert_(updatedMsgExists(response.getBody()))

        # confirm new value is -1 -- i1.missing_value
        object = traverse(self.getRootFolder(), 'test')
        self.assertEqual(object.i1, -1)
예제 #50
0
    def pasteable(self):
        """Decide if there is anything to paste
        """
        target = self.context
        clipboard = getPrincipalClipboard(self.request)
        items = clipboard.getContents()
        for item in items:
            try:
                obj = traverse(target, item['target'])
            except TraversalError:
                pass
            else:
                if item['action'] == 'cut':
                    mover = IObjectMover(obj)
                    moveableTo = self.safe_getattr(mover, 'moveableTo', None)
                    if moveableTo is None or not moveableTo(target):
                        return False
                elif item['action'] == 'copy':
                    copier = IObjectCopier(obj)
                    copyableTo = self.safe_getattr(copier, 'copyableTo', None)
                    if copyableTo is None or not copyableTo(target):
                        return False
                else:
                    raise

        return True
예제 #51
0
파일: contents.py 프로젝트: CGTIC/Plone_SP
    def pasteable(self):
        """Decide if there is anything to paste
        """
        target = self.context
        clipboard = getPrincipalClipboard(self.request)
        items = clipboard.getContents()
        for item in items:
            try:
                obj = traverse(target, item['target'])
            except TraversalError:
                pass
            else:
                if item['action'] == 'cut':
                    mover = IObjectMover(obj)
                    moveableTo = self.safe_getattr(mover, 'moveableTo', None)
                    if moveableTo is None or not moveableTo(target):
                        return False
                elif item['action'] == 'copy':
                    copier = IObjectCopier(obj)
                    copyableTo = self.safe_getattr(copier, 'copyableTo', None)
                    if copyableTo is None or not copyableTo(target):
                        return False
                else:
                    raise

        return True
예제 #52
0
    def setUp(self):
        setup.placefulSetUp()
        self.rootFolder = setup.buildSampleFolderTree()
        gsm = getGlobalSiteManager()
        de_catalog = MessageCatalog('de', 'default')
        de_catalog.setMessage('short_greeting', 'Hallo!', 10)
        de_catalog.setMessage('long_greeting', 'Guten Tag!', 10)

        # register global translation domain and add the catalog.
        domain = GlobalTranslationDomain('default')
        domain.addCatalog(de_catalog)
        gsm.registerUtility(domain, ITranslationDomain, 'default')

        # create a local site manager and add a local translation domain
        td = TranslationDomain()
        td.domain = 'default'
        de_catalog = MessageCatalog('de', 'default')
        de_catalog.setMessage('short_greeting', 'Hallo Welt!', 10)
        td['de-default-1'] = de_catalog

        mgr = setup.createSiteManager(traverse(self.rootFolder, 'folder1'))
        setup.addUtility(
            mgr, 'default', interfaces.ILocalTranslationDomain, td)

        self.trans1 = td
        self.trans = domain
예제 #53
0
 def testCutFolder(self):
     container = traverse(self.rootFolder, 'folder1')
     fc = self._TestView__newView(container)
     ids = ['folder1_1']
     fc.request.form['ids'] = ids
     fc.cutObjects()
     fc.pasteObjects()
     self.failIf('folder1_1' not in container)
예제 #54
0
 def getResources(self):
     resources = []
     append = resources.append
     for path in self._paths:
         append(
             api.traverse(self.context,
                          '++resource++' + path,
                          request=self.request))
     return resources
예제 #55
0
    def hasClipboardContents(self):
        """Interogate the ``PrinicipalAnnotation`` to see if clipboard
        contents exist."""

        if not self.supportsPaste:
            return False

        # touch at least one item to in clipboard confirm contents
        clipboard = getPrincipalClipboard(self.request)
        items = clipboard.getContents()
        for item in items:
            try:
                traverse(self.context, item['target'])
            except TraversalError:
                pass
            else:
                return True

        return False
예제 #56
0
    def __get__(self, inst, cls=None):
        if inst is None:
            return self

        try:
            # Use __dict__ directly to avoid infinite recursion
            root = inst.__dict__['rootFolder']
        except KeyError:
            root = inst.rootFolder = setup.buildSampleFolderTree()

        return traverse(root, self.path)
예제 #57
0
    def test(self):
        from schooltool.app.security import authSetUpSubscriber
        self.assertRaises(ComponentLookupError, self.app.getSiteManager)
        event = ObjectAddedEvent(self.app)
        authSetUpSubscriber(self.app, event)
        auth = traverse(self.app, '++etc++site/default/SchoolToolAuth')
        auth1 = getUtility(IAuthentication, context=self.app)
        self.assert_(auth is auth1)

        # If we fire the event again, it does not fail.  Such events
        # are fired when the object is copied and pasted.
        authSetUpSubscriber(self.app, event)
예제 #58
0
 def getResources(self):
     resources = []
     append = resources.append
     for item in self._items:
         info = {}
         info['url'] = api.traverse(self.context,
                                    '++resource++' + item.get('path'),
                                    request=self.request)
         info['media'] = item.get('media', 'all')
         info['rel'] = item.get('rel', 'stylesheet')
         append(info)
     return resources
예제 #59
0
 def testCutPaste(self):
     container = traverse(self.rootFolder, 'folder1')
     fc = self._TestView__newView(container)
     ids = ['document1', 'document2']
     for id in ids:
         document = Document()
         container[id] = document
     fc.request.form['ids'] = ids
     fc.cutObjects()
     fc.pasteObjects()
     self.failIf('document1' not in container)
     self.failIf('document2' not in container)
예제 #60
0
 def getResources(self):
     """
     Retrieve all the resources in our desired paths using the
     :class:`++resource++ namespace <zope.traversing.namespace.resource>`
     """
     resources = []
     append = resources.append
     for path in self._paths:
         append(
             api.traverse(self.context,
                          '++resource++' + path,
                          request=self.request))
     return resources