Added needed functionality to manage automatically internal_reference_no field

This commit is contained in:
Stephan Geulette 2013-04-12 10:40:53 +02:00
parent 8d46bcf30b
commit cd3b6b258a
2 changed files with 22 additions and 0 deletions

View File

@ -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

View File

@ -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')