Read mail settings from new (Plone 5) registry.
This commit is contained in:
parent
e11471a44e
commit
785bc7b890
@ -7,6 +7,9 @@ Changelog
|
|||||||
- Updated portuguese pt-br translation.
|
- Updated portuguese pt-br translation.
|
||||||
[jtmolon]
|
[jtmolon]
|
||||||
|
|
||||||
|
- Read mail settings from new (Plone 5) registry.
|
||||||
|
[timo]
|
||||||
|
|
||||||
|
|
||||||
2.3.3 (2014-10-23)
|
2.3.3 (2014-10-23)
|
||||||
------------------
|
------------------
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from zope.component import getUtility
|
||||||
from Acquisition import aq_base, aq_inner
|
|
||||||
|
|
||||||
from Products.CMFCore.utils import getToolByName
|
from Products.CMFCore.utils import getToolByName
|
||||||
|
|
||||||
from Products.CMFCore.interfaces._content import IDiscussionResponse
|
from Products.CMFCore.interfaces._content import IDiscussionResponse
|
||||||
|
from Products.CMFPlone.interfaces.controlpanel import IMailSchema
|
||||||
|
|
||||||
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
||||||
|
|
||||||
@ -152,12 +150,11 @@ class DiscussionSettingsControlPanel(controlpanel.ControlPanelFormWrapper):
|
|||||||
def mailhost_warning(self):
|
def mailhost_warning(self):
|
||||||
"""Returns true if mailhost is not configured properly.
|
"""Returns true if mailhost is not configured properly.
|
||||||
"""
|
"""
|
||||||
# Copied from plone.app.controlpanel/plone/app/controlpanel/overview.py
|
# Copied from Products.CMFPlone/controlpanel/browser/overview.py
|
||||||
mailhost = getToolByName(aq_inner(self.context), 'MailHost', None)
|
registry = getUtility(IRegistry)
|
||||||
if mailhost is None:
|
mail_settings = registry.forInterface(IMailSchema, prefix='plone')
|
||||||
return True
|
mailhost = mail_settings.smtp_host
|
||||||
mailhost = getattr(aq_base(mailhost), 'smtp_host', None)
|
email = mail_settings.email_from_address
|
||||||
email = getattr(aq_inner(self.context), 'email_from_address', None)
|
|
||||||
if mailhost and email:
|
if mailhost and email:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@ -177,7 +174,7 @@ class DiscussionSettingsControlPanel(controlpanel.ControlPanelFormWrapper):
|
|||||||
def unmigrated_comments_warning(self):
|
def unmigrated_comments_warning(self):
|
||||||
"""Returns true if site contains unmigrated comments.
|
"""Returns true if site contains unmigrated comments.
|
||||||
"""
|
"""
|
||||||
catalog = getToolByName(aq_inner(self.context), 'portal_catalog', None)
|
catalog = getToolByName(self.context, 'portal_catalog', None)
|
||||||
count_comments_old = catalog.searchResults(
|
count_comments_old = catalog.searchResults(
|
||||||
object_provides=IDiscussionResponse.__identifier__)
|
object_provides=IDiscussionResponse.__identifier__)
|
||||||
if count_comments_old:
|
if count_comments_old:
|
||||||
|
@ -9,6 +9,7 @@ from datetime import datetime
|
|||||||
from smtplib import SMTPException
|
from smtplib import SMTPException
|
||||||
|
|
||||||
from zope.annotation.interfaces import IAnnotatable
|
from zope.annotation.interfaces import IAnnotatable
|
||||||
|
from zope.component import getUtility
|
||||||
|
|
||||||
from zope.event import notify
|
from zope.event import notify
|
||||||
from zope.component.factory import Factory
|
from zope.component.factory import Factory
|
||||||
@ -31,8 +32,6 @@ from Products.CMFPlone.utils import safe_unicode
|
|||||||
|
|
||||||
from OFS.Traversable import Traversable
|
from OFS.Traversable import Traversable
|
||||||
|
|
||||||
from plone.registry.interfaces import IRegistry
|
|
||||||
|
|
||||||
from plone.app.discussion.events import CommentAddedEvent
|
from plone.app.discussion.events import CommentAddedEvent
|
||||||
from plone.app.discussion.events import CommentRemovedEvent
|
from plone.app.discussion.events import CommentRemovedEvent
|
||||||
from plone.app.discussion.events import ReplyAddedEvent
|
from plone.app.discussion.events import ReplyAddedEvent
|
||||||
@ -43,8 +42,11 @@ from plone.app.discussion.interfaces import IComment
|
|||||||
from plone.app.discussion.interfaces import IConversation
|
from plone.app.discussion.interfaces import IConversation
|
||||||
from plone.app.discussion.interfaces import IDiscussionSettings
|
from plone.app.discussion.interfaces import IDiscussionSettings
|
||||||
|
|
||||||
|
from plone.registry.interfaces import IRegistry
|
||||||
|
|
||||||
from Products.CMFCore.CMFCatalogAware import CatalogAware
|
from Products.CMFCore.CMFCatalogAware import CatalogAware
|
||||||
from Products.CMFCore.CMFCatalogAware import WorkflowAware
|
from Products.CMFCore.CMFCatalogAware import WorkflowAware
|
||||||
|
from Products.CMFPlone.interfaces.controlpanel import IMailSchema
|
||||||
|
|
||||||
from OFS.role import RoleManager
|
from OFS.role import RoleManager
|
||||||
from AccessControl import ClassSecurityInfo
|
from AccessControl import ClassSecurityInfo
|
||||||
@ -329,9 +331,9 @@ def notify_user(obj, event):
|
|||||||
|
|
||||||
# Get informations that are necessary to send an email
|
# Get informations that are necessary to send an email
|
||||||
mail_host = getToolByName(obj, 'MailHost')
|
mail_host = getToolByName(obj, 'MailHost')
|
||||||
portal_url = getToolByName(obj, 'portal_url')
|
registry = getUtility(IRegistry)
|
||||||
portal = portal_url.getPortalObject()
|
mail_settings = registry.forInterface(IMailSchema, prefix='plone')
|
||||||
sender = portal.getProperty('email_from_address')
|
sender = mail_settings.email_from_address
|
||||||
|
|
||||||
# Check if a sender address is available
|
# Check if a sender address is available
|
||||||
if not sender:
|
if not sender:
|
||||||
@ -403,9 +405,9 @@ def notify_moderator(obj, event):
|
|||||||
|
|
||||||
# Get informations that are necessary to send an email
|
# Get informations that are necessary to send an email
|
||||||
mail_host = getToolByName(obj, 'MailHost')
|
mail_host = getToolByName(obj, 'MailHost')
|
||||||
portal_url = getToolByName(obj, 'portal_url')
|
registry = getUtility(IRegistry)
|
||||||
portal = portal_url.getPortalObject()
|
mail_settings = registry.forInterface(IMailSchema, prefix='plone')
|
||||||
sender = portal.getProperty('email_from_address')
|
sender = mail_settings.email_from_address
|
||||||
|
|
||||||
if settings.moderator_email:
|
if settings.moderator_email:
|
||||||
mto = settings.moderator_email
|
mto = settings.moderator_email
|
||||||
|
@ -7,11 +7,13 @@ from Acquisition import aq_base
|
|||||||
from zope.component import createObject
|
from zope.component import createObject
|
||||||
from zope.component import getSiteManager
|
from zope.component import getSiteManager
|
||||||
from zope.component import queryUtility
|
from zope.component import queryUtility
|
||||||
|
from zope.component import getUtility
|
||||||
|
|
||||||
from plone.app.testing import TEST_USER_ID, setRoles
|
from plone.app.testing import TEST_USER_ID, setRoles
|
||||||
|
|
||||||
from Products.MailHost.interfaces import IMailHost
|
from Products.MailHost.interfaces import IMailHost
|
||||||
from Products.CMFPlone.tests.utils import MockMailHost
|
from Products.CMFPlone.tests.utils import MockMailHost
|
||||||
|
from Products.CMFPlone.interfaces import IMailSchema
|
||||||
|
|
||||||
from plone.registry.interfaces import IRegistry
|
from plone.registry.interfaces import IRegistry
|
||||||
|
|
||||||
@ -34,7 +36,9 @@ class TestUserNotificationUnit(unittest.TestCase):
|
|||||||
sm.unregisterUtility(provided=IMailHost)
|
sm.unregisterUtility(provided=IMailHost)
|
||||||
sm.registerUtility(mailhost, provided=IMailHost)
|
sm.registerUtility(mailhost, provided=IMailHost)
|
||||||
# We need to fake a valid mail setup
|
# We need to fake a valid mail setup
|
||||||
self.portal.email_from_address = "portal@plone.test"
|
registry = getUtility(IRegistry)
|
||||||
|
mail_settings = registry.forInterface(IMailSchema, prefix='plone')
|
||||||
|
mail_settings.email_from_address = "portal@plone.test"
|
||||||
self.mailhost = self.portal.MailHost
|
self.mailhost = self.portal.MailHost
|
||||||
# Enable user notification setting
|
# Enable user notification setting
|
||||||
registry = queryUtility(IRegistry)
|
registry = queryUtility(IRegistry)
|
||||||
@ -122,7 +126,9 @@ class TestUserNotificationUnit(unittest.TestCase):
|
|||||||
def test_do_not_notify_user_when_no_sender_is_available(self):
|
def test_do_not_notify_user_when_no_sender_is_available(self):
|
||||||
# Set sender mail address to none and make sure no email is send to
|
# Set sender mail address to none and make sure no email is send to
|
||||||
# the moderator.
|
# the moderator.
|
||||||
self.portal.email_from_address = None
|
registry = getUtility(IRegistry)
|
||||||
|
mail_settings = registry.forInterface(IMailSchema, prefix='plone')
|
||||||
|
mail_settings.email_from_address = None
|
||||||
comment = createObject('plone.Comment')
|
comment = createObject('plone.Comment')
|
||||||
comment.text = 'Comment text'
|
comment.text = 'Comment text'
|
||||||
comment.user_notification = True
|
comment.user_notification = True
|
||||||
@ -132,7 +138,6 @@ class TestUserNotificationUnit(unittest.TestCase):
|
|||||||
comment.text = 'Comment text'
|
comment.text = 'Comment text'
|
||||||
|
|
||||||
self.conversation.addComment(comment)
|
self.conversation.addComment(comment)
|
||||||
|
|
||||||
self.assertEqual(len(self.mailhost.messages), 0)
|
self.assertEqual(len(self.mailhost.messages), 0)
|
||||||
|
|
||||||
def test_notify_only_once(self):
|
def test_notify_only_once(self):
|
||||||
@ -172,7 +177,9 @@ class TestModeratorNotificationUnit(unittest.TestCase):
|
|||||||
sm.unregisterUtility(provided=IMailHost)
|
sm.unregisterUtility(provided=IMailHost)
|
||||||
sm.registerUtility(mailhost, provided=IMailHost)
|
sm.registerUtility(mailhost, provided=IMailHost)
|
||||||
# We need to fake a valid mail setup
|
# We need to fake a valid mail setup
|
||||||
self.portal.email_from_address = "portal@plone.test"
|
registry = getUtility(IRegistry)
|
||||||
|
mail_settings = registry.forInterface(IMailSchema, prefix='plone')
|
||||||
|
mail_settings.email_from_address = "portal@plone.test"
|
||||||
self.mailhost = self.portal.MailHost
|
self.mailhost = self.portal.MailHost
|
||||||
# Enable comment moderation
|
# Enable comment moderation
|
||||||
self.portal.portal_types['Document'].allow_discussion = True
|
self.portal.portal_types['Document'].allow_discussion = True
|
||||||
@ -255,7 +262,9 @@ class TestModeratorNotificationUnit(unittest.TestCase):
|
|||||||
def test_do_not_notify_moderator_when_no_sender_is_available(self):
|
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
|
# Set sender mail address to nonw and make sure no email is send to the
|
||||||
# moderator.
|
# moderator.
|
||||||
self.portal.email_from_address = None
|
registry = getUtility(IRegistry)
|
||||||
|
mail_settings = registry.forInterface(IMailSchema, prefix='plone')
|
||||||
|
mail_settings.email_from_address = None
|
||||||
comment = createObject('plone.Comment')
|
comment = createObject('plone.Comment')
|
||||||
comment.text = 'Comment text'
|
comment.text = 'Comment text'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user