Commit 8a3fae46 authored by Jérome Perrin's avatar Jérome Perrin

*: make attachment_list of notification API correctly use bytes

parent f7f0c1c6
# coding: utf-8 # coding: utf-8
import unicodedata import unicodedata
from six.moves import cStringIO as StringIO import six
from io import BytesIO
import zipfile import zipfile
from Products.ERP5Type.Message import translateString from Products.ERP5Type.Message import translateString
...@@ -22,7 +23,7 @@ if test_compta_demat_compatibility: ...@@ -22,7 +23,7 @@ if test_compta_demat_compatibility:
'NFKD', fec_file.replace(u"€", "EUR") 'NFKD', fec_file.replace(u"€", "EUR")
).encode('ascii', 'ignore') ).encode('ascii', 'ignore')
zipbuffer = StringIO() zipbuffer = BytesIO()
zipfilename = at_date.strftime('FEC-%Y%m%d.zip') zipfilename = at_date.strftime('FEC-%Y%m%d.zip')
zipfileobj = zipfile.ZipFile(zipbuffer, 'w', compression=zipfile.ZIP_DEFLATED) zipfileobj = zipfile.ZipFile(zipbuffer, 'w', compression=zipfile.ZIP_DEFLATED)
filename = 'FEC.xml' filename = 'FEC.xml'
...@@ -42,9 +43,15 @@ attachment_list = ( ...@@ -42,9 +43,15 @@ attachment_list = (
'content': zipbuffer.getvalue(), 'content': zipbuffer.getvalue(),
'name': zipfilename, }, ) 'name': zipfilename, }, )
subject = translateString('French Accounting Transaction File')
if six.PY2:
subject = unicode(subject)
else:
subject = str(subject)
portal.ERP5Site_notifyReportComplete( portal.ERP5Site_notifyReportComplete(
user_name=user_name, user_name=user_name,
subject=unicode(translateString('French Accounting Transaction File')), subject=subject,
message='', message='',
attachment_list=attachment_list) attachment_list=attachment_list)
......
...@@ -121,9 +121,9 @@ class Url(Coordinate, UrlMixin): ...@@ -121,9 +121,9 @@ class Url(Coordinate, UrlMixin):
This method was previously named 'SendMail' and is used to send email This method was previously named 'SendMail' and is used to send email
* attachment_list is a list of dictionnaries with those keys: * attachment_list is a list of dictionnaries with those keys:
- name : name of the attachment, - name (str): name of the attachment,
- content: data of the attachment - content (bytes): data of the attachment
- mime_type: mime-type corresponding to the attachment - mime_type (str): mime-type corresponding to the attachment
* extra_headers is a dictionnary of custom headers to add to the email. * extra_headers is a dictionnary of custom headers to add to the email.
"X-" prefix is automatically added to those headers. "X-" prefix is automatically added to those headers.
""" """
......
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
* body: body of the message as UTF-8 encoded string * body: body of the message as UTF-8 encoded string
* content_type: mime type of this message, can be text/html for * content_type: mime type of this message, can be text/html for
HTML message or anything else for text/plain message. HTML message or anything else for text/plain message.
* attachment_list: a list of attachement mapping in format: * attachment_list: a list of attachment mapping in format:
- mime_type: mime type of thsi attachement - mime_type (str): mime type of thsi attachment
- content: file content of the attachement, as a string - content (bytes): file content of the attachment
- name: displayed name of this attachements - name (str): displayed name of this attachment
* embedded_file_list: a list of ERP5 File to use as attachments. * embedded_file_list: a list of ERP5 File to use as attachments.
* extra_header_dict: additional email headers * extra_header_dict: additional email headers
......
...@@ -30,7 +30,7 @@ with portal.Localizer.translationContext(localizer_language): ...@@ -30,7 +30,7 @@ with portal.Localizer.translationContext(localizer_language):
attachment_name = attachment_name[:-1] attachment_name = attachment_name[:-1]
attachment_list = ( attachment_list = (
{'mime_type': (request.RESPONSE.getHeader('content-type') or 'application/octet-stream;').split(';')[0], {'mime_type': (request.RESPONSE.getHeader('content-type') or 'application/octet-stream;').split(';')[0],
'content': '%s' % report_data, 'content': bytes(report_data),
'name': attachment_name},) 'name': attachment_name},)
getattr(portal, notify_report_complete_script_id)( getattr(portal, notify_report_complete_script_id)(
......
...@@ -51,7 +51,7 @@ with portal.Localizer.translationContext(localizer_language): ...@@ -51,7 +51,7 @@ with portal.Localizer.translationContext(localizer_language):
attachment_list = ( attachment_list = (
{'mime_type': (request.RESPONSE.getHeader('content-type') or 'application/octet-stream;').split(';')[0], {'mime_type': (request.RESPONSE.getHeader('content-type') or 'application/octet-stream;').split(';')[0],
'content': '%s' % report_data, 'content': bytes(report_data),
'name': attachment_name},) 'name': attachment_name},)
getattr(portal, notify_report_complete_script_id)( getattr(portal, notify_report_complete_script_id)(
......
...@@ -355,7 +355,7 @@ class Alarm(XMLObject, PeriodicityMixin): ...@@ -355,7 +355,7 @@ class Alarm(XMLObject, PeriodicityMixin):
for x in result_list] for x in result_list]
rendered_alarm_result = '\n'.join(rendered_alarm_result_list) rendered_alarm_result = '\n'.join(rendered_alarm_result_list)
attachment_list.append({'name': 'alarm_result.txt', attachment_list.append({'name': 'alarm_result.txt',
'content': rendered_alarm_result, 'content': rendered_alarm_result.encode(),
'mime_type': 'text/plain'}) 'mime_type': 'text/plain'})
notification_tool.sendMessage(recipient=candidate_list, notification_tool.sendMessage(recipient=candidate_list,
......
...@@ -109,9 +109,9 @@ def buildEmailMessage(from_url, to_url, msg=None, ...@@ -109,9 +109,9 @@ def buildEmailMessage(from_url, to_url, msg=None,
sent by Zope MailHost. sent by Zope MailHost.
* attachment_list is a list of dictionaries with those keys: * attachment_list is a list of dictionaries with those keys:
- name : name of the attachment, - name (str): name of the attachment
- content: data of the attachment - content (bytes): data of the attachment
- mime_type: mime-type corresponding to the attachment - mime_type (str): mime-type corresponding to the attachment
* extra_headers is a dictionary of custom headers to add to the email. * extra_headers is a dictionary of custom headers to add to the email.
"X-" prefix is automatically added to those headers. "X-" prefix is automatically added to those headers.
* additional_headers is similar to extra_headers, but no prefix is added. * additional_headers is similar to extra_headers, but no prefix is added.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment