def setUp(self): get_transaction().begin() self.app = makerequest(Zope.app()) # Log in as a god :-) newSecurityManager( None, UnrestrictedUser('god', 'god', ['Manager'], '') ) app = self.app app.REQUEST.set('URL1','http://foo/sorcerertest/test') try: app._delObject('CalendarTest') except AttributeError: pass app.manage_addProduct['CMFDefault'].manage_addCMFSite('CalendarTest') self.Site = app.CalendarTest manage_addExternalMethod(app.CalendarTest, id='install_events', title="Install Events", module="CMFCalendar.Install", function="install") ExMethod = app.restrictedTraverse('/CalendarTest/install_events') ExMethod() self.Tool = app.restrictedTraverse('/CalendarTest/portal_calendar') # sessioning bodge until we find out how to do this properly self.have_session = hasattr( app, 'session_data_manager' ) if self.have_session: app.REQUEST.set_lazy( 'SESSION' , app.session_data_manager.getSessionData )
def setUp(self): get_transaction().begin() self.app = makerequest(Zope.app()) # Log in as a god :-) newSecurityManager(None, UnrestrictedUser('god', 'god', [], '')) app = self.app app.REQUEST.set('URL1', 'http://foo/sorcerertest/test') try: app._delObject('CalendarTest') except AttributeError: pass app.manage_addProduct['CMFDefault'].manage_addCMFSite('CalendarTest') self.Site = app.CalendarTest manage_addExternalMethod(app.CalendarTest, id='install_events', title="Install Events", module="CMFCalendar.Install", function="install") ExMethod = app.restrictedTraverse('/CalendarTest/install_events') ExMethod() self.Tool = app.restrictedTraverse('/CalendarTest/portal_calendar') # sessioning bodge until we find out how to do this properly self.have_session = hasattr(app, 'session_data_manager') if self.have_session: app.REQUEST.set_lazy('SESSION', app.session_data_manager.getSessionData)
def setUp(self): self._trap_warning_output() transaction.begin() app = self.app = makerequest(Zope2.app()) # Log in as a god :-) newSecurityManager( None, UnrestrictedUser('god', 'god', ['Manager'], '') ) app.manage_addProduct['CMFDefault'].manage_addCMFSite('CalendarTest') self.Site = app.CalendarTest manage_addExternalMethod(app.CalendarTest, id='install_events', title="Install Events", module="CMFCalendar.Install", function="install") ExMethod = app.restrictedTraverse('/CalendarTest/install_events') ExMethod() self.Tool = app.CalendarTest.portal_calendar self.Site.clearCurrentSkin() self.Site.setupCurrentSkin(app.REQUEST) # sessioning setup if getattr(app, 'temp_folder', None) is None: temp_folder = MountedTemporaryFolder('temp_folder') app._setObject('temp_folder', temp_folder) if getattr(app.temp_folder, 'session_data', None) is None: session_data = TransientObjectContainer('session_data') app.temp_folder._setObject('session_data', session_data) app.REQUEST.set_lazy( 'SESSION', app.session_data_manager.getSessionData )
def setUp(self): self._trap_warning_output() transaction.begin() app = self.app = makerequest(Zope2.app()) # Log in as a god :-) newSecurityManager(None, UnrestrictedUser('god', 'god', ['Manager'], '')) app.manage_addProduct['CMFDefault'].manage_addCMFSite('CalendarTest') self.Site = app.CalendarTest manage_addExternalMethod(app.CalendarTest, id='install_events', title="Install Events", module="CMFCalendar.Install", function="install") ExMethod = app.restrictedTraverse('/CalendarTest/install_events') ExMethod() self.Tool = app.CalendarTest.portal_calendar self.Site.clearCurrentSkin() self.Site.setupCurrentSkin(app.REQUEST) # sessioning setup if getattr(app, 'temp_folder', None) is None: temp_folder = MountedTemporaryFolder('temp_folder') app._setObject('temp_folder', temp_folder) if getattr(app.temp_folder, 'session_data', None) is None: session_data = TransientObjectContainer('session_data') app.temp_folder._setObject('session_data', session_data) app.REQUEST.set_lazy('SESSION', app.session_data_manager.getSessionData)
def installExternalMethods(context): site = context.getSite() if not hasattr(site, 'UWOshSuccess_installInitialStructure'): manage_addExternalMethod(site, 'UWOshSuccess_installInitialStructure', 'UWOshSuccess_installInitialStructure', 'Products.UWOshSuccess.initialstructure', 'installInitialStructure')
def install_external_method(folder, id, description, module, function): if not hasattr(folder, id): try: manage_addExternalMethod(folder, id, description, module, function) except Exception, inst: LOG('UWOshOIE install problem:', INFO, "Adding external method: type: " + str(type(inst)) + ", args: " + str(inst.args) + ", inst: " + str(inst))
def install_external_method(folder, id, description, module, function): if not hasattr(folder, id): try: manage_addExternalMethod(folder, id, description, module, function) folder[id].manage_permission("View", roles=["musicFacultyMember", "Manager"], acquire=0) folder[id].manage_permission("Access contents information", roles=["musicFacultyMember", "Manager"], acquire=0) except: logger.info("Error attempting to install %s external method" % (id))
def setUpPloneSite(self, portal): # we create a front-page document that will be modified in setup _createObjectByType('Document', portal, id='front-page') portal.setDefaultPage('front-page') manage_addExternalMethod(portal, 'import_scanned', 'import_scanned', 'imio.dms.mail.demo', 'import_scanned') manage_addExternalMethod(portal, 'create_main_file', 'create_main_file', 'imio.dms.mail.demo', 'create_main_file') # install dmsmail (apply profile) super(DmsmailLayer, self).setUpPloneSite(portal)
def install_external_method(folder, id, description, module, function): if not hasattr(folder, id): try: manage_addExternalMethod(folder, id, description, module, function) except Exception, inst: LOG( 'UWOshOIE install problem:', INFO, "Adding external method: type: " + str(type(inst)) + ", args: " + str(inst.args) + ", inst: " + str(inst))
def setUp(self): MeetingCommunesTestCase.setUp(self) # add the ExternalMethod export_orgs in Zope manage_addExternalMethod(self.portal.aq_inner.aq_parent, 'export_orgs', '', 'Products.MeetingCommunes.utils', 'export_orgs') # add the ExternalMethod import_orgs in Zope manage_addExternalMethod(self.portal.aq_inner.aq_parent, 'import_orgs', '', 'Products.MeetingCommunes.utils', 'import_orgs')
def installExternalMethods(context): site = context.getSite() if not hasattr(site, 'UWOshSuccess_installInitialStructure'): manage_addExternalMethod(site, 'UWOshSuccess_installInitialStructure', 'UWOshSuccess_installInitialStructure', 'Products.UWOshSuccess.initialstructure', 'installInitialStructure' )
def install(self, reinstall=False): """ Specific installation steps """ portal = getToolByName(self, 'portal_url').getPortalObject() #Add of some external methods # pack_db method must not be added here for method in ('object_info', 'audit_catalog'): method_name = 'cputils_'+method if not hasattr(portal.aq_inner.aq_explicit, method_name): logger.info("REALLY Adding external method '%s'" % method_name) #without aq_explicit, if the id exists at a higher level, it is found ! manage_addExternalMethod(self, method_name, '', 'CPUtils.utils', method)
def setUpPloneSite(self, portal): setattr(portal, '_TESTING_SITE_', True) setLocal('request', portal.REQUEST) applyProfile(portal, 'Products.CMFPlone:plone') # applyProfile(portal, 'Products.CMFPlone:plone-content') # could be done too manage_addExternalMethod(portal, 'lock-unlock', '', 'imio.project.pst.robot', 'lock') manage_addExternalMethod(portal, 'robot_init', '', 'imio.project.pst.robot', 'robot_init') super(PSTLayer, self).setUpPloneSite(portal) setRoles(portal, TEST_USER_ID, ['Manager']) portal.portal_setup.runAllImportStepsFromProfile( 'profile-imio.project.pst:demo')
def addExternalMethod(self, out): """ Add external method to portal root directory """ if not hasattr(self, EXTERNAL_METHOD): manage_addExternalMethod(self, id=EXTERNAL_METHOD, title=EXTERNAL_METHOD, module=PROJECTNAME+'.'+'getMemberData', function='getMemberData') method = getattr(self, EXTERNAL_METHOD) if method: method.manage_permission('View', ['Manager',], acquire=0) out.write('%s external method added to portal\n' % EXTERNAL_METHOD) else: out.write('installation procedure could not create external method\n') else: out.write('%s external method already exists in portal\n' % EXTERNAL_METHOD)
def test_34_executiondate_when_script_working(self,): """ """ scriptsholder = self.portal.portal_maintenance.scripts # Plone Catalog update script manage_addExternalMethod(scriptsholder,'workingScript', 'Working Script', PROJECTNAME+'.MaintenanceToolbox', 'workingScript') content_id = "task1" addMaintenanceTask(self.portal, content_id, title = 'Task 1') task=getattr(self.portal, content_id) task.setScript_name('workingScript') current_date=DateTime('2006/05/12 16:17') self.failUnless(task.isPending(current_date)) last_execution_date = task.last_execution_date self.portal.portal_maintenance.runTasks() task.runTask() self.failUnless(task.last_execution_date!=last_execution_date)
def afterSetUp(self): from Products.PloneGazette import NewsletterTheme """ """ CPUtilsTestCase.afterSetup(self) self.loginAsPortalOwner() method = 'install' method_name = 'cputils_'+method manage_addExternalMethod(self.app, method_name, '', 'CPUtils.utils', method) self.app.cputils_install() """from Products.Five import zcml from Products.Five import fiveconfigure fiveconfigure.debug_mode=True import Products.PloneGazette zcml.load_config('configure.zcml', Products.PloneGazette) fiveconfigure.debug_mode=False self.addProduct(name)""" qi = self.portal.portal_quickinstaller
def install(self, reinstall=0): installation=Installation(self) out = installation.out installation.setupTypesandSkins(fti_list, skin_name, install_globals, []) # Disallow adding MaintenanceTask ttool = getToolByName(self, 'portal_types') typeinfo = getattr(ttool, 'MaintenanceTask') try: typeinfo.manage_changeProperties({"global_allow":0}) except: typeinfo.manage_changeProperties(global_allow=0) # Doesn't work with Plone 2.0.5 if not reinstall: setupTools(self) mainttool = getToolByName(self, 'portal_maintenance') scriptsholder = mainttool.scripts # Plone Catalog update script manage_addExternalMethod(scriptsholder,'updateCatalog', 'Update the portal catalog', PROJECTNAME+'.MaintenanceToolbox', 'updateCatalog') # Plone Catalogs rebuilds script manage_addExternalMethod(scriptsholder,'rebuildCatalogs', 'PloneArticle-aware Rebuild of all Catalogs', PROJECTNAME+'.MaintenanceToolbox', 'rebuildCatalogs') # Pack DB script manage_addExternalMethod(scriptsholder,'packDB', 'Pack the main DB or any specified one', PROJECTNAME+'.MaintenanceToolbox', 'packDB') # Archive expired content script manage_addExternalMethod(scriptsholder,'archiveExpiredContent', 'Archive expired content script', PROJECTNAME+'.MaintenanceToolbox', 'archiveExpiredContent') else: updateTaskProperties(self) return installation.report()
def addUpgradeExternalMethods(portal): ''' add upgrade external methods in site root. ''' from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod # this function is DEPRECATED since we change the process of creating new instances. # TODO: Remove starting from July 2013. # manage_addExternalMethod(portal, '0_create_first_doctor', 'Create First Doctor', 'wres.policy.create_first_doctor', 'main') manage_addExternalMethod(portal, '0_upgrade', 'Cmed Automatic Upgrade', 'wres.policy.upgrade', 'main') manage_addExternalMethod(portal, 'z_export', 'Export Cmed', 'wres.policy.exporter', 'main') manage_addExternalMethod(portal, 'z_import', 'Import Cmed', 'wres.policy.importer', 'main')
from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod # we add the external method cputils_install if not hasattr(app, 'cputils_install'): manage_addExternalMethod(app, 'cputils_install', '', 'CPUtils.utils', 'install') # we run this method app.cputils_install(app) # we add the properties hiddenProducts, shownProducts #from Products.CPUtils.hiddenProductsList import dic_hpList # to be continued
def setupTrackback_workflow(wf): "..." wf.setProperties(title="TrackBack Workflow") for s in ["new", "pending", "published"]: wf.states.addState(s) for t in ["retract", "publish", "make_pending"]: wf.transitions.addTransition(t) for v in ["action", "review_history", "comments", "actor", "time"]: wf.variables.addVariable(v) for l in []: wf.worklists.addWorklist(l) for p in ("Access contents information", "Modify portal content", "View"): wf.addManagedPermission(p) # from Products.PythonScripts.PythonScript import manage_addPythonScript # for p in ['notifyTrackBack']: # manage_addPythonScript(wf.scripts, p) # srcdef = wf.scripts['notifyTrackBack'] # srcdef.ZPythonScript_edit('', script_notifyTrackBack) # srcdef._proxy_roles = ( "Manager", ) # #roles = ("Manager",) # #srcdef.manage_proxy(roles) from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod manage_addExternalMethod( wf.scripts, id="notifyTrackBack", title="", module="SimpleBlog.utils", function="notifyTrackBack" ) ## Initial State wf.states.setInitialState("new") ## States initialization sdef = wf.states["new"] sdef.setProperties(title="""""", transitions=("make_pending",)) sdef.setPermission("Access contents information", 1, []) sdef.setPermission("Modify portal content", 1, []) sdef.setPermission("View", 1, []) sdef = wf.states["pending"] sdef.setProperties(title="""""", transitions=("publish",)) sdef.setPermission("Access contents information", 0, ["Manager", "Owner"]) sdef.setPermission("Modify portal content", 0, ["Manager", "Owner"]) sdef.setPermission("View", 0, ["Manager", "Owner"]) sdef = wf.states["published"] sdef.setProperties(title="""Public""", transitions=("retract",)) sdef.setPermission("Access contents information", 1, ["Anonymous", "Manager"]) sdef.setPermission("Modify portal content", 0, ["Manager", "Owner"]) sdef.setPermission("View", 0, ["Anonymous", "Authenticated", "Manager"]) ## Transitions initialization tdef = wf.transitions["retract"] tdef.setProperties( title="""Member retracts published item""", new_state_id="""pending""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""Retract""", actbox_url="""%(content_url)s/content_retract_form""", actbox_category="""workflow""", props={"guard_roles": "Owner; Manager"}, ) tdef = wf.transitions["publish"] tdef.setProperties( title="""Reviewer publishes content""", new_state_id="""published""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""Publish""", actbox_url="""%(content_url)s/content_publish_form""", actbox_category="""workflow""", props={"guard_roles": "Manager; Owner"}, ) tdef = wf.transitions["make_pending"] tdef.setProperties( title="""Make pending""", new_state_id="""pending""", trigger_type=0, script_name="""notifyTrackBack""", after_script_name="""""", actbox_name="""""", actbox_url="""""", actbox_category="""workflow""", props=None, ) ## State Variable wf.variables.setStateVar("review_state") ## Variables initialization vdef = wf.variables["action"] vdef.setProperties( description="""The last transition""", default_value="""""", default_expr="""transition/getId|nothing""", for_catalog=0, for_status=1, update_always=1, props=None, ) vdef = wf.variables["review_history"] vdef.setProperties( description="""Provides access to workflow history""", default_value="""""", default_expr="""state_change/getHistory""", for_catalog=0, for_status=0, update_always=0, props={"guard_permissions": "Request review; Review portal content"}, ) vdef = wf.variables["comments"] vdef.setProperties( description="""Comments about the last transition""", default_value="""""", default_expr="""python:state_change.kwargs.get('comment', '')""", for_catalog=0, for_status=1, update_always=1, props=None, ) vdef = wf.variables["actor"] vdef.setProperties( description="""The ID of the user who performed the last transition""", default_value="""""", default_expr="""user/getId""", for_catalog=0, for_status=1, update_always=1, props=None, ) vdef = wf.variables["time"] vdef.setProperties( description="""Time of the last transition""", default_value="""""", default_expr="""state_change/getDateTime""", for_catalog=0, for_status=1, update_always=1, props=None, )
def create(app, admin_username="******"): out = [] oids = app.objectIds() # these are the two set elements... # (accessRule.py external method and SiteRoot) eid = "accessRule.py" pid = "Plone" emod = "CMFPlone.accessRule" efn = "accessRule" sid = "SiteRoot" if pid in oids: out.append("A Plone site already exists") return out # 1 .get the admin user (dont bother making it, it's done before you # get a chance) acl_users = app.acl_users # info = User.readUserAccessFile('inituser') # if info: # acl_users._doAddUser(info[0], info[1], ('manage',), []) user = acl_users.getUser(admin_username) if user: user = user.__of__(acl_users) newSecurityManager(None, user) out.append("Retrieved the admin user") else: out.append("Retrieving admin user failed") # 2. create the access rule external method if eid not in oids: # this is the actual access rule manage_addExternalMethod(app, eid, "Plone Access Rule", emod, efn) out.append("Added external method") # this sets the access rule manage_addAccessRule(app, eid) out.append("Set an access rule") ## if user: ## getattr(app, eid).changeOwnership(user) # 3. actually add in Plone if pid not in oids: factory = app.manage_addProduct["CMFPlone"] factory.addPloneSite(pid, create_userfolder=1) out.append("Added Plone") ## if user: ## getattr(app, pid).changeOwnership(user, recursive=1) # 4. adding the site root in plone = getattr(app, pid) if sid not in plone.objectIds(): manage_addSiteRoot(plone) out.append("Added Site Root") ## if user: ## getattr(plone, sid).changeOwnership(user) # 5. add in products qit = plone.portal_quickinstaller products_to_install = ["kupu"] ids = [x["id"] for x in qit.listInstallableProducts(skipInstalled=1)] for product in products_to_install: if product in ids: qit.installProduct(product) # 6. commit transaction.commit() noSecurityManager() out.append("Finished") return out
def setUpPloneSite(self, portal): setLocal('request', portal.REQUEST) manage_addExternalMethod(portal, 'import_scanned', 'import_scanned', 'imio.dms.mail.demo', 'import_scanned') manage_addExternalMethod(portal, 'import_scanned2', 'import_scanned2', 'imio.dms.mail.demo', 'import_scanned2') manage_addExternalMethod(portal, 'create_main_file', 'create_main_file', 'imio.dms.mail.demo', 'create_main_file') manage_addExternalMethod(portal, 'activate_group_encoder', 'activate_group_encoder', 'imio.dms.mail.demo', 'activate_group_encoder') manage_addExternalMethod(portal, 'delete-category', '', 'imio.dms.mail.robot', 'delete_category') manage_addExternalMethod(portal, 'lock-unlock', '', 'imio.dms.mail.robot', 'lock') manage_addExternalMethod(portal, 'robot_init', '', 'imio.dms.mail.robot', 'robot_init') manage_addExternalMethod(portal, 'video_doc_init', '', 'imio.dms.mail.robot', 'video_doc_init') sp = portal.portal_properties.site_properties sp.default_language = 'fr' # we create a front-page document that will be modified in setup _createObjectByType('Document', portal, id='front-page') portal.setDefaultPage('front-page') _createObjectByType('Folder', portal, id='Members', title='Users', description="Site Users") members = getattr(portal, 'Members') members.setTitle( translate(u'members-title', target_language='fr', domain='plonefrontpage', default='Users')) members.setDescription( translate(u'members-description', target_language='fr', domain='plonefrontpage', default="Site Users")) members.unmarkCreationFlag() members.setLanguage('fr') members.reindexObject() # install dmsmail (apply profile) super(DmsmailLayer, self).setUpPloneSite(portal) applyProfile(portal, 'collective.MockMailHost:default') api.content.transition(obj=members, transition='show_internally') # copy template setRoles(portal, TEST_USER_ID, ['Manager']) folder_uid = portal['contacts']['plonegroup-organization'][ 'direction-generale']['secretariat'].UID() newobj = api.content.copy(portal['templates']['om']['main'], portal['templates']['om'][folder_uid]) newobj.title = u'Modèle type' newobj.reindexObject() # avoid redirection after document generation from imio.dms.mail.browser.documentgenerator import OMPDGenerationView OMPDGenerationView.redirects = lambda a, b: None setRoles(portal, TEST_USER_ID, ['Member'])
def setupTrackback_workflow(wf): "..." wf.setProperties(title='TrackBack Workflow') for s in ['new', 'pending', 'published']: wf.states.addState(s) for t in ['retract', 'publish', 'make_pending']: wf.transitions.addTransition(t) for v in ['action', 'review_history', 'comments', 'actor', 'time']: wf.variables.addVariable(v) for l in []: wf.worklists.addWorklist(l) for p in ('Access contents information', 'Modify portal content', 'View'): wf.addManagedPermission(p) #from Products.PythonScripts.PythonScript import manage_addPythonScript #for p in ['notifyTrackBack']: # manage_addPythonScript(wf.scripts, p) # srcdef = wf.scripts['notifyTrackBack'] # srcdef.ZPythonScript_edit('', script_notifyTrackBack) # srcdef._proxy_roles = ( "Manager", ) # #roles = ("Manager",) # #srcdef.manage_proxy(roles) from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod manage_addExternalMethod(wf.scripts, id='notifyTrackBack', title='', module='SimpleBlog.utils', function='notifyTrackBack') ## Initial State wf.states.setInitialState('new') ## States initialization sdef = wf.states['new'] sdef.setProperties(title="""""", transitions=('make_pending',)) sdef.setPermission('Access contents information', 1, []) sdef.setPermission('Modify portal content', 1, []) sdef.setPermission('View', 1, []) sdef = wf.states['pending'] sdef.setProperties(title="""""", transitions=('publish',)) sdef.setPermission('Access contents information', 0, ['Manager', 'Owner']) sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner']) sdef.setPermission('View', 0, ['Manager', 'Owner']) sdef = wf.states['published'] sdef.setProperties(title="""Public""", transitions=('retract',)) sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager']) sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner']) sdef.setPermission('View', 0, ['Anonymous', 'Authenticated', 'Manager']) ## Transitions initialization tdef = wf.transitions['retract'] tdef.setProperties(title="""Member retracts published item""", new_state_id="""draft""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""Retract""", actbox_url="""%(content_url)s/content_retract_form""", actbox_category="""workflow""", props={'guard_roles': 'Owner; Manager'}, ) tdef = wf.transitions['publish'] tdef.setProperties(title="""Reviewer publishes content""", new_state_id="""published""", trigger_type=1, script_name="""""", after_script_name="""""", actbox_name="""Publish""", actbox_url="""%(content_url)s/content_publish_form""", actbox_category="""workflow""", props={'guard_roles': 'Manager; Owner'}, ) tdef = wf.transitions['make_pending'] tdef.setProperties(title="""Make pending""", new_state_id="""pending""", trigger_type=0, script_name="""notifyTrackBack""", after_script_name="""""", actbox_name="""""", actbox_url="""""", actbox_category="""workflow""", props=None, ) ## State Variable wf.variables.setStateVar('review_state') ## Variables initialization vdef = wf.variables['action'] vdef.setProperties(description="""The last transition""", default_value="""""", default_expr="""transition/getId|nothing""", for_catalog=0, for_status=1, update_always=1, props=None) vdef = wf.variables['review_history'] vdef.setProperties(description="""Provides access to workflow history""", default_value="""""", default_expr="""state_change/getHistory""", for_catalog=0, for_status=0, update_always=0, props={'guard_permissions': 'Request review; Review portal content'}) vdef = wf.variables['comments'] vdef.setProperties(description="""Comments about the last transition""", default_value="""""", default_expr="""python:state_change.kwargs.get('comment', '')""", for_catalog=0, for_status=1, update_always=1, props=None) vdef = wf.variables['actor'] vdef.setProperties(description="""The ID of the user who performed the last transition""", default_value="""""", default_expr="""user/getId""", for_catalog=0, for_status=1, update_always=1, props=None) vdef = wf.variables['time'] vdef.setProperties(description="""Time of the last transition""", default_value="""""", default_expr="""state_change/getDateTime""", for_catalog=0, for_status=1, update_always=1, props=None)