From 2bac806bbd59391aff87e1e65208362cfd06a5ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Fri, 6 May 2022 18:18:01 +0200 Subject: [PATCH] Remove python2 compatibility code from fields.Binary issue11467 review411111003 --- trytond/model/fields/binary.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/trytond/model/fields/binary.py b/trytond/model/fields/binary.py index 8363ad4aa6..5dabc25b57 100644 --- a/trytond/model/fields/binary.py +++ b/trytond/model/fields/binary.py @@ -9,13 +9,21 @@ from trytond.transaction import Transaction from .field import Field +def caster(d): + if isinstance(d, bytes): + return d + elif isinstance(d, memoryview): + return bytes(d) + return bytes(d, encoding='utf8') + + class Binary(Field): ''' Define a binary field (``bytes``). ''' _type = 'binary' _sql_type = 'BLOB' - cast = bytearray if bytes == str else bytes + cast = staticmethod(caster) def __init__(self, string='', help='', required=False, readonly=False, domain=None, states=None, select=False, on_change=None, @@ -89,8 +97,6 @@ class Binary(Field): continue value = i[name] if value: - if isinstance(value, str): - value = value.encode('utf-8') value = converter(value) else: value = default