Example #1
0
    def test_i18n(self):
        from Products.CMFCore.exportimport.actions \
                import exportActionProviders
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site = self._initSite(0, 0)
        atool = site.portal_actions

        context = DummyImportContext(site)
        context._files['actions.xml'] = _I18N_IMPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.assertEqual(atool.objectIds(), ['dummy'])
        self.assertEqual(atool.dummy.objectIds(), ['foo'])
        self.assertEqual(atool.dummy.foo.i18n_domain, 'foo_domain')

        # complete the roundtrip
        context = DummyExportContext(site)
        exportActionProviders(context)

        self.assertEqual(len(context._wrote), 1)
        filename, text, content_type = context._wrote[0]
        self.assertEqual(filename, 'actions.xml')
        self._compareDOM(text, _I18N_IMPORT)
        self.assertEqual(content_type, 'text/xml')
Example #2
0
    def test_i18n(self):
        from Products.CMFCore.exportimport.actions \
                import exportActionProviders
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site = self._initSite(0, 0)
        atool = site.portal_actions

        context = DummyImportContext(site)
        context._files['actions.xml'] = _I18N_IMPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.assertEqual(atool.objectIds(), ['dummy'])
        self.assertEqual(atool.dummy.objectIds(), ['foo'])
        self.assertEqual(atool.dummy.foo.i18n_domain, 'foo_domain')

        # complete the roundtrip
        context = DummyExportContext(site)
        exportActionProviders(context)

        self.assertEqual(len(context._wrote), 1)
        filename, text, content_type = context._wrote[0]
        self.assertEqual(filename, 'actions.xml')
        self._compareDOM(text, _I18N_IMPORT)
        self.assertEqual(content_type, 'text/xml')
def previewChange(context, props):
    """This toggles the preview tab and making view like preview."""
    preview = props.get('add_preview_tab', False)
    a_tool = getToolByName(context, 'portal_actions')
    ptabs = getattr(a_tool, 'object', None)
    if ptabs:
        prevtab = getattr(ptabs, 'skinpreview', None)
        if not prevtab:
            # Add the tab that points to the @@preview view
            importcontext = DummyImportContext(context, False)
            importcontext._files['actions.xml'] = ACTIONSCONFIG
            importActionProviders(importcontext)
            prevtab = getattr(ptabs, 'skinpreview')
        prevtab.visible = preview
    else:
        raise 'Sorry no portal actions tool - object actions found'

    changeview = props.get('change_view_into_preview', False)
    sk_tool = getToolByName(context, 'portal_skins')
    defaultpath = sk_tool.getSkinPath('Sunburst Theme')
    changed = defaultpath.find('editskinswitcher_edit_content') > -1
    if changeview != changed:
        sk_tool.manage_skinLayers(chosen=['Sunburst Theme'], del_skin=1)
        if changeview and not changed:
            if not getattr(sk_tool, 'editskinswitcher_edit_content', None):
                cmfcore = sk_tool.manage_addProduct['CMFCore']
                addDir = cmfcore.manage_addDirectoryView
                addDir(reg_key='collective.editskinswitcher:'
                       'tests/skins/editskinswitcher_edit_content',
                       id='editskinswitcher_edit_content')
            skinpath = 'editskinswitcher_edit_content,' + defaultpath
        elif not changeview and changed:
            skinpath = defaultpath.replace(
                'editskinswitcher_edit_content,', '')
        sk_tool.addSkinSelection('Sunburst Theme', skinpath)
Example #4
0
    def test_remove_skip_purge(self):
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site, atool = self._initSite(2, 2)

        self.assertEqual(atool.listActionProviders(),
                          ['portal_actions', 'portal_foo', 'portal_bar'])

        context = DummyImportContext(site, False)
        context._files['actions.xml'] = _REMOVE_IMPORT
        importActionProviders(context)

        self.assertEqual(atool.listActionProviders(), ['portal_foo'])
Example #5
0
    def test_empty_skip_purge(self):
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site, atool = self._initSite(2, 0)

        self.assertEqual(len(atool.listActionProviders()), 2)
        self.failUnless('portal_foo' in atool.listActionProviders())
        self.failUnless('portal_actions' in atool.listActionProviders())

        context = DummyImportContext(site, False)
        context._files['actions.xml'] = _EMPTY_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 2)
        self.failUnless('portal_foo' in atool.listActionProviders())
        self.failUnless('portal_actions' in atool.listActionProviders())
Example #6
0
    def test_normal(self):
        from Products.CMFCore.exportimport.actions \
                import exportActionProviders
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site = self._initSite(1, 1)
        atool = site.portal_actions
        foo = site.portal_foo
        bar = site.portal_bar

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.failIf('portal_foo' in atool.listActionProviders())
        self.failIf(foo.listActions())
        self.failIf('portal_bar' in atool.listActionProviders())
        self.failIf(bar.listActions())
        self.failUnless('portal_actions' in atool.listActionProviders())

        context = DummyImportContext(site)
        context._files['actions.xml'] = _OLD_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.failUnless('portal_bar' in atool.listActionProviders())
        self.failUnless('portal_foo' in atool.listActionProviders())
        self.failUnless('portal_actions' in atool.listActionProviders())

        self.assertEqual(len(atool.objectIds()), 1)
        self.failUnless('dummy' in atool.objectIds())
        # Only one action appears. The importer only deals with actions
        # defined by the actions tool. Other tools are responsible for
        # exporting/importing actions themselves.
        self.assertEqual(len(atool.dummy.objectIds()), 1)
        self.failUnless('baz' in atool.dummy.objectIds())
        self.failIf(foo.listActions())
        self.failIf(bar.listActions())

        # complete the roundtrip
        context = DummyExportContext(site)
        exportActionProviders(context)

        self.assertEqual(len(context._wrote), 1)
        filename, text, content_type = context._wrote[0]
        self.assertEqual(filename, 'actions.xml')
        self._compareDOM(text, _NEWSYTLE_EXPORT)
        self.assertEqual(content_type, 'text/xml')
Example #7
0
    def test_normal(self):
        from Products.CMFCore.exportimport.actions \
                import exportActionProviders
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site = self._initSite(1, 1)
        atool = site.portal_actions
        foo = site.portal_foo
        bar = site.portal_bar

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.failIf('portal_foo' in atool.listActionProviders())
        self.failIf(foo.listActions())
        self.failIf('portal_bar' in atool.listActionProviders())
        self.failIf(bar.listActions())
        self.failUnless('portal_actions' in atool.listActionProviders())

        context = DummyImportContext(site)
        context._files['actions.xml'] = _OLD_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.failUnless('portal_bar' in atool.listActionProviders())
        self.failUnless('portal_foo' in atool.listActionProviders())
        self.failUnless('portal_actions' in atool.listActionProviders())

        self.assertEqual(len(atool.objectIds()), 1)
        self.failUnless('dummy' in atool.objectIds())
        # Only one action appears. The importer only deals with actions
        # defined by the actions tool. Other tools are responsible for
        # exporting/importing actions themselves.
        self.assertEqual(len(atool.dummy.objectIds()) , 1)
        self.failUnless('baz' in atool.dummy.objectIds())
        self.failIf(foo.listActions())
        self.failIf(bar.listActions())

        # complete the roundtrip
        context = DummyExportContext(site)
        exportActionProviders(context)

        self.assertEqual(len(context._wrote), 1)
        filename, text, content_type = context._wrote[0]
        self.assertEqual(filename, 'actions.xml')
        self._compareDOM(text, _NEWSYTLE_EXPORT)
        self.assertEqual(content_type, 'text/xml')
Example #8
0
    def test_empty_explicit_purge(self):
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site, atool = self._initSite(2, 0)

        self.assertEqual(len(atool.listActionProviders()), 2)
        self.assertTrue('portal_foo' in atool.listActionProviders())
        self.assertTrue('portal_actions' in atool.listActionProviders())

        context = DummyImportContext(site, True)
        context._files['actions.xml'] = _EMPTY_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.assertFalse('portal_foo' in atool.listActionProviders())
        self.assertTrue('portal_actions' in atool.listActionProviders())
        self.assertEqual(len(atool.objectIds()), 0)
Example #9
0
    def test_empty_explicit_purge(self):
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site, atool = self._initSite(2, 0)

        self.assertEqual(len(atool.listActionProviders()), 2)
        self.assertTrue('portal_foo' in atool.listActionProviders())
        self.assertTrue('portal_actions' in atool.listActionProviders())

        context = DummyImportContext(site, True)
        context._files['actions.xml'] = _EMPTY_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.assertFalse('portal_foo' in atool.listActionProviders())
        self.assertTrue('portal_actions' in atool.listActionProviders())
        self.assertEqual(len(atool.objectIds()), 0)
Example #10
0
    def test_normal(self):
        from Products.CMFCore.exportimport.actions \
                import exportActionProviders
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site = self._initSite(1, 1)
        atool = site.portal_actions
        foo = site.portal_foo
        bar = site.portal_bar

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.failIf('portal_foo' in atool.listActionProviders())
        self.failIf(foo.listActions())
        self.failIf('portal_bar' in atool.listActionProviders())
        self.failIf(bar.listActions())
        self.failUnless('portal_actions' in atool.listActionProviders())

        context = DummyImportContext(site)
        context._files['actions.xml'] = _NORMAL_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.failIf('portal_foo' in atool.listActionProviders())
        self.failUnless('portal_actions' in atool.listActionProviders())

        self.assertEqual(len(atool.objectIds()), 1)
        self.failUnless('dummy' in atool.objectIds())
        self.assertEqual(len(atool.dummy.objectIds()) , 2)
        self.failUnless('foo' in atool.dummy.objectIds())
        self.failUnless('bar' in atool.dummy.objectIds())
        self.failIf(foo.listActions())
        self.failIf(bar.listActions())

        # complete the roundtrip
        context = DummyExportContext(site)
        exportActionProviders(context)

        self.assertEqual(len(context._wrote), 1)
        filename, text, content_type = context._wrote[0]
        self.assertEqual(filename, 'actions.xml')
        self._compareDOM(text, _NEWSYTLE_EXPORT)
        self.assertEqual(content_type, 'text/xml')
Example #11
0
    def test_normal(self):
        from Products.CMFCore.exportimport.actions \
                import exportActionProviders
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site = self._initSite(1, 1)
        atool = site.portal_actions
        foo = site.portal_foo
        bar = site.portal_bar

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.failIf('portal_foo' in atool.listActionProviders())
        self.failIf(foo.listActions())
        self.failIf('portal_bar' in atool.listActionProviders())
        self.failIf(bar.listActions())
        self.failUnless('portal_actions' in atool.listActionProviders())

        context = DummyImportContext(site)
        context._files['actions.xml'] = _NORMAL_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 1)
        self.failIf('portal_foo' in atool.listActionProviders())
        self.failUnless('portal_actions' in atool.listActionProviders())

        self.assertEqual(len(atool.objectIds()), 1)
        self.failUnless('dummy' in atool.objectIds())
        self.assertEqual(len(atool.dummy.objectIds()), 2)
        self.failUnless('foo' in atool.dummy.objectIds())
        self.failUnless('bar' in atool.dummy.objectIds())
        self.failIf(foo.listActions())
        self.failIf(bar.listActions())

        # complete the roundtrip
        context = DummyExportContext(site)
        exportActionProviders(context)

        self.assertEqual(len(context._wrote), 1)
        filename, text, content_type = context._wrote[0]
        self.assertEqual(filename, 'actions.xml')
        self._compareDOM(text, _NEWSYTLE_EXPORT)
        self.assertEqual(content_type, 'text/xml')
Example #12
0
    def test_import_extension(self):
        from Products.CMFCore.exportimport.actions import importActionProviders

        site = self._initSite(2, 2)
        atool = site.portal_actions
        foo = site.portal_foo
        bar = site.portal_bar

        # Normal import.
        context = DummyImportContext(site)
        context._files['actions.xml'] = _NORMAL_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.assertEqual([a.id for a in foo.listActions()], ['foo'])
        self.assertEqual([a.id for a in bar.listActions()], ['bar'])

        # Add an action manually to bar, it shouldn't get
        # removed by the next non-purge import.
        bar.addAction(id='gee',
                      name='Gee',
                      action='geeman',
                      condition='python:maybe()',
                      permission=('Manage portal', ),
                      category='dummy',
                      visible=0)
        # Modify actions.
        foo.listActions()[0].title = 'OtherFoo'
        bar.listActions()[0].title = 'OtherBar'

        self.assertEqual([a.id for a in bar.listActions()], ['bar', 'gee'])

        # Now reimport as extension profile, without purge.
        context = DummyImportContext(site, False)
        context._files['actions.xml'] = _NORMAL_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.assertEqual([a.id for a in foo.listActions()], ['foo'])
        self.assertEqual(foo.listActions()[0].title, 'Foo')
        self.assertEqual([a.id for a in bar.listActions()], ['gee', 'bar'])
        self.assertEqual([a.title for a in bar.listActions()], ['Gee', 'Bar'])
Example #13
0
    def test_import_extension(self):
        from Products.CMFCore.exportimport.actions import importActionProviders

        site = self._initSite(2, 2)
        atool = site.portal_actions
        foo = site.portal_foo
        bar = site.portal_bar

        # Normal import.
        context = DummyImportContext(site)
        context._files['actions.xml'] = _NORMAL_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.assertEqual([a.id for a in foo.listActions()], ['foo'])
        self.assertEqual([a.id for a in bar.listActions()], ['bar'])

        # Add an action manually to bar, it shouldn't get
        # removed by the next non-purge import.
        bar.addAction(id='gee',
                      name='Gee',
                      action='geeman',
                      condition='python:maybe()',
                      permission=('Manage portal',),
                      category='dummy',
                      visible=0)
        # Modify actions.
        foo.listActions()[0].title = 'OtherFoo'
        bar.listActions()[0].title = 'OtherBar'

        self.assertEqual([a.id for a in bar.listActions()], ['bar', 'gee'])

        # Now reimport as extension profile, without purge.
        context = DummyImportContext(site, False)
        context._files['actions.xml'] = _NORMAL_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.assertEqual([a.id for a in foo.listActions()], ['foo'])
        self.assertEqual(foo.listActions()[0].title, 'Foo')
        self.assertEqual([a.id for a in bar.listActions()], ['gee', 'bar'])
        self.assertEqual([a.title for a in bar.listActions()], ['Gee', 'Bar'])
Example #14
0
    def test_insert_skip_purge(self):
        from Products.CMFCore.exportimport.actions \
                import importActionProviders

        site, atool = self._initSite(0, 0)

        context = DummyImportContext(site)
        context._files['actions.xml'] = _NEWSYTLE_EXPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.assertEqual(atool.objectIds(), ['dummy'])
        self.assertEqual(atool.dummy.objectIds(), ['baz'])
        self.assertEqual(atool.dummy.baz.icon_expr, '')

        context = DummyImportContext(site, False)
        context._files['actions.xml'] = _INSERT_IMPORT
        importActionProviders(context)

        self.assertEqual(len(atool.listActionProviders()), 3)
        self.assertEqual(atool.objectIds(), ['dummy'])
        self.assertEqual(atool.dummy.objectIds(), ['spam', 'baz'])
        self.assertEqual(atool.dummy.baz.icon_expr, 'string:baz_icon.png')