Esempio n. 1
0
 def test_IdmUtilsMethods_can_do_transition0(self):
     imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail',
                        datetime.now(), 'my-id')
     self.assertEqual(api.content.get_state(imail), 'created')
     view = IdmUtilsMethods(imail, imail.REQUEST)
     # no treating_group nor title: NOK
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     imail.title = u'test'
     # tg ok, state ok, assigner_user nok but auc ok: OK
     imail.treating_groups = get_registry_organizations()[0]
     self.assertTrue(view.can_do_transition('propose_to_agent'))
     # tg ok, state ok, assigner_user nok, auc nok: NOK
     setRoles(self.portal, TEST_USER_ID, ['Reviewer'])
     api.portal.set_registry_record(AUC_RECORD, 'mandatory')
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     # tg ok, state ok, assigner_user nok, auc ok: OK
     api.portal.set_registry_record(AUC_RECORD, 'no_check')
     self.assertTrue(view.can_do_transition('propose_to_agent'))
     # tg ok, state ok, assigner_user ok, auc nok: OK
     imail.assigned_user = '******'
     api.portal.set_registry_record(AUC_RECORD, 'mandatory')
     self.assertTrue(view.can_do_transition('propose_to_agent'))
     # WE DO TRANSITION
     api.content.transition(imail, 'propose_to_agent')
     self.assertEqual(api.content.get_state(imail), 'proposed_to_agent')
     # tg ok, state ok, (assigner_user nok, auc nok): OK
     imail.assigned_user = None
     self.assertTrue(view.can_do_transition('back_to_creation'))
     self.assertTrue(view.can_do_transition('back_to_manager'))
     self.assertFalse(view.can_do_transition('unknown'))
Esempio n. 2
0
def dmsincomingmail_transition(mail, event):
    """When closing an incoming mail, add the assigned_user if necessary."""
    if event.transition and event.transition.id == 'close' and mail.assigned_user is None:
        username = event.status['actor']
        view = IdmUtilsMethods(mail, mail.REQUEST)
        if view.is_in_user_groups(suffixes=IM_EDITOR_SERVICE_FUNCTIONS, org_uid=mail.treating_groups,
                                  user=api.user.get(username)):
            mail.assigned_user = username
            mail.reindexObject(['assigned_user'])
Esempio n. 3
0
 def test_IdmUtilsMethods_proposed_to_premanager_col_cond(self):
     imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail',
                        datetime.now(), 'my-id')
     view = IdmUtilsMethods(imail, imail.REQUEST)
     self.assertFalse(view.proposed_to_pre_manager_col_cond())
     login(self.portal, 'encodeur')
     self.assertTrue(view.proposed_to_pre_manager_col_cond())
     login(self.portal, 'agent')
     self.assertFalse(view.proposed_to_pre_manager_col_cond())
     api.group.add_user(groupname='abc_group_encoder', username='******')
     self.assertTrue(view.proposed_to_pre_manager_col_cond())
     login(self.portal, 'dirg')
     self.assertTrue(view.proposed_to_pre_manager_col_cond())
     login(self.portal, 'agent1')
     self.assertFalse(view.proposed_to_pre_manager_col_cond())
     api.group.create('pre_manager', 'Pre manager')
     api.group.add_user(groupname='pre_manager', username='******')
     self.assertTrue(view.proposed_to_pre_manager_col_cond())
Esempio n. 4
0
 def test_IdmUtilsMethods_proposed_to_n_plus_col_cond1(self):
     folder = self.portal['incoming-mail']['mail-searches']
     col = folder['searchfor_proposed_to_n_plus_1']
     n_plus_1_view = IdmUtilsMethods(col, col.REQUEST)
     self.assertFalse(n_plus_1_view.proposed_to_n_plus_col_cond())
     login(self.portal, 'encodeur')
     self.assertTrue(n_plus_1_view.proposed_to_n_plus_col_cond())
     login(self.portal, 'agent')
     self.assertFalse(n_plus_1_view.proposed_to_n_plus_col_cond())
     api.group.add_user(groupname='abc_group_encoder', username='******')
     self.assertTrue(n_plus_1_view.proposed_to_n_plus_col_cond())
     api.group.remove_user(groupname='abc_group_encoder', username='******')
     login(self.portal, 'dirg')
     self.assertTrue(n_plus_1_view.proposed_to_n_plus_col_cond())
     login(self.portal, 'chef')
     self.assertTrue(n_plus_1_view.proposed_to_n_plus_col_cond())
Esempio n. 5
0
 def test_IdmUtilsMethods_user_has_review_level(self):
     imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail',
                        datetime.now(), 'my-id')
     view = IdmUtilsMethods(imail, imail.REQUEST)
     self.assertFalse(view.user_has_review_level())
     self.assertFalse(view.user_has_review_level('dmsincomingmail'))
     api.group.create(groupname='111_n_plus_1')
     api.group.add_user(groupname='111_n_plus_1', username=TEST_USER_ID)
     set_dms_config(['review_levels', 'dmsincomingmail'],
                    OrderedDict([('dir_general', {
                        'st': ['proposed_to_manager']
                    }),
                                 ('_n_plus_1', {
                                     'st': ['proposed_to_n_plus_1'],
                                     'org': 'treating_groups'
                                 })]))
     self.assertTrue(view.user_has_review_level('dmsincomingmail'))
     api.group.remove_user(groupname='111_n_plus_1', username=TEST_USER_ID)
     self.assertFalse(view.user_has_review_level('dmsincomingmail'))
     api.group.add_user(groupname='dir_general', username=TEST_USER_ID)
     self.assertTrue(view.user_has_review_level('dmsincomingmail'))
Esempio n. 6
0
 def test_IdmUtilsMethods_can_close(self):
     imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail',
                        datetime.now(), 'my-id', **{'title': u'test'})
     self.assertEqual(api.content.get_state(imail), 'created')
     view = IdmUtilsMethods(imail, imail.REQUEST)
     imail.treating_groups = get_registry_organizations()[
         0]  # direction-generale
     self.assertTrue(view.can_do_transition('propose_to_agent'))
     api.content.transition(imail, 'propose_to_agent')
     login(self.portal, 'agent')
     self.assertIsNone(imail.sender)
     self.assertIsNone(imail.mail_type)
     self.assertFalse(view.can_close())
     intids = getUtility(IIntIds)
     imail.sender = [
         RelationValue(intids.getId(self.portal.contacts['electrabel']))
     ]
     imail.mail_type = u'courrier'
     self.assertFalse(
         view.can_close())  # not part of treating group editors
     api.group.add_user(groupname='{}_editeur'.format(
         imail.treating_groups),
                        username='******')
     self.assertTrue(view.can_close())
Esempio n. 7
0
 def test_IdmUtilsMethods_get_im_folder(self):
     imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail',
                        datetime.now(), 'my-id')
     view = IdmUtilsMethods(imail, imail.REQUEST)
     self.assertEqual(view.get_im_folder(), self.portal['incoming-mail'])
Esempio n. 8
0
 def test_IdmUtilsMethods_proposed_to_n_plus_col_cond2(self):
     folder = self.portal['incoming-mail']['mail-searches']
     col1 = folder['searchfor_proposed_to_n_plus_1']
     n_plus_1_view = IdmUtilsMethods(col1, col1.REQUEST)
     col2 = folder['searchfor_proposed_to_n_plus_2']
     n_plus_2_view = IdmUtilsMethods(col2, col2.REQUEST)
     self.assertFalse(n_plus_2_view.proposed_to_n_plus_col_cond())
     login(self.portal, 'encodeur')
     self.assertTrue(n_plus_2_view.proposed_to_n_plus_col_cond())
     login(self.portal, 'agent')
     self.assertFalse(n_plus_2_view.proposed_to_n_plus_col_cond())
     api.group.add_user(groupname='abc_group_encoder', username='******')
     self.assertTrue(n_plus_2_view.proposed_to_n_plus_col_cond())
     api.group.remove_user(groupname='abc_group_encoder', username='******')
     login(self.portal, 'dirg')
     self.assertTrue(n_plus_2_view.proposed_to_n_plus_col_cond())
     login(self.portal, 'chef')
     self.assertTrue(n_plus_2_view.proposed_to_n_plus_col_cond())
     # Set N+2 to user, have to get an organization UID first
     contacts = self.portal['contacts']
     own_orga = contacts['plonegroup-organization']
     departments = own_orga.listFolderContents(
         contentFilter={'portal_type': 'organization'})
     self.portal.acl_users.source_groups.addPrincipalToGroup(
         'agent1', "%s_n_plus_2" % departments[5].UID())
     login(self.portal, 'agent1')
     self.assertTrue(n_plus_1_view.proposed_to_n_plus_col_cond()
                     )  # can view lower level collection
     self.assertTrue(n_plus_2_view.proposed_to_n_plus_col_cond())
Esempio n. 9
0
 def test_IdmUtilsMethods_can_do_transition2(self):
     # imail = createContentInContainer(self.portal['incoming-mail'], 'dmsincomingmail')
     # creation is made earlier otherwise wf_from_to['to'] is again at default value ??????????????
     self.assertEqual(api.content.get_state(self.imail), 'created')
     view = IdmUtilsMethods(self.imail, self.imail.REQUEST)
     setRoles(self.portal, TEST_USER_ID, ['Reviewer'])
     # no treating_group: NOK
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     # tg ok, following states
     self.imail.treating_groups = get_registry_organizations()[0]
     api.portal.set_registry_record(AUC_RECORD, 'no_check')
     self.assertTrue(view.can_do_transition('propose_to_n_plus_2'))
     self.assertFalse(view.can_do_transition('propose_to_n_plus_1'))
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     # tg ok, following states: no more n_plus_ user
     groupname2 = '{}_n_plus_2'.format(self.imail.treating_groups)
     api.group.remove_user(groupname=groupname2, username='******')
     self.assertFalse(group_has_user(groupname2))
     self.assertFalse(view.can_do_transition('propose_to_n_plus_2'))
     self.assertTrue(view.can_do_transition('propose_to_n_plus_1'))
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     groupname1 = '{}_n_plus_1'.format(self.imail.treating_groups)
     api.group.remove_user(groupname=groupname1, username='******')
     self.assertFalse(group_has_user(groupname1))
     self.assertFalse(view.can_do_transition('propose_to_n_plus_2'))
     self.assertFalse(view.can_do_transition('propose_to_n_plus_1'))
     self.assertTrue(view.can_do_transition('propose_to_agent'))
     # tg ok, assigner_user nok, auc ok
     api.portal.set_registry_record(AUC_RECORD, 'n_plus_1')
     self.assertFalse(
         view.can_do_transition('propose_to_n_plus_1'))  # no user
     self.assertTrue(view.can_do_transition(
         'propose_to_agent'))  # ok because no n+1 level
     # tg ok, assigner_user nok, auc nok
     api.portal.set_registry_record(AUC_RECORD, 'mandatory')
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     # tg ok, state ok, assigner_user ok, auc nok
     self.imail.assigned_user = '******'
     self.assertTrue(view.can_do_transition('propose_to_agent'))
     # WE DO TRANSITION
     api.group.add_user(groupname=groupname2, username='******')
     api.content.transition(self.imail, 'propose_to_n_plus_2')
     self.assertEqual(api.content.get_state(self.imail),
                      'proposed_to_n_plus_2')
     # tg ok, state ok, assigner_user nok, auc nok
     self.imail.assigned_user = None
     self.assertFalse(view.can_do_transition('propose_to_n_plus_1'))
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     self.assertTrue(view.can_do_transition('back_to_creation'))
     self.assertTrue(view.can_do_transition('back_to_manager'))
     # WE DO TRANSITION
     api.group.add_user(groupname=groupname1, username='******')
     api.content.transition(self.imail, 'propose_to_n_plus_1')
     self.assertEqual(api.content.get_state(self.imail),
                      'proposed_to_n_plus_1')
     self.assertFalse(view.can_do_transition('propose_to_agent'))
     self.assertTrue(view.can_do_transition('back_to_n_plus_2'))
     self.assertFalse(view.can_do_transition('back_to_creation'))
     self.assertFalse(view.can_do_transition('back_to_manager'))
     # we remove n+2 users
     api.group.remove_user(groupname=groupname2, username='******')
     self.assertFalse(view.can_do_transition('back_to_n_plus_2'))
     self.assertTrue(view.can_do_transition('back_to_creation'))
     self.assertTrue(view.can_do_transition('back_to_manager'))
     # WE DO TRANSITION
     self.imail.assigned_user = '******'
     api.content.transition(self.imail, 'propose_to_agent')
     self.assertEqual(api.content.get_state(self.imail),
                      'proposed_to_agent')
     self.assertTrue(view.can_do_transition('back_to_n_plus_1'))
     self.assertFalse(view.can_do_transition('back_to_n_plus_2'))
     self.assertFalse(view.can_do_transition('back_to_creation'))
     self.assertFalse(view.can_do_transition('back_to_manager'))
     # we remove n+1 users
     api.group.remove_user(groupname=groupname1, username='******')
     api.group.add_user(groupname=groupname2, username='******')
     self.assertTrue(view.can_do_transition('back_to_n_plus_2'))
     self.assertFalse(view.can_do_transition('back_to_n_plus_1'))
     self.assertFalse(view.can_do_transition('back_to_creation'))
     self.assertFalse(view.can_do_transition('back_to_manager'))