diff --git a/src/collective/dms/mailcontent/dmsmail.py b/src/collective/dms/mailcontent/dmsmail.py index 0a2ad4d..00d33cb 100644 --- a/src/collective/dms/mailcontent/dmsmail.py +++ b/src/collective/dms/mailcontent/dmsmail.py @@ -156,6 +156,16 @@ class DmsIncomingMail(DmsDocument): @grok.subscribe(IDmsIncomingMail, IObjectAddedEvent) def incrementIncomingMailNumber(incomingmail, event): """ Increment the value in registry """ + # if internal_reference_no is empty, we force the value. + # useless if the internal_reference_no field is hidden (in this case, + # default value must be empty to bypass validator) + # useless to manage automatically the internal_reference_no value without user action + if not incomingmail.internal_reference_no: + internal_reference_no = evaluateInternalReference(incomingmail, incomingmail.REQUEST, + 'collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number', + 'collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_talexpression') + incomingmail.internal_reference_no = internal_reference_no + incomingmail.reindexObject(idxs=('Title', internal_reference_no)) registry = getUtility(IRegistry) registry['collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number'] += 1 diff --git a/src/collective/dms/mailcontent/tests/test_content.py b/src/collective/dms/mailcontent/tests/test_content.py index 7d8bf34..0fba443 100644 --- a/src/collective/dms/mailcontent/tests/test_content.py +++ b/src/collective/dms/mailcontent/tests/test_content.py @@ -66,3 +66,15 @@ class TestDmsmailMethods(TestContentTypes): 'collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number', 'collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_talexpression'), 'test-in/10') + + def test_incrementIncomingMailNumber(self): + registry = getUtility(IRegistry) + old_value = registry['collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number'] + imail1 = createContentInContainer(self.portal, 'dmsincomingmail', **{'internal_reference_no': '12345', + 'title': 'Test 1'}) + self.assertEquals(registry['collective.dms.mailcontent.browser.settings.IDmsMailConfig.incomingmail_number'], + old_value+1) + self.assertEquals(imail1.internal_reference_no, '12345') + # we create a dmsincomingmail without internal_reference_no, it will be generated + imail2 = createContentInContainer(self.portal, 'dmsincomingmail', **{'title': 'Test 2'}) + self.assertEquals(imail2.internal_reference_no, 'test-in/11')