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)
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'])
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())
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')
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')
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)
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')
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')
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'])
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'])
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')