Ejemplo n.º 1
0
    def test_checkGuardExpr(self):

        #
        # Basic checks.
        #

        guard = Guard()

        # Create compulsory context elements
        sm = getSecurityManager()
        self.site._setObject("dummy", DummyContent("dummy"))
        ob = self.site.dummy
        wf_def = self._getDummyWorkflow()

        # Initialize the guard with an ok guard
        guard_props = {"guard_permissions": "", "guard_roles": "", "guard_expr": "python:1"}

        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(guard.check(sm, wf_def, ob))

        # Initialize the guard with a not ok guard
        guard_props = {"guard_permissions": "", "guard_roles": "", "guard_expr": "python:0"}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(not guard.check(sm, wf_def, ob))
Ejemplo n.º 2
0
    def test_checkWithKwargs(self):

        #
        # Checks with kwargs
        #

        guard = Guard()

        # Create compulsory context elements
        sm = getSecurityManager()
        self.site._setObject('dummy', DummyContent('dummy'))
        ob = self.site.dummy
        wf_def = self._getDummyWorkflow()

        # Initialize the guard with an ok guard
        guard_props = {'guard_permissions':'',
                       'guard_roles':'',
                       'guard_expr' :'python:1'}

        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(guard.check(sm, wf_def, ob, arg1=1, arg2=2))

        # Initialize the guard with a not ok guard
        guard_props = {'guard_permissions':'',
                       'guard_roles':'',
                       'guard_expr' :'python:0'}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(not guard.check(sm, wf_def, ob, arg1=1, arg2=2))
Ejemplo n.º 3
0
    def test_checkGuardExpr(self):

        #
        # Basic checks.
        #

        guard = Guard()

        # Create compulsory context elements
        sm = getSecurityManager()
        ob = DummyContent('dummy')
        wf_def = self._getDummyWorkflow()

        # Initialize the guard with an ok guard
        guard_props = {'guard_permissions':'',
                       'guard_roles':'',
                       'guard_expr' :'python:1'}

        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(guard.check(sm, wf_def, ob))

        # Initialize the guard with a not ok guard
        guard_props = {'guard_permissions':'',
                       'guard_roles':'',
                       'guard_expr' :'python:0'}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(not guard.check(sm, wf_def, ob))
Ejemplo n.º 4
0
    def test_checkGuardExpr(self):

        #
        # Basic checks.
        #

        guard = Guard()

        # Create compulsory context elements
        sm = getSecurityManager()
        ob = DummyContent('dummy')
        wf_def = self._getDummyWorkflow()

        # Initialize the guard with an ok guard
        guard_props = {
            'guard_permissions': '',
            'guard_roles': '',
            'guard_expr': 'python:1'
        }

        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(guard.check(sm, wf_def, ob))

        # Initialize the guard with a not ok guard
        guard_props = {
            'guard_permissions': '',
            'guard_roles': '',
            'guard_expr': 'python:0'
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(not guard.check(sm, wf_def, ob))
Ejemplo n.º 5
0
    def test_checkWithKwargs(self):

        #
        # Checks with kwargs
        #

        guard = Guard()

        # Create compulsory context elements
        sm = getSecurityManager()
        self.site._setObject('dummy', DummyContent('dummy'))
        ob = self.site.dummy
        wf_def = self._getDummyWorkflow()

        # Initialize the guard with an ok guard
        guard_props = {
            'guard_permissions': '',
            'guard_roles': '',
            'guard_expr': 'python:1'
        }

        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(guard.check(sm, wf_def, ob, arg1=1, arg2=2))

        # Initialize the guard with a not ok guard
        guard_props = {
            'guard_permissions': '',
            'guard_roles': '',
            'guard_expr': 'python:0'
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res)
        self.assert_(not guard.check(sm, wf_def, ob, arg1=1, arg2=2))
Ejemplo n.º 6
0
def _initDCWorkflowCreationGuard(workflow, guard):
    """Initialize Instance creation conditions guard
    """
    if guard is None:
        workflow.creation_guard = None
    else:
        props = {'guard_roles': ';'.join(guard['roles']),
                 'guard_permissions': ';'.join(guard['permissions']),
                 'guard_groups': ';'.join(guard['groups']),
                 'guard_expr': guard['expression']}
        g = Guard()
        g.changeFromProperties(props)
        workflow.creation_guard = g
Ejemplo n.º 7
0
 def setProperties(self, title, new_state_id,
                   trigger_type=TRIGGER_USER_ACTION, script_name='',
                   after_script_name='',
                   actbox_name='', actbox_url='',
                   actbox_category='workflow', actbox_icon='',
                   props=None, REQUEST=None, description=''):
     '''
     '''
     self.title = str(title)
     self.description = str(description)
     self.new_state_id = str(new_state_id)
     self.trigger_type = int(trigger_type)
     self.script_name = str(script_name)
     self.after_script_name = str(after_script_name)
     g = Guard()
     if g.changeFromProperties(props or REQUEST):
         self.guard = g
     else:
         self.guard = None
     self.actbox_name = str(actbox_name)
     self.actbox_url = str(actbox_url)
     self.actbox_icon = str(actbox_icon)
     self.actbox_category = str(actbox_category)
     if REQUEST is not None:
         return self.manage_properties(REQUEST, 'Properties changed.')
Ejemplo n.º 8
0
    def setProperties(self,
                      description,
                      default_value='',
                      default_expr='',
                      for_catalog=0,
                      for_status=0,
                      update_always=0,
                      props=None,
                      REQUEST=None):
        '''
        '''
        self.description = str(description)
        self.default_value = str(default_value)
        if default_expr:
            self.default_expr = Expression(default_expr)
        else:
            self.default_expr = None

        g = Guard()
        if g.changeFromProperties(props or REQUEST):
            self.info_guard = g
        else:
            self.info_guard = None
        self.for_catalog = bool(for_catalog)
        self.for_status = bool(for_status)
        self.update_always = bool(update_always)
        if REQUEST is not None:
            return self.manage_properties(REQUEST, 'Properties changed.')
Ejemplo n.º 9
0
 def setProperties(self,
                   title,
                   new_state_id,
                   trigger_type=TRIGGER_USER_ACTION,
                   script_name='',
                   after_script_name='',
                   actbox_name='',
                   actbox_url='',
                   actbox_category='workflow',
                   actbox_icon='',
                   props=None,
                   REQUEST=None,
                   description=''):
     '''
     '''
     self.title = str(title)
     self.description = str(description)
     self.new_state_id = str(new_state_id)
     self.trigger_type = int(trigger_type)
     self.script_name = str(script_name)
     self.after_script_name = str(after_script_name)
     g = Guard()
     if g.changeFromProperties(props or REQUEST):
         self.guard = g
     else:
         self.guard = None
     self.actbox_name = str(actbox_name)
     self.actbox_url = str(actbox_url)
     self.actbox_icon = str(actbox_icon)
     self.actbox_category = str(actbox_category)
     if REQUEST is not None:
         return self.manage_properties(REQUEST, 'Properties changed.')
Ejemplo n.º 10
0
    def setProperties(
        self,
        description,
        default_value="",
        default_expr="",
        for_catalog=0,
        for_status=0,
        update_always=0,
        props=None,
        REQUEST=None,
    ):
        """
        """
        self.description = str(description)
        self.default_value = str(default_value)
        if default_expr:
            self.default_expr = Expression(default_expr)
        else:
            self.default_expr = None

        g = Guard()
        if g.changeFromProperties(props or REQUEST):
            self.info_guard = g
        else:
            self.info_guard = None
        self.for_catalog = bool(for_catalog)
        self.for_status = bool(for_status)
        self.update_always = bool(update_always)
        if REQUEST is not None:
            return self.manage_properties(REQUEST, "Properties changed.")
Ejemplo n.º 11
0
 def setProperties(self, title,
                   portal_type_filter=None,
                   portal_type_group_filter=None,
                   trigger_type=TRIGGER_WORKFLOW_METHOD,
                   once_per_transaction=False,
                   temporary_document_disallowed=False,
                   script_name=(),
                   after_script_name=(),
                   before_commit_script_name=(),
                   activate_script_name=(),
                   actbox_name='', actbox_url='',
                   actbox_category='workflow',
                   method_id=(),
                   props=None, REQUEST=None, description=''):
     """
       Update transition properties
       XXX - then make sure that method_id is WorkflowMethod for portal_type_filter
       XXX - this will likely require dynamic
     """
     if type(method_id) is type(''):
         self.method_id = method_id.split()
     else:
         self.method_id = method_id
     if portal_type_filter is not None and 'None' in portal_type_filter:
       portal_type_filter = None
     if portal_type_group_filter is not None and 'None' in portal_type_group_filter:
       portal_type_group_filter = None
     if 'None' in after_script_name:
       after_script_name = ()
     if 'None' in activate_script_name:
       activate_script_name = ()
     if 'None' in script_name:
       script_name = ()
     if 'None' in before_commit_script_name:
       before_commit_script_name = ()
     self.portal_type_filter = portal_type_filter
     self.portal_type_group_filter = portal_type_group_filter
     self.title = str(title)
     self.description = str(description)
     self.trigger_type = int(trigger_type)
     self.once_per_transaction = bool(once_per_transaction)
     self.temporary_document_disallowed = bool(temporary_document_disallowed)
     self.script_name = script_name
     self.after_script_name = after_script_name
     self.before_commit_script_name = before_commit_script_name
     self.activate_script_name = activate_script_name
     g = Guard()
     if g.changeFromProperties(props or REQUEST):
         self.guard = g
     else:
         self.guard = None
     self.actbox_name = str(actbox_name)
     self.actbox_url = str(actbox_url)
     self.actbox_category = str(actbox_category)
     # reset cached methods
     self.getPortalObject().portal_types.resetDynamicDocuments()
     if REQUEST is not None:
         return self.manage_properties(REQUEST, 'Properties changed.')
Ejemplo n.º 12
0
def manage_setGuard(self, props=None, REQUEST=None):
  '''
  '''
  g = Guard()
  if g.changeFromProperties(props or REQUEST):
    self.guard = g
  else:
    self.guard = None
  if REQUEST is not None:
    return self.manage_guardForm(REQUEST, 'Properties changed.')
Ejemplo n.º 13
0
def manage_setGuard(self, props=None, REQUEST=None):
    '''
  '''
    g = Guard()
    if g.changeFromProperties(props or REQUEST):
        self.guard = g
    else:
        self.guard = None
    if REQUEST is not None:
        return self.manage_guardForm(REQUEST, 'Properties changed.')
 def setProperties(self, title, manager_bypass=0, props=None,
                   REQUEST=None, description=''):
     """Sets basic properties.
     """
     self.title = str(title)
     self.description = str(description)
     self.manager_bypass = manager_bypass and 1 or 0
     g = Guard()
     if g.changeFromProperties(props or REQUEST):
         self.creation_guard = g
     else:
         self.creation_guard = None
     if REQUEST is not None:
         return self.manage_properties(
             REQUEST, manage_tabs_message='Properties changed.')
Ejemplo n.º 15
0
def WorkflowUIMixin_setProperties( self, title
                                 , description='' # the only addition to WorkflowUIMixin.setProperties
                                 , manager_bypass=0, props=None, REQUEST=None):
  """Sets basic properties.
  """
  self.title = str(title)
  self.description = str(description)
  self.manager_bypass = manager_bypass and 1 or 0
  g = Guard()
  if g.changeFromProperties(props or REQUEST):
      self.creation_guard = g
  else:
      self.creation_guard = None
  if REQUEST is not None:
      return self.manage_properties(
          REQUEST, manage_tabs_message='Properties changed.')
Ejemplo n.º 16
0
    def setProperties(self,
                      description,
                      actbox_name='',
                      actbox_url='',
                      actbox_category='global',
                      actbox_icon='',
                      props=None,
                      REQUEST=None):
        '''
        '''
        if props is None:
            props = REQUEST
        self.description = str(description)
        for key in self.getAvailableCatalogVars():
            # Populate var_matches.
            fieldname = 'var_match_%s' % key
            v = props.get(fieldname, '')
            if v:
                if not self.var_matches:
                    self.var_matches = PersistentMapping()

                if tales_re.match(v).group(1):
                    # Found a TALES prefix
                    self.var_matches[key] = Expression(v)
                else:
                    # Falling back to formatted string
                    v = [var.strip() for var in v.split(';')]
                    self.var_matches[key] = tuple(v)

            else:
                if self.var_matches and key in self.var_matches:
                    del self.var_matches[key]
        self.actbox_name = str(actbox_name)
        self.actbox_url = str(actbox_url)
        self.actbox_category = str(actbox_category)
        self.actbox_icon = str(actbox_icon)
        g = Guard()
        if g.changeFromProperties(props or REQUEST):
            self.guard = g
        else:
            self.guard = None
        if REQUEST is not None:
            return self.manage_properties(REQUEST, 'Properties changed.')
Ejemplo n.º 17
0
def WorkflowUIMixin_setProperties(
    self,
    title,
    description="",  # the only addition to WorkflowUIMixin.setProperties
    manager_bypass=0,
    props=None,
    REQUEST=None,
):
    """Sets basic properties.
  """
    self.title = str(title)
    self.description = str(description)
    self.manager_bypass = manager_bypass and 1 or 0
    g = Guard()
    if g.changeFromProperties(props or REQUEST):
        self.creation_guard = g
    else:
        self.creation_guard = None
    if REQUEST is not None:
        return self.manage_properties(REQUEST, manage_tabs_message="Properties changed.")
Ejemplo n.º 18
0
def manage_setGuard(self, props=None, REQUEST=None):
  '''
  '''
  g = Guard()
  if g.changeFromProperties(props or REQUEST):
    guard = self.guard
    if guard is None:
      self.guard = g
    else:
      guard._p_activate()
      if guard.__dict__ != g.__dict__:
        guard.__dict__.clear()
        guard.__dict__.update(g.__dict__)
        guard._p_changed = 1
  else:
    try:
      del self.guard
    except AttributeError:
      pass
  if REQUEST is not None:
    return self.manage_guardForm(REQUEST, 'Properties changed.')
Ejemplo n.º 19
0
def manage_setGuard(self, props=None, REQUEST=None):
    '''
  '''
    g = Guard()
    if g.changeFromProperties(props or REQUEST):
        guard = self.guard
        if guard is None:
            self.guard = g
        else:
            guard._p_activate()
            if guard.__dict__ != g.__dict__:
                guard.__dict__.clear()
                guard.__dict__.update(g.__dict__)
                guard._p_changed = 1
    else:
        try:
            del self.guard
        except AttributeError:
            pass
    if REQUEST is not None:
        return self.manage_guardForm(REQUEST, 'Properties changed.')
Ejemplo n.º 20
0
    def setProperties(self, description,
                      actbox_name='', actbox_url='', actbox_category='global',
                      actbox_icon='', props=None, REQUEST=None):
        '''
        '''
        if props is None:
            props = REQUEST
        self.description = str(description)
        for key in self.getAvailableCatalogVars():
            # Populate var_matches.
            fieldname = 'var_match_%s' % key
            v = props.get(fieldname, '')
            if v:
                if not self.var_matches:
                    self.var_matches = PersistentMapping()

                if tales_re.match(v).group(1):
                    # Found a TALES prefix
                    self.var_matches[key] = Expression(v)
                else:
                    # Falling back to formatted string
                    v = [ var.strip() for var in v.split(';') ]
                    self.var_matches[key] = tuple(v)

            else:
                if self.var_matches and self.var_matches.has_key(key):
                    del self.var_matches[key]
        self.actbox_name = str(actbox_name)
        self.actbox_url = str(actbox_url)
        self.actbox_category = str(actbox_category)
        self.actbox_icon = str(actbox_icon)
        g = Guard()
        if g.changeFromProperties(props or REQUEST):
            self.guard = g
        else:
            self.guard = None
        if REQUEST is not None:
            return self.manage_properties(REQUEST, 'Properties changed.')
Ejemplo n.º 21
0
    def test_BaseGuardAPI(self):
        from zope.tales.tales import CompilerError

        #
        # Test guard basic API
        #

        guard = Guard()
        self.assertNotEqual(guard, None)

        # Test default values
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getRolesText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Initialize the guard with empty values
        # not initialization
        guard_props = {
            'guard_permissions': '',
            'guard_roles': '',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 0)

        # Test default values
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getRolesText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager',
            'guard_permissions': '',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager;',
            'guard_permissions': '',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), 'Manager; ')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager;Member',
            'guard_permissions': '',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), 'Manager; Member')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager;Member',
            'guard_permissions': '',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), 'Manager; Member')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager',
            'guard_permissions': '',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager',
            'guard_permissions': 'ManagePortal;',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal; ')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager',
            'guard_permissions': 'ManagePortal',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager',
            'guard_permissions': 'ManagePortal',
            'guard_expr': 'python:1'
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), 'python:1')

        # Change guard
        guard_props = {
            'guard_roles': 'Manager',
            'guard_permissions': 'ManagePortal',
            'guard_expr': 'string:'
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), 'string:')

        # Change guard with wrong TALES
        guard_props = {
            'guard_roles': 'Manager',
            'guard_permissions': 'ManagePortal',
            'guard_expr': 'python:'
        }
        self.assertRaises(CompilerError, guard.changeFromProperties,
                          guard_props)

        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), 'string:')

        # reinit the guard
        guard_props = {
            'guard_permissions': '',
            'guard_roles': '',
            'guard_expr': ''
        }
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 0)

        # No API on DCWorkflow guard to reset properly....
        guard.permissions = ''
        guard.roles = ''
        guard.expr = None

        # Test default values
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getRolesText(), '')
        self.assertEqual(guard.getExprText(), '')
Ejemplo n.º 22
0
    def test_BaseGuardAPI(self):

        #
        # Test guard basic API
        #

        guard = Guard()
        self.assertNotEqual(guard, None)

        # Test default values
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getRolesText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Initialize the guard with empty values
        # not initialization
        guard_props = {'guard_permissions':'',
                       'guard_roles':'',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==0)

        # Test default values
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getRolesText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager',
                       'guard_permissions':'',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager;',
                       'guard_permissions':'',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), 'Manager; ')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager;Member',
                       'guard_permissions':'',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), 'Manager; Member')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager;Member',
                       'guard_permissions':'',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), 'Manager; Member')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager',
                       'guard_permissions':'',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager',
                       'guard_permissions':'ManagePortal;',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal; ')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager',
                       'guard_permissions':'ManagePortal',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), '')

        # Change guard
        guard_props = {'guard_roles':'Manager',
                       'guard_permissions':'ManagePortal',
                       'guard_expr' :'python:1'}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), 'python:1')

        # Change guard
        guard_props = {'guard_roles':'Manager',
                       'guard_permissions':'ManagePortal',
                       'guard_expr' :'string:'}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==1)
        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), 'string:')

        # Change guard with wrong TALES
        guard_props = {'guard_roles':'Manager',
                       'guard_permissions':'ManagePortal',
                       'guard_expr' :'python:'}
        self.assertRaises(CompilerError,
                          guard.changeFromProperties, guard_props)

        self.assertEqual(guard.getRolesText(), 'Manager')
        self.assertEqual(guard.getPermissionsText(), 'ManagePortal')
        self.assertEqual(guard.getExprText(), 'string:')

        # reinit the guard
        guard_props = {'guard_permissions':'',
                       'guard_roles':'',
                       'guard_expr' :''}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res==0)

        # No API on DCWorkflow guard to reset properly....
        guard.permissions = ''
        guard.roles = ''
        guard.expr = None

        # Test default values
        self.assertEqual(guard.getPermissionsText(), '')
        self.assertEqual(guard.getRolesText(), '')
        self.assertEqual(guard.getExprText(), '')
Ejemplo n.º 23
0
 def setProperties(self,
                   title,
                   portal_type_filter=None,
                   portal_type_group_filter=None,
                   trigger_type=TRIGGER_WORKFLOW_METHOD,
                   once_per_transaction=False,
                   temporary_document_disallowed=False,
                   script_name=(),
                   after_script_name=(),
                   before_commit_script_name=(),
                   activate_script_name=(),
                   actbox_name='',
                   actbox_url='',
                   actbox_category='workflow',
                   method_id=(),
                   props=None,
                   REQUEST=None,
                   description=''):
     """
       Update transition properties
       XXX - then make sure that method_id is WorkflowMethod for portal_type_filter
       XXX - this will likely require dynamic
     """
     if type(method_id) is type(''):
         self.method_id = method_id.split()
     else:
         self.method_id = method_id
     if portal_type_filter is not None and 'None' in portal_type_filter:
         portal_type_filter = None
     if portal_type_group_filter is not None and 'None' in portal_type_group_filter:
         portal_type_group_filter = None
     if 'None' in after_script_name:
         after_script_name = ()
     if 'None' in activate_script_name:
         activate_script_name = ()
     if 'None' in script_name:
         script_name = ()
     if 'None' in before_commit_script_name:
         before_commit_script_name = ()
     self.portal_type_filter = portal_type_filter
     self.portal_type_group_filter = portal_type_group_filter
     self.title = str(title)
     self.description = str(description)
     self.trigger_type = int(trigger_type)
     self.once_per_transaction = bool(once_per_transaction)
     self.temporary_document_disallowed = bool(
         temporary_document_disallowed)
     self.script_name = script_name
     self.after_script_name = after_script_name
     self.before_commit_script_name = before_commit_script_name
     self.activate_script_name = activate_script_name
     g = Guard()
     if g.changeFromProperties(props or REQUEST):
         self.guard = g
     else:
         self.guard = None
     self.actbox_name = str(actbox_name)
     self.actbox_url = str(actbox_url)
     self.actbox_category = str(actbox_category)
     # reset cached methods
     self.getPortalObject().portal_types.resetDynamicDocuments()
     if REQUEST is not None:
         return self.manage_properties(REQUEST, 'Properties changed.')
Ejemplo n.º 24
0
    def test_BaseGuardAPI(self):

        #
        # Test guard basic API
        #

        guard = Guard()
        self.assertNotEqual(guard, None)

        # Test default values
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getRolesText(), "")
        self.assertEqual(guard.getExprText(), "")

        # Initialize the guard with empty values
        # not initialization
        guard_props = {"guard_permissions": "", "guard_roles": "", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 0)

        # Test default values
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getRolesText(), "")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager", "guard_permissions": "", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), "Manager")
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager;", "guard_permissions": "", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), "Manager; ")
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager;Member", "guard_permissions": "", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), "Manager; Member")
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager;Member", "guard_permissions": "", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        # With one space after the ';'
        self.assertEqual(guard.getRolesText(), "Manager; Member")
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager", "guard_permissions": "", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), "Manager")
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager", "guard_permissions": "ManagePortal;", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), "Manager")
        self.assertEqual(guard.getPermissionsText(), "ManagePortal; ")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager", "guard_permissions": "ManagePortal", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), "Manager")
        self.assertEqual(guard.getPermissionsText(), "ManagePortal")
        self.assertEqual(guard.getExprText(), "")

        # Change guard
        guard_props = {"guard_roles": "Manager", "guard_permissions": "ManagePortal", "guard_expr": "python:1"}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), "Manager")
        self.assertEqual(guard.getPermissionsText(), "ManagePortal")
        self.assertEqual(guard.getExprText(), "python:1")

        # Change guard
        guard_props = {"guard_roles": "Manager", "guard_permissions": "ManagePortal", "guard_expr": "string:"}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 1)
        self.assertEqual(guard.getRolesText(), "Manager")
        self.assertEqual(guard.getPermissionsText(), "ManagePortal")
        self.assertEqual(guard.getExprText(), "string:")

        # Change guard with wrong TALES
        guard_props = {"guard_roles": "Manager", "guard_permissions": "ManagePortal", "guard_expr": "python:"}
        self.assertRaises(CompilerError, guard.changeFromProperties, guard_props)

        self.assertEqual(guard.getRolesText(), "Manager")
        self.assertEqual(guard.getPermissionsText(), "ManagePortal")
        self.assertEqual(guard.getExprText(), "string:")

        # reinit the guard
        guard_props = {"guard_permissions": "", "guard_roles": "", "guard_expr": ""}
        res = guard.changeFromProperties(guard_props)
        self.assert_(res == 0)

        # No API on DCWorkflow guard to reset properly....
        guard.permissions = ""
        guard.roles = ""
        guard.expr = None

        # Test default values
        self.assertEqual(guard.getPermissionsText(), "")
        self.assertEqual(guard.getRolesText(), "")
        self.assertEqual(guard.getExprText(), "")