From 929d42571395dadd55ede47e92f848e721550e10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Mon, 19 Feb 2024 15:23:19 +0900 Subject: [PATCH] restricted py3 --- product/ERP5Type/Collections.py | 22 ++++++++++++++++++---- product/ERP5Type/Six.py | 5 +++-- product/ERP5Type/patches/Restricted.py | 2 ++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/product/ERP5Type/Collections.py b/product/ERP5Type/Collections.py index c3c0ed7d4dd..48ae96689dc 100644 --- a/product/ERP5Type/Collections.py +++ b/product/ERP5Type/Collections.py @@ -29,11 +29,25 @@ Restricted collections module. From restricted python, use "import collections" (see patches/Restricted.py). """ +import six + from collections import ( Counter, defaultdict, deque, OrderedDict, namedtuple as _namedtuple) +if six.PY2: + def namedtuple(typename, field_names, verbose=False, rename=False): + ret = _namedtuple(typename, field_names, verbose, rename) + ret.__allow_access_to_unprotected_subobjects__ = 1 + return ret +else: + def namedtuple(typename, field_names, rename=False, defaults=None, module=None): + ret = _namedtuple( + typename, + field_names, + rename=rename, + defaults=defaults, + module=module + ) + ret.__allow_access_to_unprotected_subobjects__ = 1 + return ret -def namedtuple(typename, field_names, verbose=False, rename=False): - ret = _namedtuple(typename, field_names, verbose, rename) - ret.__allow_access_to_unprotected_subobjects__ = 1 - return ret diff --git a/product/ERP5Type/Six.py b/product/ERP5Type/Six.py index 3f7ac951b69..ed58bfb2f96 100644 --- a/product/ERP5Type/Six.py +++ b/product/ERP5Type/Six.py @@ -48,5 +48,6 @@ from AccessControl.ZopeGuards import SafeIter iterkeys = lambda d: SafeIter(_six.iterkeys(d), d) itervalues = lambda d: SafeIter(_six.itervalues(d), d) -from AccessControl.ZopeGuards import safe_builtins as _safe_builtins -_safe_builtins['xrange'] = _six.moves.xrange +if PY2: + from AccessControl.ZopeGuards import safe_builtins as _safe_builtins + _safe_builtins['xrange'] = _six.moves.xrange diff --git a/product/ERP5Type/patches/Restricted.py b/product/ERP5Type/patches/Restricted.py index 5dc8b086663..1a78fb9f69d 100644 --- a/product/ERP5Type/patches/Restricted.py +++ b/product/ERP5Type/patches/Restricted.py @@ -385,6 +385,8 @@ import six.moves.urllib.parse allow_module('six.moves.urllib.parse') allow_type(six.moves.urllib.parse.ParseResult) allow_type(six.moves.urllib.parse.SplitResult) +# BBB this is different type on python3 +allow_type(type(six.moves.urllib.parse.urldefrag(''))) ModuleSecurityInfo('six.moves.urllib.parse').declarePublic( 'urlencode', 'quote', 'unquote', -- 2.30.9