- 10 May, 2022 5 commits
-
-
Romain Courteaud authored
-
Romain Courteaud authored
-
Romain Courteaud authored
erp5_search_rank_catalog: do not destroy the previously calculated rank erp5_search_rank_catalog: Show module content before tools content erp5_search_rank_catalog: keep default value low, to prevent having huge rank score
-
Jérome Perrin authored
To workaround a bug with our old pylint / astroid versions
-
Jérome Perrin authored
Revert "py3: sortKey() must be a string as comparison between str and None/int/tuple now raises TypeError." This reverts commit 192c2000. This commit introduced a test failure with testCommitOrder testInvalidationBug.TestInvalidationBug [1] Traceback (most recent call last): File "Products/ERP5/tests/testInvalidationBug.py", line 93, in testCommitOrder self.assertEqual(result_list[1], [0,0]) # activity buffer first AssertionError: Lists differ: [1, 0] != [0, 0] First differing element 0: 1 0 - [1, 0] ? ^ + [0, 0] ? ^ That commit was apparently in the good direction, because transaction API specifies that sortKey must return string https://github.com/zopefoundation/transaction/blob/6cf10102948a8f4e36092a9b402e3859d6db4ccd/CHANGES.rst#141-2013-02-20 https://github.com/zopefoundation/transaction/blob/33448417ab526327757f05e23b1884786c805629/src/transaction/interfaces.py#L524-L534
-
- 09 May, 2022 4 commits
-
-
Jérome Perrin authored
using a css selector also matches: <div class="transition_message transition_message_success">Deleted.</div> unlike the xpath selector which matches only element where class attribute is exactly "transition_message"
-
Jérome Perrin authored
-
Jérome Perrin authored
-
Jérome Perrin authored
-
- 06 May, 2022 8 commits
-
-
Valentin Benozillo authored
Define min and max to integer html field
-
Valentin Benozillo authored
when defining start and end property in ERP5 integer field
-
Valentin Benozillo authored
-
Jérome Perrin authored
"template_keep_path_list" definition was wrong, the tool is uninstalled when updating in wrong order
-
Jérome Perrin authored
This allows executing a script doing REQUEST.RESPONSE.redirect() without error. Before this patch it's an AttributeError similar to: ------ 2022-04-12 03:52:49,083 WARNING ActivityTool Could not call method ... Traceback (most recent call last): ... File "Script (Python)", line 34, in Base_redirect return request.RESPONSE.redirect(redirect_url, status=status_code) AttributeError: TimerResponse instance has no attribute 'redirect'
-
Jérome Perrin authored
Instead of temporarily changing the global timeout, which can impact other parts of the system and which is not free from race conditions ( another thread might have changed the timeout when socket.getdefaulttimeout() is called and then we restore a wrong default timeout).
-
Julien Muchembled authored
See commit 0c2dd107.
-
Rafael Monnerat authored
See merge request nexedi/erp5!1616
-
- 04 May, 2022 23 commits
-
-
Rafael Monnerat authored
For facebook and openid buttons.
-
Rafael Monnerat authored
Like in WebSite_login, came_from is an URI Template so we must expand the URI to handle the {&n.me} that can be present on the URL.
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
With Python2, properties were all str(). with Python3, we need to distinguish binary-like properties from text-like properties. This should ideally be implemented by checking PropertySheet elementary_type (such as `data` for bytes() and `string` or `text` for str()) for each property. For now (bootstrap/addERP5Site) though, let's consider all properties in .xml to be UTF-8 str() and statically define which is which for non-.xml files.
-
Arnaud Fontaine authored
And _mysql/mysqldb API (_mysql.connection.query()) converts the query string to bytes() (additionally, cursor.execute(QUERY, ARGS) calls query() after converting everything to bytes() too).
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
Done through various 2to3 fixers (zope.fixers, modernize, future) and manual changes. This is a single commit so that we have a clearer picture of how code converted with my2to3 should look like. Except straightforward @implementer decorator 2to3 fixer, only product/ folder was considered as the goal was to be able to create an ERP5Site. * Use @implementer decorator introduced in zope.interface 3.6.0 (2010): The implements syntax used under Python 2.X does not work under 3.X, since it depends on how metaclasses are implemented and this has changed. Instead it now supports a decorator syntax (also under Python 2.X). Applied thanks to 2to3 `zope.fixers` package. * Use `six.moves` rather than `future` install_aliases() feature because the latter use unicode_literals and "wraps" module aliases so that unicode() are returned for text rather than str() (Python2 standard library). This notably breaks BusinessTemplate code which uses urllib quote() for filesystem paths... * No more unbound methods in python3 so use six.get_unbound_function(). * dict.(iteritems,iterkeys,itervalues)() => six.\1(dict) thanks to `dict_six` 2to3 fixer from `modernize`: $ python-modernize -w -f dict_six product/ * Manually make sure that dict.{items,values,keys}() returns a real list when it is latter modified rather than a dict_{items,values,keys} (ensure_list()). By default, 2to3 blindly does list(dict.{items,values,keys}()) which is not acceptable from performances point of view. With my2to3, this will be possible to handle such case automatically. * Replace cStringIO.StringIO() by six.moves.cStringIO() (a module alias for cStringIO.StringIO() on py2 and io.StringIO() on py3). * Use six.text_type which maps to unicode() on py2 and str() on py3. This also makes a clearer difference between text and binary strings. * Replace map()/filter() with lambda function by list comprehension (this has the benefit to avoid casting to list for py3 as it returns iterators).
-
Arnaud Fontaine authored
* past.builtins: portal_skins/erp5_core/Base_sortObjectListLikeSQL:0:2:Redefining built-in 'cmp' (redefined-builtin) * six and six.moves imports: + portal_skins/erp5_core/Base_updateListboxSelection:0:2:Redefining built-in 'basestring' (redefined-builtin) + portal_skins/erp5_core/ERP5Site_checkDataWithScript:20:2:Redefining built-in 'xrange' (redefined-builtin),
-
Arnaud Fontaine authored
Use the latter form that works on both. On non-PythonScript code, this is of course not an issue but Python2 PythonScript does not have a __code__ properties and requires a patch on Shared.DC.Scripts.Signature (applied by SlapOS recipe) so that FuncCode() object is set to not only func_code but also __code__.
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
And also disable pylint patch as pylint version with Python3 support is not supported yet by ERP5...
-
Arnaud Fontaine authored
* Add functions to properly convert/handle bytes/str/unicode (from slapos.util) (stricter than six.ensure_{text,str}()). * Python3 {keys,values,items}() now returns dict_{keys,values,items} rather than real list() so add ensure_list() to create a list() when it is latter modified but do nothing on Python2 for performance sake.
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
File "product/TimerService/timerserver/TimerServer.py", line 71, in run s.send('GET / HTTP/1.1\r\n\r\n') TypeError: a bytes-like object is required, not 'str'
-
Arnaud Fontaine authored
And Zope4 now mandates it to be a string ({Shared.DC.ZRDB.TM.TM,ITransactionManager}.sortKey()).
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
This changes the API to implement similar feature in Python3, but this should not be an issue because Interactor are only for non-ERP5 object...
-
Arnaud Fontaine authored
-
Arnaud Fontaine authored
py3: AccessControl users_with_local_roles() returns a dict_keys() instead of a subscriptable object. Submitted upstream: https://github.com/zopefoundation/AccessControl/pull/128
-
Arnaud Fontaine authored
py3: DCWorkflow is python2-only so make ERP5Site creation work on Python3 WITH_LEGACY_WORKFLOW=False. ERP5 Workflow implementation should ideally not depend on DCWorkflow at all so that legacy DCWorkflow can be disabled for Python2 but this would require much more work.
-