add moderator email setting
svn path=/plone.app.discussion/branches/1.x/; revision=48523
This commit is contained in:
		
							parent
							
								
									6413096336
								
							
						
					
					
						commit
						9aea1915c1
					
				| @ -269,9 +269,12 @@ def notify_user(obj, event): | ||||
| def notify_moderator(obj, event): | ||||
|     """Tell the moderator when a comment needs attention. | ||||
| 
 | ||||
|        This method sends an email to the site admin (mail control panel setting) | ||||
|        if comment moderation is enabled and a new comment has been added that | ||||
|        needs to be approved. | ||||
|        This method sends an email to the moderator if comment moderation is | ||||
|        enabled and a new comment has been added that needs to be approved. | ||||
|         | ||||
|        Configure the moderator e-mail address in the discussion control panel. | ||||
|        If no moderator is configured but moderator notifications are turned on, | ||||
|        the site admin email (from the mail control panel) will be used. | ||||
| 
 | ||||
|        This requires the moderator_notification to be enabled in the discussion | ||||
|        control panel and the comment_review_workflow enabled for the comment | ||||
| @ -289,7 +292,11 @@ def notify_moderator(obj, event): | ||||
|     portal_url = getToolByName(obj, 'portal_url') | ||||
|     portal = portal_url.getPortalObject() | ||||
|     sender = portal.getProperty('email_from_address') | ||||
|     mto = portal.getProperty('email_from_address') | ||||
|      | ||||
|     if settings.moderator_email: | ||||
|         mto = settings.moderator_email | ||||
|     else: | ||||
|         mto = sender | ||||
| 
 | ||||
|     # Check if a sender address is available | ||||
|     if not sender: | ||||
|  | ||||
| @ -114,6 +114,16 @@ class IDiscussionSettings(Interface): | ||||
|         default=False, | ||||
|         ) | ||||
|      | ||||
|     moderator_email = schema.ASCIILine( | ||||
|         title = _(u'label_moderator_email', default=u'Moderator Email Address'), | ||||
|         description = _(u'help_moderator_email', | ||||
|                         default=u"Address to which moderator notifications " | ||||
|                                 u"will be sent. If not specified, the Site " | ||||
|                                 u"'From' Address from the mail control panel " | ||||
|                                 u"will be used."), | ||||
|         required = False, | ||||
|         ) | ||||
| 
 | ||||
|     user_notification_enabled = schema.Bool( | ||||
|         title=_(u"label_user_notification_enabled", | ||||
|         default=u"Enable user email notification"), | ||||
|  | ||||
| @ -16,7 +16,6 @@ from Products.CMFPlone.tests.utils import MockMailHost | ||||
| from plone.registry.interfaces import IRegistry | ||||
| 
 | ||||
| from plone.app.discussion.interfaces import IConversation | ||||
| from plone.app.discussion.interfaces import IDiscussionSettings | ||||
| from plone.app.discussion.tests.layer import DiscussionLayer | ||||
| 
 | ||||
| 
 | ||||
| @ -38,7 +37,6 @@ class TestUserNotificationUnit(PloneTestCase): | ||||
| 
 | ||||
|         # Enable user notification setting | ||||
|         registry = queryUtility(IRegistry) | ||||
|         settings = registry.forInterface(IDiscussionSettings) | ||||
|         registry['plone.app.discussion.interfaces.IDiscussionSettings' + | ||||
|                  '.user_notification_enabled'] = True | ||||
| 
 | ||||
| @ -89,7 +87,6 @@ class TestUserNotificationUnit(PloneTestCase): | ||||
|     def test_do_not_notify_user_when_notification_is_disabled(self): | ||||
|         # Disable user notification and make sure no email is send to the user. | ||||
|         registry = queryUtility(IRegistry) | ||||
|         settings = registry.forInterface(IDiscussionSettings) | ||||
|         registry['plone.app.discussion.interfaces.IDiscussionSettings.' + | ||||
|                   'user_notification_enabled'] = False | ||||
| 
 | ||||
| @ -242,6 +239,23 @@ class TestModeratorNotificationUnit(PloneTestCase): | ||||
|         # T=C3=A4st user\ntest@plone.test...is sending feedback about the site | ||||
|         # you administer at... | ||||
|      | ||||
|     def test_notify_moderator_specific_address(self): | ||||
|         # A moderator email address can be specified in the control panel. | ||||
|         registry = queryUtility(IRegistry) | ||||
|         registry['plone.app.discussion.interfaces.IDiscussionSettings' + | ||||
|                  '.moderator_email'] = 'test@example.com' | ||||
| 
 | ||||
|         comment = createObject('plone.Comment') | ||||
|         comment.text = 'Comment text' | ||||
|         self.conversation.addComment(comment) | ||||
|          | ||||
|         self.assertEquals(len(self.mailhost.messages), 1) | ||||
|         msg = self.mailhost.messages[0] | ||||
|         if not isinstance(msg, str): | ||||
|             self.failUnless('test@example.com' in msg.mto) | ||||
|         else: | ||||
|             self.failUnless('To: test@example.com' in msg) | ||||
| 
 | ||||
|     def test_do_not_notify_moderator_when_no_sender_is_available(self): | ||||
|         # Set sender mail address to nonw and make sure no email is send to the | ||||
|         # moderator. | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user