Skip to content

Commit

Permalink
Get email settings from registry. Fixes several Plone 5 errors.
Browse files Browse the repository at this point in the history
Do not use ``plone_utils.getSiteEncoding()``, because this is
deprecated and always returns ``utf-8''.
  • Loading branch information
mauritsvanrees committed Sep 30, 2015
1 parent 8375e49 commit 3695500
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 19 deletions.
5 changes: 5 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ Change History
1.8.0b5 (unreleased)
--------------------

- Get email settings from registry. Fixes several Plone 5 errors.
Do not use ``plone_utils.getSiteEncoding()``, because this is
deprecated and always returns ``utf-8''.
[maurits]

- Load widget specific css on quickedit form.
[maurits]

Expand Down
6 changes: 2 additions & 4 deletions Products/PloneFormGen/content/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -768,8 +768,7 @@ def formatVocabDL(self):
def htmlValue(self, REQUEST):
""" Return value instead of key """

utils = getToolByName(self, 'plone_utils')
charset = utils.getSiteEncoding()
charset = 'utf-8'

value = REQUEST.form.get(self.__name__, '')

Expand Down Expand Up @@ -876,8 +875,7 @@ def formatVocabDL(self):
def htmlValue(self, REQUEST):
""" Return value instead of key """

utils = getToolByName(self, 'plone_utils')
charset = utils.getSiteEncoding()
charset = 'utf-8'

value = REQUEST.form.get(self.__name__, [])

Expand Down
3 changes: 1 addition & 2 deletions Products/PloneFormGen/content/fieldsBase.py
Original file line number Diff line number Diff line change
Expand Up @@ -593,8 +593,7 @@ def setTitle(self, value, **kw):
if isinstance(value, unicode):
uvalue = value
else:
utils = getToolByName(self, 'plone_utils')
charset = utils.getSiteEncoding()
charset = 'utf-8'
uvalue = unicode(value, charset)
self.fgField.widget.label = uvalue

Expand Down
28 changes: 15 additions & 13 deletions Products/PloneFormGen/content/formMailerAdapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,16 @@

from Products.CMFCore.permissions import View, ModifyPortalContent
from Products.CMFCore.utils import getToolByName
from Products.CMFPlone.interfaces import IMailSchema

from Products.PloneFormGen.config import *
from Products.PloneFormGen.content.actionAdapter import FormActionAdapter, FormAdapterSchema

from Products.TALESField import TALESString
from Products.TemplateFields import ZPTField as ZPTField

from plone.registry.interfaces import IRegistry
from zope.component import getUtility
from ya_gpg import gpg

from email import Encoders
Expand Down Expand Up @@ -636,8 +639,8 @@ def get_mail_text(self, fields, request, **kwargs):

if not isinstance(body, unicode):
body = unicode(body, self._site_encoding())
portal = getToolByName(self, 'portal_url').getPortalObject()
email_charset = portal.getProperty('email_charset', 'utf-8')
registry = getUtility(IRegistry)
email_charset = registry['plone.email_charset'] or 'utf-8'
# always use text/plain for encrypted bodies
subtype = getattr(self, 'gpg_keyid', False) and 'plain' or self.body_type or 'html'
mime_text = MIMEText(body.encode(email_charset, 'replace'),
Expand Down Expand Up @@ -784,6 +787,8 @@ def get_mail_body(self, fields, **kwargs):
security.declarePrivate('secure_header_line')

def secure_header_line(self, line):
if line is None:
return ''
nlpos = line.find('\x0a')
if nlpos >= 0:
line = line[:nlpos]
Expand Down Expand Up @@ -824,11 +829,9 @@ def get_header_body_tuple(self, fields, request,
request -- (optional) alternate request object to use
"""

pprops = getToolByName(self, 'portal_properties')
site_props = getToolByName(pprops, 'site_properties')
portal = getToolByName(self, 'portal_url').getPortalObject()
pms = getToolByName(self, 'portal_membership')
utils = getToolByName(self, 'plone_utils')
registry = getUtility(IRegistry)
mail_settings = registry.forInterface(IMailSchema, prefix='plone')

body = self.get_mail_body(fields, **kwargs)

Expand Down Expand Up @@ -857,8 +860,7 @@ def get_header_body_tuple(self, fields, request,
if shasattr(self, 'senderOverride') and self.getRawSenderOverride():
from_addr = self.getSenderOverride().strip()
else:
from_addr = from_addr or site_props.getProperty('email_from_address') or \
portal.getProperty('email_from_address')
from_addr = from_addr or mail_settings.email_from_address

# Get To address and full name
if shasattr(self, 'recipientOverride') and self.getRawRecipientOverride():
Expand Down Expand Up @@ -890,7 +892,8 @@ def get_header_body_tuple(self, fields, request,
if userdest is not None:
toemail = userdest.getProperty('email', '')
if not toemail:
toemail = portal.getProperty('email_from_address')
toemail = mail_settings.email_from_address

assert toemail, """
Unable to mail form input because no recipient address has been specified.
Please check the recipient settings of the PloneFormGen "Mailer" within the
Expand All @@ -908,10 +911,10 @@ def get_header_body_tuple(self, fields, request,
headerinfo['Reply-To'] = self.secure_header_line(reply_addr)

# transform subject into mail header encoded string
email_charset = portal.getProperty('email_charset', 'utf-8')
email_charset = registry['plone.email_charset'] or 'utf-8'

if not isinstance(subject, unicode):
site_charset = utils.getSiteEncoding()
site_charset = 'utf-8'
subject = unicode(subject, site_charset, 'replace')

msgSubject = self.secure_header_line(subject).encode(email_charset, 'replace')
Expand Down Expand Up @@ -948,8 +951,7 @@ def send_form(self, fields, request, **kwargs):

# translation and encodings
def _site_encoding(self):
site_props = self.portal_properties.site_properties
return site_props.default_charset or 'UTF-8'
return 'UTF-8'

security.declareProtected(View, 'allFieldDisplayList')

Expand Down

0 comments on commit 3695500

Please sign in to comment.