예제 #1
0
    def test_marker_applied_and_unapplied(self):
        """
        Check that the IPlacefulMarker is applied to the workflow tool by
        the install, and removed by the uninstall.
        """
        try:
            # GenericSetup 1.7.8 and higher
            from Products.GenericSetup.tool import DEPENDENCY_STRATEGY_REAPPLY
            DEPENDENCY_STRATEGY_REAPPLY  # pyflakes
        except ImportError:
            DEPENDENCY_STRATEGY_REAPPLY = None

        self.failUnless(IPlacefulMarker.providedBy(self.workflow))
        self.loginAsPortalOwner()
        self.qi.uninstallProducts(['CMFPlacefulWorkflow'])
        self.failIf(IPlacefulMarker.providedBy(self.workflow))

        profile_id = 'Products.CMFPlacefulWorkflow:CMFPlacefulWorkflow'
        if DEPENDENCY_STRATEGY_REAPPLY is None:
            # Older GenericSetup.  Reapply is the default.  No alternative
            # strategy can be given.
            self.qi.installProduct('CMFPlacefulWorkflow')
            # setup_tool.runAllImportStepsFromProfile('profile-%s' % profile_id)
        else:
            # Newer GenericSetup.  Upgrade is the default.  We want to
            # reapply.
            setup_tool = self.portal.portal_setup
            setup_tool.runAllImportStepsFromProfile(
                'profile-%s' % profile_id,
                dependency_strategy=DEPENDENCY_STRATEGY_REAPPLY)

        self.failUnless(IPlacefulMarker.providedBy(self.workflow))
예제 #2
0
 def test_marker_applied_and_unapplied(self):
     """
     Check that the IPlacefulMarker is applied to the workflow tool by
     the install, and removed by the uninstall.
     """
     self.failUnless(IPlacefulMarker.providedBy(self.workflow))
     self.loginAsPortalOwner()
     self.qi.uninstallProducts(['CMFPlacefulWorkflow'])
     self.failIf(IPlacefulMarker.providedBy(self.workflow))
     self.qi.installProduct('CMFPlacefulWorkflow')
     self.failUnless(IPlacefulMarker.providedBy(self.workflow))
예제 #3
0
 def test_marker_applied_and_unapplied(self):
     """
     Check that the IPlacefulMarker is applied to the workflow tool by
     the install, and removed by the uninstall.
     """
     self.failUnless(IPlacefulMarker.providedBy(self.workflow))
     self.loginAsPortalOwner()
     self.qi.uninstallProducts(['CMFPlacefulWorkflow'])
     self.failIf(IPlacefulMarker.providedBy(self.workflow))
     self.qi.installProduct('CMFPlacefulWorkflow')
     self.failUnless(IPlacefulMarker.providedBy(self.workflow))
    def test_marker_applied_and_unapplied(self):
        """
        Check that the IPlacefulMarker is applied to the workflow tool by
        the install, and removed by the uninstall.
        """
        self.assertTrue(IPlacefulMarker.providedBy(self.workflow))
        self.qi.uninstall_product('CMFPlacefulWorkflow')
        self.assertFalse(IPlacefulMarker.providedBy(self.workflow))

        self.qi.install_product('CMFPlacefulWorkflow')
        self.assertTrue(IPlacefulMarker.providedBy(self.workflow))
예제 #5
0
    def test_marker_applied_and_unapplied(self):
        """
        Check that the IPlacefulMarker is applied to the workflow tool by
        the install, and removed by the uninstall.
        """
        self.assertTrue(IPlacefulMarker.providedBy(self.workflow))
        self.loginAsPortalOwner()
        self.qi.uninstall_product('CMFPlacefulWorkflow')
        self.assertFalse(IPlacefulMarker.providedBy(self.workflow))

        self.qi.install_product('CMFPlacefulWorkflow')
        self.assertTrue(IPlacefulMarker.providedBy(self.workflow))
예제 #6
0
 def testReinstallCMFPlacefulWorkflow(self):
     try:
         from Products.CMFPlacefulWorkflow.interfaces import IPlacefulMarker
     except ImportError:
         return
     # first the product needs to be installed
     self.qi.installProduct('CMFPlacefulWorkflow')
     # Delete existing logs to prevent race condition
     self.ps.manage_delObjects(self.ps.objectIds())
     # We remove the new marker, to ensure it's added on reinstall
     if IPlacefulMarker.providedBy(self.wf):
         noLongerProvides(self.wf, IPlacefulMarker)
     reinstallCMFPlacefulWorkflow(self.portal, [])
     self.assertTrue(IPlacefulMarker.providedBy(self.wf))
예제 #7
0
 def testReinstallCMFPlacefulWorkflow(self):
     try:
         from Products.CMFPlacefulWorkflow.interfaces import IPlacefulMarker
     except ImportError:
         return
     # first the product needs to be installed
     self.qi.installProduct('CMFPlacefulWorkflow')
     # Delete existing logs to prevent race condition
     self.ps.manage_delObjects(self.ps.objectIds())
     # We remove the new marker, to ensure it's added on reinstall
     if IPlacefulMarker.providedBy(self.wf):
         noLongerProvides(self.wf, IPlacefulMarker)
     reinstallCMFPlacefulWorkflow(self.portal, [])
     self.failUnless(IPlacefulMarker.providedBy(self.wf))
예제 #8
0
def uninstall(context):
    # Note: this function is registered as a pre_handler instead of a
    # post_handler, because otherwise toolset.xml has already been applied,
    # which removes the portal_placeful_workflow tool.
    portal = getToolByName(context, 'portal_url').getPortalObject()
    tool = getattr(portal, 'portal_placeful_workflow', None)
    if tool is not None:
        getSiteManager(portal).unregisterUtility(
            tool,
            IPlacefulWorkflowTool)
        logger.info('Unregistered portal_placeful_workflow')
    # uninstall configlets
    try:
        cptool = getToolByName(portal, 'portal_controlpanel')
        cptool.unregisterConfiglet(placeful_prefs_configlet['id'])
        logger.info('Removing CMFPlacefulWorkflow Configlet')
    except:
        logger.info('Failed to remove CMFPlacefulWorkflow Configlet')

    wf_tool = getToolByName(portal, 'portal_workflow')
    if IPlacefulMarker.providedBy(wf_tool):
        noLongerProvides(wf_tool, IPlacefulMarker)
        logger.info('Removed placeful marker from portal_workflow.')
    # Mark our base profile as uninstalled, because:
    # 1. It is good practice.
    # 2. Otherwise when the user installs CMFPlacefulWorkflow again,
    #    portal_setup will not apply our base profile.
    portal_setup = getToolByName(portal, 'portal_setup')
    portal_setup.unsetLastVersionForProfile(
        'Products.CMFPlacefulWorkflow:base')
예제 #9
0
def uninstall(self, reinstall=False, out=None):
    if out is None:
        out = StringIO()

    getSiteManager(self).unregisterUtility(self['portal_placeful_workflow'],
                                           IPlacefulWorkflowTool)
    # uninstall configlets
    try:
        cptool = getToolByName(self, 'portal_controlpanel')
        cptool.unregisterConfiglet(placeful_prefs_configlet['id'])
        out.write('Removing CMFPlacefulWorkflow Configlet')
    except:
        out.write('Failed to remove CMFPlacefulWorkflow Configlet')

    wf_tool = getToolByName(self, 'portal_workflow')
    if IPlacefulMarker.providedBy(wf_tool):
        noLongerProvides(wf_tool, IPlacefulMarker)

    return out.getvalue()