From 5e375b0820518b3c7130c4864cefb2ef4b8c8ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Wed, 5 Jun 2019 18:32:08 +0200 Subject: [PATCH] Allow to store SEPA Message content on the file system issue7295 review44851002 --- CHANGELOG | 2 ++ doc/index.rst | 13 +++++++++++++ payment.py | 14 +++++++++++++- tests/test_account_payment_sepa.py | 2 +- view/message_form.xml | 3 +-- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e7d699396c..f276510188 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Allow to store SEPA message content on the file system + Version 5.2.0 - 2019-05-06 * Bug fixes (see mercurial logs for details) * Remove unique constraint on SEPA identifier diff --git a/doc/index.rst b/doc/index.rst index 65d1e7b82b..0828d50f61 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -76,3 +76,16 @@ Party The Party has a field `SEPA Creditor Identifier` used for the party of the company. + + +Configuration +************* + +The account_payment_sepa module uses the section `account_payment_sepa` to +retrieve some parameters: + +- `filestore`: a boolean value to store SEPA message in the FileStore. + The default value is `False`. + +- `store_prefix`: the prefix to use with the FileStore. The default value is + `None`. diff --git a/payment.py b/payment.py index 65e4a7f651..984d1bff6b 100644 --- a/payment.py +++ b/payment.py @@ -11,6 +11,7 @@ import genshi.template from lxml import etree from sql import Literal +from trytond.config import config from trytond.i18n import gettext from trytond.pool import PoolMeta, Pool from trytond.model import (ModelSQL, ModelView, Workflow, fields, dualmethod, @@ -46,6 +47,14 @@ if not hasattr(ASTTransformer, 'visit_NameConstant'): # Re-use visit_Name because _clone is deleted ASTTransformer.visit_NameConstant = ASTTransformer.visit_Name +if config.getboolean('account_payment_sepa', 'filestore', default=False): + file_id = 'message_file_id' + store_prefix = config.get( + 'account_payment_sepa', 'store_prefix', default=None) +else: + file_id = None + store_prefix = None + class Journal(metaclass=PoolMeta): __name__ = 'account.payment.journal' @@ -613,7 +622,10 @@ class Message(Workflow, ModelSQL, ModelView): 'readonly': Eval('state') != 'draft', } _depends = ['state'] - message = fields.Text('Message', states=_states, depends=_depends) + message = fields.Binary('Message', filename='filename', + file_id=file_id, store_prefix=store_prefix, + states=_states, depends=_depends) + message_file_id = fields.Char("Message File ID", readonly=True) filename = fields.Function(fields.Char('Filename'), 'get_filename') type = fields.Selection([ ('in', 'IN'), diff --git a/tests/test_account_payment_sepa.py b/tests/test_account_payment_sepa.py index 6b6b7c2b06..35ddddc6ac 100644 --- a/tests/test_account_payment_sepa.py +++ b/tests/test_account_payment_sepa.py @@ -138,7 +138,7 @@ def validate_file(flavor, kind, xsd=None): message, = group.sepa_messages assert message.type == 'out', message.type assert message.state == 'waiting', message.state - sepa_string = message.message.encode('utf-8') + sepa_string = bytes(message.message) sepa_xml = etree.fromstring(sepa_string) schema_file = os.path.join(os.path.dirname(__file__), '%s.xsd' % xsd) diff --git a/view/message_form.xml b/view/message_form.xml index 23dbca1720..d4d3ad3d01 100644 --- a/view/message_form.xml +++ b/view/message_form.xml @@ -9,8 +9,7 @@ this repository contains the full copyright notices and license terms. -->