Exemple #1
0
    def test_OMPDGenerationView(self):
        """
            Test all methods of OMPDGenerationView view
        """
        rep1 = get_object(oid='reponse1', ptype='dmsoutgoingmail')
        view = rep1.restrictedTraverse('persistent-document-generation')
        hview = rep1.restrictedTraverse('document_generation_helper_view')
        view.pod_template = self.portal['templates']['om']['main']
        # view(template_uid=template.UID(), output_format='odt')

        # Test title
        self.assertEqual(view._get_title('', ''), u'Modèle de base')

        # Test generate_persistent_doc
        doc = view.generate_persistent_doc(view.pod_template, 'odt')
        self.assertEqual(doc.portal_type, 'dmsommainfile')
        self.assertIsNone(doc.scan_user)

        # Test redirects
        # redirects has be monkey patched in tests !!
        # self.assertEqual(view.redirects(doc),
        #                 'http://nohost/plone/outgoing-mail/reponse1/012999900000001/external_edit')

        # Test generation context
        gen_con = view._get_generation_context(hview, view.pod_template)
        self.assertEqual(gen_con['scan_id'], 'IMIO012999900000002')
        get_object(oid='reponse1', ptype='dmsoutgoingmail').id = 'test_creation_modele'
        gen_con = view._get_generation_context(hview, view.pod_template)
        self.assertEqual(gen_con['scan_id'], 'IMIO012999900000000')
Exemple #2
0
 def setUp(self):
     self.portal = self.layer['portal']
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     self.intids = getUtility(IIntIds)
     self.mail_table = self.portal['incoming-mail']['mail-searches'].unrestrictedTraverse('@@faceted-table-view')
     self.task_table = self.portal['incoming-mail']['mail-searches'].unrestrictedTraverse('@@faceted-table-view')
     self.imf = self.portal['incoming-mail']
     self.im1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     self.im5 = get_object(oid='courrier5', ptype='dmsincomingmail')
     self.ta1 = self.im1['tache1']
     self.ta31 = self.im1['tache3']['tache3-1']
     self.maxDiff = None
Exemple #3
0
 def setUp(self):
     self.portal = self.layer['portal']
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     self.portal.REQUEST['AUTHENTICATED_USER'] = api.user.get(username=TEST_USER_ID)
     self.im2 = get_object(oid='courrier2', ptype='dmsincomingmail')
     self.view = self.im2.unrestrictedTraverse('@@actions_panel')
     self.intids = getUtility(IIntIds)
Exemple #4
0
 def test_task_transition(self):
     # task = createContentInContainer(self.imail, 'task', id='t1')
     task = get_object(oid='courrier1', ptype='dmsincomingmail')['tache1']
     # no assigned_user and no TaskServiceValidation
     self.assertIsNone(task.assigned_user)
     api.content.transition(task, transition='do_to_assign')
     self.assertEqual(api.content.get_state(task), 'to_do')
     # assigned_user and no TaskServiceValidation
     api.content.transition(task, transition='back_in_created2')
     task.assigned_user = '******'
     api.content.transition(task, transition='do_to_assign')
     self.assertEqual(api.content.get_state(task), 'to_do')
     # no assigned_user but TaskServiceValidation but no user in groups
     api.content.transition(task, transition='back_in_created2')
     task.assigned_user = None
     add_applied_adaptation(
         'imio.dms.mail.wfadaptations.TaskServiceValidation',
         'task_workflow', False)
     api.content.transition(task, transition='do_to_assign')
     self.assertEqual(api.content.get_state(task), 'to_do')
     # no assigned_user but TaskServiceValidation and user in groups
     api.content.transition(task, transition='back_in_created2')
     api.group.create(groupname='{}_n_plus_1'.format(task.assigned_group),
                      groups=['chef'])
     api.content.transition(task, transition='do_to_assign')
     self.assertEqual(api.content.get_state(task), 'to_assign')
Exemple #5
0
 def setUp(self):
     self.portal = self.layer['portal']
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     self.pc = api.portal.get_tool('portal_catalog')
     self.imf = self.portal['incoming-mail']
     self.msf = self.imf['mail-searches']
     self.imdb = self.imf['mail-searches']['all_mails']
     self.im1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     self.im2 = get_object(oid='courrier2', ptype='dmsincomingmail')
     self.im3 = get_object(oid='courrier3', ptype='dmsincomingmail')
     self.im4 = get_object(oid='courrier4', ptype='dmsincomingmail')
     self.tsf = self.portal['tasks']['task-searches']
     self.ta1 = self.im1['tache1']
     self.ta2 = self.im1['tache2']
     self.ta3 = self.im1['tache3']
     self.pgof = self.portal['contacts']['plonegroup-organization']
Exemple #6
0
 def test_call_ContactSuggest(self):
     imail1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     view = imail1.unrestrictedTraverse('@@contact-autocomplete-suggest')
     # no term
     self.assertEqual(view(), '[]')
     # term electra
     view.request['term'] = 'electra'
     ret = json.loads(view())
     self.assertEqual(ret.pop(0), {
         "text": "Electrabel",
         "id": self.elec.UID()
     })
     self.assertEqual(ret.pop(0), {
         "text": "Electrabel / Travaux 1",
         "id": self.elec['travaux'].UID()
     })
     self.assertEqual(
         ret.pop(0), {
             "text": "Monsieur Jean Courant, Agent (Electrabel)",
             "id": self.ctct['jeancourant']['agent-electrabel'].UID()
         })
     self.assertEqual(ret.pop(0), {
         "text": "Monsieur Jean Courant",
         "id": self.ctct['jeancourant'].UID()
     })
     self.assertEqual(ret.pop(0), {
         "text": "Electrabel [TOUT]",
         "id": 'l:%s' % self.elec.UID()
     })
     self.assertEqual(
         ret.pop(0), {
             "text": "Electrabel / Travaux 1 [TOUT]",
             "id": 'l:%s' % self.elec['travaux'].UID()
         })
Exemple #7
0
 def test_RestrictedNamedBlobFile(self):
     path = "%s/batchimport/toprocess/outgoing-mail/Accusé de réception.odt" % imiodmsmail.__path__[
         0]
     odtfile = file(path, 'rb')
     odtblob = NamedBlobFile(data=odtfile.read(), filename=u'file.odt')
     odtfile.close()
     path = "%s/configure.zcml" % imiodmsmail.__path__[0]
     otherfile = file(path, 'rb')
     otherblob = NamedBlobFile(data=otherfile.read(), filename=u'file.txt')
     otherfile.close()
     registry = getUtility(IRegistry)
     # check content type
     self.assertEqual(get_contenttype(odtblob),
                      'application/vnd.oasis.opendocument.text')
     self.assertEqual(get_contenttype(otherblob), 'text/plain')
     field = RestrictedNamedBlobFile()
     # with om context and good file
     field.context = get_object(oid='reponse1',
                                ptype='dmsoutgoingmail')['1']
     field._validate(odtblob)
     # with bad file
     self.assertRaises(Invalid, field._validate, otherblob)
     # bad file, validation deactivated
     registry[
         'imio.dms.mail.browser.settings.IImioDmsMailConfig.omail_odt_mainfile'] = False
     field._validate(otherblob)
Exemple #8
0
 def test_showEditableBorder(self):
     view = get_object(
         oid='courrier1',
         ptype='dmsincomingmail').unrestrictedTraverse('@@plone')
     self.assertEqual(view.showEditableBorder(), False)
     view = self.portal['front-page'].unrestrictedTraverse('@@plone')
     self.assertEqual(view.showEditableBorder(), True)
Exemple #9
0
 def test_TaskUtilsMethods_can_do_transition1(self):
     task = get_object(oid='courrier1', ptype='dmsincomingmail')['tache1']
     api.content.transition(task, transition='do_to_assign')
     self.assertEqual(api.content.get_state(task), 'to_do')
     view = TaskUtilsMethods(task, task.REQUEST)
     setRoles(self.portal, TEST_USER_ID, ['Editor', 'Reviewer'])
     # no assigned_group: NOK
     task.assigned_group = None
     self.assertFalse(view.can_do_transition('back_in_created2'))
     self.assertFalse(view.can_do_transition('back_in_to_assign'))
     # ag ok, no user in group
     task.assigned_group = get_registry_organizations()[0]
     groupname = '{}_n_plus_1'.format(task.assigned_group)
     self.assertFalse(group_has_user(groupname))
     self.assertTrue(view.can_do_transition('back_in_created2'))
     self.assertFalse(view.can_do_transition('back_in_to_assign'))
     # ag ok, user in group
     api.group.add_user(groupname=groupname, username='******')
     self.assertTrue(group_has_user(groupname))
     self.assertFalse(view.can_do_transition('back_in_created2'))
     self.assertTrue(view.can_do_transition('back_in_to_assign'))
     # we do transition
     api.content.transition(task, transition='back_in_to_assign')
     api.content.transition(task, transition='back_in_created')
     api.content.transition(task, transition='do_to_assign')
     self.assertEqual(api.content.get_state(task), 'to_assign')
Exemple #10
0
 def test_ContextInformationViewlet(self):
     login(self.portal, 'encodeur')
     org_v = ContextInformationViewlet(self.elec, self.elec.REQUEST, None)
     self.assertListEqual(org_v.getAllMessages(), [])
     sorg_v = ContextInformationViewlet(self.elec['travaux'],
                                        self.elec.REQUEST, None)
     self.assertTrue(self.elec['travaux'].use_parent_address)
     self.assertListEqual(sorg_v.getAllMessages(), [])
     pers_v = ContextInformationViewlet(self.jean, self.elec.REQUEST, None)
     self.assertEqual(len(pers_v.getAllMessages()), 1)  # no address
     hp_v = ContextInformationViewlet(self.jean['agent-electrabel'],
                                      self.elec.REQUEST, None)
     self.assertTrue(self.jean['agent-electrabel'].use_parent_address)
     self.assertListEqual(hp_v.getAllMessages(), [])
     om_v = ContextInformationViewlet(
         get_object(oid='reponse1', ptype='dmsoutgoingmail'),
         self.elec.REQUEST, None)
     self.assertListEqual(om_v.getAllMessages(), [])
     # removing street from electrabel org
     self.elec.street = None
     msgs = org_v.getAllMessages()
     self.assertEqual(len(msgs), 1)
     self.assertTrue(isinstance(msgs[0], PseudoMessage))
     self.assertIn('missing address fields: street', msgs[0].text.output)
     self.assertEqual(len(sorg_v.getAllMessages()),
                      1)  # suborganization has missing street too
     self.assertEqual(len(hp_v.getAllMessages()),
                      1)  # held position has missing street too
     self.assertEqual(len(om_v.getAllMessages()),
                      1)  # outgoing mail has missing street too
Exemple #11
0
 def test_OutgoingMailLinksViewlet(self):
     """
         Test viewlet
     """
     rep1 = get_object(oid='reponse1', ptype='dmsoutgoingmail')
     viewlet = OutgoingMailLinksViewlet(rep1, rep1.REQUEST, None)
     self.assertFalse(viewlet.available())
     self.assertEqual(viewlet.get_generation_view_name('', ''), 'persistent-document-generation')
Exemple #12
0
 def test_find_relations(self):
     login(self.portal, 'encodeur')
     viewlet = ContactContentBackrefsViewlet(self.elec, self.elec.REQUEST,
                                             None)
     ret = viewlet.find_relations(from_attribute='sender')
     self.assertSetEqual(
         set([b.getObject() for b in ret]), {
             get_object(oid='courrier7', ptype='dmsincomingmail'),
             get_object(oid='courrier1', ptype='dmsincomingmail')
         })
     ret = viewlet.find_relations(
         from_interfaces_flattened=IImioDmsIncomingMail)
     self.assertSetEqual(
         set([b.getObject() for b in ret]), {
             get_object(oid='courrier7', ptype='dmsincomingmail'),
             get_object(oid='courrier1', ptype='dmsincomingmail')
         })
     # call on person
     viewlet = ContactContentBackrefsViewlet(self.jean, self.jean.REQUEST,
                                             None)
     ret = viewlet.find_relations()
     self.assertSetEqual(
         set([b.getObject() for b in ret]), {
             get_object(oid='courrier3', ptype='dmsincomingmail'),
             get_object(oid='courrier9', ptype='dmsincomingmail')
         })
     # call on held position
     agent = self.jean['agent-electrabel']
     viewlet = ContactContentBackrefsViewlet(agent, agent.REQUEST, None)
     ret = viewlet.find_relations()
     self.assertSetEqual(
         set([b.getObject() for b in ret]),
         {get_object(oid='courrier5', ptype='dmsincomingmail')})
Exemple #13
0
 def test_call_SenderSuggest(self):
     omail1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     view = omail1.unrestrictedTraverse('@@sender-autocomplete-suggest')
     # no term
     self.assertEqual(view(), '[]')
     # search held position
     view.request['term'] = 'directeur'
     ret = json.loads(view())
     self.assertEqual(
         ret.pop(0), {
             'text':
             u'Monsieur Maxime DG, Directeur du personnel (Mon organisation / Direction générale '
             u'/ GRH)',
             'id':
             self.pf['dirg']['directeur-du-personnel'].UID()
         })
     self.assertEqual(
         ret.pop(0), {
             'text':
             u'Monsieur Maxime DG, Directeur général (Mon organisation / Direction générale)',
             'id': self.pf['dirg']['directeur-general'].UID()
         })
     # search organization
     view.request['term'] = 'direction générale grh'
     ret = json.loads(view())
     self.assertEqual(
         ret.pop(0), {
             'text': u'Mon organisation / Direction générale / GRH',
             u'id': self.pgo['direction-generale']['grh'].UID()
         })
     self.assertEqual(
         ret.pop(0), {
             "text":
             u"Monsieur Fred Agent, Agent GRH (Mon organisation / Direction générale / GRH)",
             "id": self.pf['agent']['agent-grh'].UID()
         })
     self.assertEqual(
         ret.pop(0), {
             "text":
             u"Monsieur Michel Chef, Responsable GRH (Mon organisation / Direction générale "
             u"/ GRH)",
             "id":
             self.pf['chef']['responsable-grh'].UID()
         })
     self.assertEqual(
         ret.pop(0), {
             'text':
             u'Monsieur Maxime DG, Directeur du personnel (Mon organisation / Direction générale '
             u'/ GRH)',
             'id':
             self.pf['dirg']['directeur-du-personnel'].UID()
         })
     self.assertEqual(
         ret.pop(0), {
             'text': u'Mon organisation / Direction générale / GRH [TOUT]',
             u'id': 'l:%s' % self.pgo['direction-generale']['grh'].UID()
         })
Exemple #14
0
 def test_updateFields(self):
     imail1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     view = imail1.unrestrictedTraverse('@@reply')
     view.updateFields()
     form = self.portal.REQUEST.form
     expected_linked_mails = ('/'.join(imail1.getPhysicalPath()), )
     self.assertEqual(form['form.widgets.reply_to'], expected_linked_mails)
     self.assertEqual(translate(view.label), u'Reply to E0001 - Courrier 1')
     expected_recipients = ('/plone/contacts/electrabel', )
     self.assertEqual(form['form.widgets.recipients'], expected_recipients)
Exemple #15
0
 def test_OM_get_sender_email(self):
     om = get_object(oid='reponse1', ptype='dmsoutgoingmail')
     # default option is getting agent email
     self.assertEqual(om.get_sender_email(), u'"Michel Chef" <*****@*****.**>')
     # get service email
     replyto_key = 'imio.dms.mail.browser.settings.IImioDmsMailConfig.omail_sender_email_default'
     api.portal.set_registry_record(replyto_key, u'service_email')
     self.assertEqual(om.get_sender_email(), u'*****@*****.**')  # get higher email
     org = om.get_sender_info()['org']
     org.email = u'*****@*****.**'
     self.assertEqual(om.get_sender_email(), u'*****@*****.**')  # get nearest email
Exemple #16
0
 def test_OMMLPDGenerationView(self):
     """
         Test all methods of OMMLPDGenerationView view
     """
     rep1 = get_object(oid='reponse1', ptype='dmsoutgoingmail')
     view = rep1.restrictedTraverse('mailing-loop-persistent-document-generation')
     view.pod_template = self.portal['templates']['om']['mailing']
     view.document = rep1['1']
     view.document.title = u'Modèle de base'
     # Test title
     self.assertEqual(view._get_title('', ''), u'Publipostage, Modèle de base')
Exemple #17
0
 def test_call(self):
     imail1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     self.assertIsNone(imail1.assigned_user)
     view = imail1.unrestrictedTraverse('@@update_item')
     # called without form value
     view()
     self.assertIsNone(imail1.assigned_user)
     # called with form value
     form = self.portal.REQUEST.form
     form['assigned_user'] = '******'
     view()
     self.assertEqual(imail1.assigned_user, 'chef')
Exemple #18
0
    def test_reply_to(self):
        catalog = getUtility(ICatalog)
        imail1 = get_object(oid='courrier1', ptype='dmsincomingmail')
        imail2 = get_object(oid='courrier2', ptype='dmsincomingmail')
        omail1 = get_object(oid='reponse1', ptype='dmsoutgoingmail')
        omail2 = get_object(oid='reponse2', ptype='dmsoutgoingmail')
        omail1.reply_to = [
            RelationValue(self.intids.getId(imail1)),
            RelationValue(self.intids.getId(imail2)),
            RelationValue(self.intids.getId(omail2)),
        ]
        modified(omail1)
        self.assertEqual(len(omail1.reply_to), 3)
        omail_intid = self.intids.queryId(omail1)
        query = {
            'from_id': omail_intid,
            'from_attribute': 'reply_to'
        }

        linked = set([rel.to_object for rel in catalog.findRelations(query)])
        self.assertSetEqual(set([imail1, imail2, omail2]), linked)
Exemple #19
0
 def test_add(self):
     setRoles(self.portal, TEST_USER_ID, ['Member', 'Manager'])
     imail1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     omail1 = api.content.create(container=self.portal,
                                 type='dmsoutgoingmail',
                                 id='newo1',
                                 title='TEST')
     view = imail1.unrestrictedTraverse('@@reply')
     view.add(omail1)
     self.assertIn(
         'newo1', self.portal['outgoing-mail'][datetime.now().strftime(
             PERIODS['week'])])
Exemple #20
0
 def test_backrefs(self):
     viewlet = ContactContentBackrefsViewlet(self.elec, self.elec.REQUEST,
                                             None)
     # configure to see all refs
     api.portal.set_registry_record(
         'imio.dms.mail.browser.settings.IImioDmsMailConfig.all_backrefs_view',
         True)
     self.assertListEqual([
         self.portal.unrestrictedTraverse(b.getPath())
         for b in viewlet.backrefs()
     ], [
         get_object(oid='reponse7', ptype='dmsoutgoingmail'),
         get_object(oid='reponse1', ptype='dmsoutgoingmail'),
         get_object(oid='courrier7', ptype='dmsincomingmail'),
         get_object(oid='courrier1', ptype='dmsincomingmail')
     ])
     # configure to see only permitted refs
     api.portal.set_registry_record(
         'imio.dms.mail.browser.settings.IImioDmsMailConfig.all_backrefs_view',
         False)
     self.assertListEqual(viewlet.backrefs(), [])
     # login to get view permission
     login(self.portal, 'encodeur')
     self.assertListEqual([b.getObject() for b in viewlet.backrefs()], [
         get_object(oid='courrier7', ptype='dmsincomingmail'),
         get_object(oid='courrier1', ptype='dmsincomingmail')
     ])
Exemple #21
0
 def test_AssignedUserValidator(self):
     # im
     obj = get_object(oid='courrier1', ptype='dmsincomingmail')
     view = IMEdit(obj, obj.REQUEST)
     auv = AssignedUserValidator(obj, view.request, view, 'fld', 'widget')
     self.assertEqual(obj.treating_groups, self.pgof['direction-generale'].UID())
     obj.assigned_user = '******'
     # we change group: user is in
     view.request.form['form.widgets.treating_groups'] = [self.pgof['evenements'].UID()]
     self.assertIsNone(auv.validate('agent1'))
     # we change group but user is not in
     view.request.form['form.widgets.treating_groups'] = [self.pgof['direction-financiere'].UID()]
     self.assertRaises(Invalid, auv.validate, 'agent1')
     # om
     obj = get_object(oid='reponse1', ptype='dmsoutgoingmail')
     view = OMEdit(obj, obj.REQUEST)
     auv = AssignedUserValidator(obj, view.request, view, 'fld', 'widget')
     self.assertEqual(obj.treating_groups, self.pgof['direction-generale'].UID())
     obj.assigned_user = '******'
     # we change group: user is in
     view.request.form['form.widgets.treating_groups'] = [self.pgof['evenements'].UID()]
     self.assertIsNone(auv.validate('agent1'))
     # we change group but user is not in
     view.request.form['form.widgets.treating_groups'] = [self.pgof['direction-financiere'].UID()]
     self.assertRaises(Invalid, auv.validate, 'agent1')
     # task
     obj = get_object(oid='courrier1', ptype='dmsincomingmail')['tache1']
     view = TaskEdit(obj, obj.REQUEST)
     auv = AssignedUserValidator(obj, view.request, view, 'fld', 'widget')
     self.assertEqual(obj.assigned_group, self.pgof['direction-generale'].UID())
     obj.assigned_user = '******'
     # we change group: user is in
     view.request.form['form.widgets.ITask.assigned_group'] = [self.pgof['evenements'].UID()]
     self.assertIsNone(auv.validate('agent1'))
     # we change group but user is not in
     view.request.form['form.widgets.ITask.assigned_group'] = [self.pgof['direction-financiere'].UID()]
     self.assertRaises(Invalid, auv.validate, 'agent1')
Exemple #22
0
 def test_im_actionspanel_cache(self):
     # TODO update this irrelevant test
     ret0 = self.view()
     # we have 3 actions: edit, propose manager, propose agent
     self.assertEqual(ret0.count(u'<td '), 3)
     api.content.transition(self.im2, 'propose_to_agent')
     ret1 = self.view()
     # we have the same transitions because there is a cache on getTransitions
     self.assertEqual(ret1.count(u'<td '), 5)
     # we add a reply
     om2 = get_object(oid='reponse2', ptype='dmsoutgoingmail')
     om2.reply_to = [RelationValue(self.intids.getId(self.im2))]
     modified(om2)
     ret2 = self.view()
     self.assertEqual(ret2.count(u'<td '), 5)
Exemple #23
0
    def test_call(self):
        omail1 = get_object(oid='reponse1', ptype='dmsoutgoingmail')
        omf = omail1['1']
        sse_vw = omail1.restrictedTraverse('server_sent_events')
        eee_vw = omf.restrictedTraverse('@@externalEditorEnabled')

        # a dmsommainfile has been added manually and we go back on the dmsoutgoingmail
        self.assertEqual(omf.conversion_finished, True)
        self.assertFalse(hasattr(omf, 'generated'))
        self.assertEqual(sse_vw(), u'')  # no refresh

        # a dmsommainfile has been generated
        omf.generated = 1
        omf.conversion_finished = True
        self.assertEqual(sse_vw(), u'')  # no refresh
        self.assertEqual(omf.generated, 2)  # waiting external edition
        # we lock like zopeedit
        omf.restrictedTraverse('lock-unlock')()
        self.assertTrue(eee_vw.isObjectLocked())
        self.assertEqual(sse_vw(), u'')  # no refresh
        self.assertEqual(omf.generated, 3)  # was always waiting but will end
        self.assertEqual(sse_vw(), u'')  # no refresh
        self.assertEqual(omf.generated, 3)  # no more waiting but locked
        # we unlock
        omf.restrictedTraverse('lock-unlock')(unlock=1)
        self.assertFalse(eee_vw.isObjectLocked())
        res = sse_vw()
        # u'data: {"path": "/plone/outgoing-mail/reponse1/1", "id": "1", "refresh": true}\n\n'
        self.assertIn('"id": "1", "refresh": true', res)  # we refresh

        # a dmsommainfile is edited with zopeedit
        self.assertFalse(hasattr(omf, 'generated'))
        self.assertFalse(hasattr(omf, 'conversion_finished'))
        self.assertEqual(sse_vw(), u'')  # no refresh
        # we lock like zopeedit
        omf.restrictedTraverse('lock-unlock')()
        self.assertTrue(eee_vw.isObjectLocked())
        self.assertEqual(sse_vw(), u'')  # no refresh
        # we save the file in the editor but dont close it
        omf.conversion_finished = True
        self.assertEqual(sse_vw(), u'')  # no refresh
        self.assertEqual(omf.generated, 3)  # set as no more waiting
        # we unlock
        omf.restrictedTraverse('lock-unlock')(unlock=1)
        self.assertFalse(eee_vw.isObjectLocked())
        res = sse_vw()
        # u'data: {"path": "/plone/outgoing-mail/reponse1/1", "id": "1", "refresh": true}\n\n'
        self.assertIn('"id": "1", "refresh": true', res)  # we refresh
Exemple #24
0
 def test_TaskParentColumn(self):
     column = TaskParentColumn(self.portal, self.portal.REQUEST, self.task_table)
     brain = self.portal.portal_catalog(UID=self.ta1.UID())[0]
     mail = get_object(oid='courrier1', ptype='dmsincomingmail')
     self.assertEqual(column.renderCell(brain),
                      u"<a class='pretty_link' title='E0001 - Courrier 1' "
                      u"href='{}' target='_blank'><span class='pretty_link_icons'><img title='Incoming Mail' "
                      u"src='http://nohost/plone/++resource++imio.dms.mail/dmsincomingmail_icon.png' style="
                      u"\"width: 16px; height: 16px;\" /></span><span class='pretty_link_content state-created'>"
                      u"E0001 - Courrier 1</span></a>".format(mail.absolute_url()))
     brain = self.portal.portal_catalog(UID=self.ta31.UID())[0]
     self.assertEqual(column.renderCell(brain),
                      u"<a class='pretty_link' title='E0001 - Courrier 1' "
                      u"href='{}' target='_blank'><span class='pretty_link_icons'><img title='Incoming Mail' "
                      u"src='http://nohost/plone/++resource++imio.dms.mail/dmsincomingmail_icon.png' style="
                      u"\"width: 16px; height: 16px;\" /></span><span class='pretty_link_content state-created'>"
                      u"E0001 - Courrier 1</span></a>".format(mail.absolute_url()))
Exemple #25
0
 def test_OM_get_recipient_emails(self):
     om = get_object(oid='reponse1', ptype='dmsoutgoingmail')
     self.assertIsNone(om.orig_sender_email)
     recip1 = self.portal.unrestrictedTraverse(om.recipients[0].to_path)
     # recip1 is electrabel org
     self.assertEqual(recip1.email, u'*****@*****.**')
     self.assertEqual(om.get_recipient_emails(), u'*****@*****.**')
     # we add an orig_email_sender
     om.orig_sender_email = u'"Dexter Morgan" <*****@*****.**>'
     self.assertEqual(om.get_recipient_emails(), u'"Dexter Morgan" <*****@*****.**>, [email protected]')
     # we use the same email
     om.orig_sender_email = u'"Dexter Morgan" <*****@*****.**>'
     self.assertEqual(om.get_recipient_emails(), u'"Dexter Morgan" <*****@*****.**>')
     # we add a recipient
     hp = self.portal['contacts']['jeancourant']['agent-electrabel']
     om.recipients.append(RelationValue(self.intids.getId(hp)))
     self.assertEqual(om.get_recipient_emails(), u'"Dexter Morgan" <*****@*****.**>, '
                                                 u'"Jean Courant" <*****@*****.**>')
Exemple #26
0
 def test_call(self):
     omail1 = get_object(oid='reponse1', ptype='dmsoutgoingmail')
     omail1.send_modes = [u'email']
     omail1.email_subject = u'Email subject'
     omail1.email_sender = u'*****@*****.**'
     omail1.email_recipient = u'*****@*****.**'
     omail1.email_body = richtextval(u'My email content.')
     view = omail1.unrestrictedTraverse('@@send_email')
     # Status before call
     self.assertEqual(api.content.get_state(omail1), 'created')
     self.assertIsNone(omail1.email_status)
     MockMailHost.secureSend = MockMailHost.send
     mail_host = get_mail_host()
     mail_host.reset()
     # view call
     view()
     self.assertIn('Subject: =?utf-8?q?Email_subject?=\n',
                   mail_host.messages[0])
     self.assertIn('My email content.', mail_host.messages[0])
     self.assertEqual(api.content.get_state(omail1), 'sent')
     self.assertIsNotNone(omail1.email_status)
Exemple #27
0
 def test_call(self):
     model = api.portal.get_registry_record(
         'imio.dms.mail.browser.settings.IImioDmsMailConfig.'
         'omail_email_signature')
     self.assertIn('http://*****:*****@@render_email_signature')
     self.assertIn('sender', view.namespace)
     self.assertEqual(view.namespace['sender']['org_full_title'],
                      u'Direction générale - GRH')
     self.assertEqual(view.namespace['sender']['person'].title,
                      u'Monsieur Michel Chef')
     # ctct_det = view.namespace['dghv'].get_ctct_det(view.namespace['sender']['hp'])
     rendered = view().output
     self.assertIn(u'>Michel Chef<', rendered)
     self.assertIn(u'>Responsable GRH<', rendered)
     self.assertIn(u'>Direction générale<', rendered)
     self.assertIn(u'>GRH<', rendered)
     self.assertIn(u'>[email protected]<', rendered)
     self.assertIn(u'>012/34.56.79<', rendered)
     self.assertIn(u'>Rue Léon Morel, 1<', rendered)
     self.assertIn(u'>5032 Isnes<', rendered)
Exemple #28
0
 def test_IM_Title(self):
     imail1 = get_object(oid='courrier1', ptype='dmsincomingmail')
     self.assertEquals(imail1.Title(), 'E0001 - Courrier 1')
     imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail', datetime.now(), 'my-id',
                        **{'title': u'Test with auto ref'})
     self.assertEquals(imail.Title(), 'E0010 - Test with auto ref')
Exemple #29
0
    def test_get_object(self):
        obj = api.content.create(container=self.portal.folder, id='mydoc', title='My document', type='Document')
        # Give parent information
        self.assertEqual(obj, get_object(parent=self.portal.folder))
        self.assertEqual(obj, get_object(parent='/folder'))
        self.assertEqual(obj, get_object(parent='/folder/'))
        self.assertEqual(obj, get_object(parent='folder/'))
        self.assertEqual(obj, get_object(parent='folder'))
        # Give obj path information
        self.assertEqual(obj, get_object(obj_path='/folder/mydoc'))
        self.assertEqual(obj, get_object(obj_path='/folder/mydoc/'))
        self.assertEqual(obj, get_object(obj_path='folder/mydoc'))
        self.assertEqual(obj, get_object(obj_path='/folder/mydoc', parent='folder'))
        self.assertEqual(self.portal, get_object(obj_path='/'))

        # Give id
        self.assertEqual(obj, get_object(id='mydoc'))
        # Give title
        self.assertEqual(obj, get_object(title='My document'))
        # Give type
        self.assertEqual(obj, get_object(type='Document', id='mydoc'))
        # All parameters
        self.assertEqual(obj, get_object(type='Document', id='mydoc', title='My document', parent='folder'))
        self.assertEqual(obj, get_object(type='Document', id='mydoc', title='My document', obj_path='folder/mydoc'))
Exemple #30
0
    def test_OMDGHelper(self):
        """
            Test all methods of OMDGHelper view
        """
        view1 = get_object(oid='reponse1',
                           ptype='dmsoutgoingmail').unrestrictedTraverse('@@document_generation_helper_view')

        # Test fmt method
        self.assertEqual(view1.fmt(None), '')
        self.assertEqual(view1.fmt('Test'), 'Test ')
        self.assertEqual(view1.fmt('Test', fmt='(%s)'), '(Test)')

        # Test get_ctct_det method
        self.assertDictEqual(view1.get_ctct_det(''), {})
        det = {'address': {}, 'website': '', 'fax': '', 'phone': '', 'im_handle': '', 'cell_phone': '', 'email': ''}
        self.assertDictEqual(view1.get_ctct_det(self.jc), det)
        # get address from linked organization
        det = {'address': {'city': u'E-ville', 'country': '', 'region': '', 'additional_address_details': '',
                           'number': u'1', 'street': u"Rue de l'électron", 'zip_code': u'0020'},
               'im_handle': '', 'cell_phone': '', 'email': u'*****@*****.**', 'website': '', 'fax': '',
               'phone': u'012345678'}
        self.assertDictEqual(view1.get_ctct_det(self.jc['agent-electrabel']), det)

        # Test get_sender method
        sender = {'person': self.chef, 'hp': self.resp_grh, 'org_full_title': u'Direction générale - GRH',
                  'org': self.grh}
        self.assertDictEqual(view1.get_sender(), sender)
        backup = view1.real_context.sender
        view1.real_context.sender = ''
        self.assertDictEqual(view1.get_sender(), {})
        view1.real_context.sender = backup

        # Test mailing_list method
        self.assertListEqual(view1.mailing_list(), [self.ctct['electrabel']])
        view1.real_context.recipients.append(RelationValue(self.intids.getId(self.electrabel)))
        self.assertListEqual(view1.mailing_list(), [self.ctct['electrabel'], self.electrabel])
        backup = view1.real_context.recipients[0]
        view1.real_context.recipients = None
        self.assertListEqual(view1.mailing_list(), [])
        view1.real_context.recipients = [backup]

        # Test get_full_title method
        self.assertEqual(view1.get_full_title(None), '')
        self.assertEqual(view1.get_full_title(self.electrabel), u'Electrabel')
        self.assertEqual(view1.get_full_title(self.grh), u'Mon organisation / Direction générale / GRH')
        self.assertEqual(view1.get_full_title(self.grh, separator=' - ', first_index=1), u'Direction générale - GRH')
        self.assertEqual(view1.get_full_title(self.jc), u'Monsieur Jean Courant')
        self.assertEqual(view1.get_full_title(self.agent), u'Monsieur Jean Courant, Agent (Electrabel)')

        # Test get_separate_titles method
        self.assertListEqual(view1.get_separate_titles(None), [u'', u''])
        self.assertListEqual(view1.get_separate_titles(self.electrabel), [u'Electrabel', u''])
        self.assertListEqual(view1.get_separate_titles(self.grh), [u'Mon organisation / Direction générale / GRH', ''])
        self.assertListEqual(view1.get_separate_titles(self.grh, separator=' - ', first_index=1),
                             [u'Direction générale - GRH', ''])
        self.assertListEqual(view1.get_separate_titles(self.jc), ['', u'Monsieur Jean Courant'])
        self.assertListEqual(view1.get_separate_titles(self.agent), [u'Electrabel', u'Monsieur Jean Courant'])
        self.assertListEqual(view1.get_separate_titles(self.resp_grh),
                             [u'Mon organisation / Direction générale / GRH', u'Monsieur Michel Chef'])

        # Test person_title
        self.assertEqual(view1.person_title(None), '')
        self.assertEqual(view1.person_title(self.jc), u'Monsieur')
        self.assertEqual(view1.person_title(self.jc, with_name=True), u'Monsieur Courant')
        self.assertEqual(view1.person_title(self.jc, with_name=True, upper_name=True), u'Monsieur COURANT')
        self.jc.person_title = None
        self.assertEqual(view1.person_title(self.jc), u'Monsieur')
        self.assertEqual(view1.person_title(self.jc, pers_dft=u'Madame'), u'Madame')
        self.assertEqual(view1.person_title(self.jc, pers_dft=u'Madame', with_name=True), u'Madame Courant')
        self.assertEqual(view1.person_title(self.jc, pers_dft=u'Madame', with_name=True, upper_name=True),
                         u'Madame COURANT')
        self.assertEqual(view1.person_title(self.electrabel), u'Madame, Monsieur')
        self.assertEqual(view1.person_title(self.electrabel, org_dft=u'Messieurs'), u'Messieurs')
        self.assertEqual(view1.person_title(self.agent), u'Monsieur')
        self.assertEqual(view1.person_title(self.agent, with_name=True), u'Monsieur Courant')
        self.assertEqual(view1.person_title(self.agent, with_name=True, upper_name=True), u'Monsieur COURANT')

        # Test is_first_doc
        mock = mocker.Mocker()
        res = {}
        view1.appy_renderer = mock.mock()
        mocker.expect(view1.appy_renderer.contentParser.env.context).result(res).replay()
        self.assertTrue(view1.is_first_doc())
        mock2 = mocker.Mocker()
        res['loop'] = mock2.mock()
        mocker.expect(res['loop'].mailed_data.first).result(False).replay()
        mock.replay()
        self.assertFalse(view1.is_first_doc())

        # Test separate_full_title
        self.assertListEqual(view1.separate_full_title(None), [u'', u''])
        self.assertListEqual(view1.separate_full_title(u''), [u'', u''])
        self.assertListEqual(view1.separate_full_title(u'Direction générale'),
                             [u'Direction générale', u''])
        self.assertListEqual(view1.separate_full_title(u'Direction générale - Secrétariat'),
                             [u'Direction générale', u'Secrétariat'])
        self.assertListEqual(view1.separate_full_title(u'Direction générale - Secrétariat - Michèle'),
                             [u'Direction générale', u'Secrétariat - Michèle'])
        self.assertListEqual(view1.separate_full_title(u'Direction générale - Secrétariat - Michèle', nb=3),
                             [u'Direction générale', u'Secrétariat', u'Michèle'])
        self.assertRaises(IndexError, view1.separate_full_title, u'Direction', nb=0)
Exemple #31
0
    def test_get_object(self):
        obj = api.content.create(container=self.portal.folder,
                                 id='mydoc',
                                 title='My document',
                                 type='Document')
        # Give parent information
        self.assertEqual(obj, get_object(parent=self.portal.folder))
        self.assertEqual(obj, get_object(parent='/folder'))
        self.assertEqual(obj, get_object(parent='/folder/'))
        self.assertEqual(obj, get_object(parent='folder/'))
        self.assertEqual(obj, get_object(parent='folder'))
        # Give obj path information
        self.assertEqual(obj, get_object(obj_path='/folder/mydoc'))
        self.assertEqual(obj, get_object(obj_path='/folder/mydoc/'))
        self.assertEqual(obj, get_object(obj_path='folder/mydoc'))
        self.assertEqual(obj,
                         get_object(obj_path='/folder/mydoc', parent='folder'))
        self.assertEqual(self.portal, get_object(obj_path='/'))

        # Give id
        self.assertEqual(obj, get_object(id='mydoc'))
        # Give title
        self.assertEqual(obj, get_object(title='My document'))
        # Give type
        self.assertEqual(obj, get_object(type='Document', id='mydoc'))
        # All parameters
        self.assertEqual(
            obj,
            get_object(type='Document',
                       id='mydoc',
                       title='My document',
                       parent='folder'))
        self.assertEqual(
            obj,
            get_object(type='Document',
                       id='mydoc',
                       title='My document',
                       obj_path='folder/mydoc'))