Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Titouan Soulard
erp5
Commits
4f0fd092
Commit
4f0fd092
authored
Sep 30, 2022
by
Kazuhiko Shiozaki
Committed by
Jérome Perrin
Aug 21, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
py2/py3: handle bytes correctly in Python3.
parent
accc8cc8
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
22 additions
and
21 deletions
+22
-21
product/CMFActivity/Activity/SQLBase.py
product/CMFActivity/Activity/SQLBase.py
+16
-17
product/CMFActivity/ActivityTool.py
product/CMFActivity/ActivityTool.py
+1
-1
product/ERP5Type/Utils.py
product/ERP5Type/Utils.py
+1
-1
product/ERP5Type/tests/ERP5TypeTestCase.py
product/ERP5Type/tests/ERP5TypeTestCase.py
+2
-2
product/ZSQLCatalog/Utils.py
product/ZSQLCatalog/Utils.py
+2
-0
No files found.
product/CMFActivity/Activity/SQLBase.py
View file @
4f0fd092
...
...
@@ -29,7 +29,7 @@ from __future__ import absolute_import
from
six
import
string_types
as
basestring
from
six.moves
import
xrange
from
Products.ERP5Type.Utils
import
ensure_list
,
str2bytes
from
Products.ERP5Type.Utils
import
bytes2str
,
ensure_list
,
str2bytes
from
collections
import
defaultdict
from
contextlib
import
contextmanager
from
itertools
import
product
,
chain
...
...
@@ -397,10 +397,10 @@ CREATE TABLE %s (
for
line
in
result
]
def
countMessageSQL
(
self
,
quote
,
**
kw
):
return
"SELECT count(*) FROM %s WHERE processing_node > %d AND %s"
%
(
s
elf
.
sql_table
,
DEPENDENCY_IGNORED_ERROR_STATE
,
" AND "
.
join
(
return
b
"SELECT count(*) FROM %s WHERE processing_node > %d AND %s"
%
(
s
tr2bytes
(
self
.
sql_table
),
DEPENDENCY_IGNORED_ERROR_STATE
,
b
" AND "
.
join
(
sqltest_dict
[
k
](
v
,
quote
)
for
(
k
,
v
)
in
six
.
iteritems
(
kw
)
if
v
)
or
"1"
)
)
or
b
"1"
)
def
hasActivitySQL
(
self
,
quote
,
only_valid
=
False
,
only_invalid
=
False
,
**
kw
):
where
=
[
sqltest_dict
[
k
](
v
,
quote
)
for
(
k
,
v
)
in
six
.
iteritems
(
kw
)
if
v
]
...
...
@@ -425,7 +425,7 @@ CREATE TABLE %s (
0
,
)[
1
]
else
:
subquery
=
(
b"("
subquery
=
lambda
*
a
,
**
k
:
str2bytes
(
bytes2str
(
b"("
b"SELECT 3*priority{} AS effective_priority, date"
b" FROM %s"
b" WHERE"
...
...
@@ -434,7 +434,7 @@ CREATE TABLE %s (
b" date <= UTC_TIMESTAMP(6)"
b" ORDER BY priority, date"
b" LIMIT 1"
b")"
%
s
elf
.
sql_table
).
format
b")"
%
s
tr2bytes
(
self
.
sql_table
)).
format
(
*
a
,
**
k
))
result
=
query
(
b"SELECT *"
b" FROM (%s) AS t"
...
...
@@ -443,11 +443,11 @@ CREATE TABLE %s (
b" UNION ALL "
.
join
(
chain
(
(
subquery
(
b'-1'
,
b
'node = %i'
%
processing_node
),
subquery
(
b''
,
b
'node=0'
),
subquery
(
'-1'
,
'node = %i'
%
processing_node
),
subquery
(
''
,
'node=0'
),
),
(
subquery
(
b'-1'
,
b
'node = %i'
%
x
)
subquery
(
'-1'
,
'node = %i'
%
x
)
for
x
in
node_set
),
),
...
...
@@ -464,7 +464,7 @@ CREATE TABLE %s (
# sorted set to filter negative node values.
# This is why this query is only executed when the previous one
# did not find anything.
result
=
query
(
subquery
(
b'+1'
,
b
'node>0'
),
0
)[
1
]
result
=
query
(
subquery
(
'+1'
,
'node>0'
),
0
)[
1
]
if
result
:
return
result
[
0
]
return
Queue
.
getPriority
(
self
,
activity_tool
,
processing_node
,
node_set
)
...
...
@@ -779,7 +779,7 @@ CREATE TABLE %s (
0
,
))
else
:
subquery
=
(
b"("
subquery
=
lambda
*
a
,
**
k
:
str2bytes
(
bytes2str
(
b"("
b"SELECT *, 3*priority{} AS effective_priority"
b" FROM %s"
b" WHERE"
...
...
@@ -788,8 +788,7 @@ CREATE TABLE %s (
b" %s%s"
b" ORDER BY priority, date"
b" LIMIT %i"
b" FOR UPDATE"
b")"
%
args
).
format
b")"
%
args
).
format
(
*
a
,
*
k
))
result
=
Results
(
query
(
b"SELECT *"
b" FROM (%s) AS t"
...
...
@@ -798,11 +797,11 @@ CREATE TABLE %s (
b" UNION ALL "
.
join
(
chain
(
(
subquery
(
b'-1'
,
b
'node = %i'
%
processing_node
),
subquery
(
b''
,
b
'node=0'
),
subquery
(
'-1'
,
'node = %i'
%
processing_node
),
subquery
(
''
,
'node=0'
),
),
(
subquery
(
b'-1'
,
b
'node = %i'
%
x
)
subquery
(
'-1'
,
'node = %i'
%
x
)
for
x
in
node_set
),
),
...
...
@@ -820,7 +819,7 @@ CREATE TABLE %s (
# sorted set to filter negative node values.
# This is why this query is only executed when the previous one
# did not find anything.
result
=
Results
(
query
(
subquery
(
b'+1'
,
b
'node>0'
),
0
))
result
=
Results
(
query
(
subquery
(
'+1'
,
'node>0'
),
0
))
if
result
:
# Reserve messages.
uid_list
=
[
x
.
uid
for
x
in
result
]
...
...
product/CMFActivity/ActivityTool.py
View file @
4f0fd092
...
...
@@ -1808,7 +1808,7 @@ class ActivityTool (BaseTool):
"""
db
=
self
.
getSQLConnection
()
quote
=
db
.
string_literal
return
sum
(
x
for
x
,
in
db
.
query
(
"(%s)"
%
") UNION ALL ("
.
join
(
return
sum
(
x
for
x
,
in
db
.
query
(
b"(%s)"
%
b
") UNION ALL ("
.
join
(
activity
.
countMessageSQL
(
quote
,
**
kw
)
for
activity
in
six
.
itervalues
(
activity_dict
)))[
1
])
...
...
product/ERP5Type/Utils.py
View file @
4f0fd092
...
...
@@ -385,7 +385,7 @@ def getTranslationStringWithContext(self, msg_id, context, context_id):
result
=
localizer
.
erp5_ui
.
gettext
(
msg_id_context
,
default
=
''
)
if
result
==
''
:
result
=
localizer
.
erp5_ui
.
gettext
(
msg_id
)
return
result
.
encode
(
'utf8'
)
return
unicode2str
(
result
)
def
Email_parseAddressHeader
(
text
):
"""
...
...
product/ERP5Type/tests/ERP5TypeTestCase.py
View file @
4f0fd092
...
...
@@ -48,7 +48,7 @@ from Products.PythonScripts.PythonScript import PythonScript
from
Products.ERP5Type.Accessor.Constant
import
PropertyGetter
as
ConstantGetter
from
Products.ERP5Form.PreferenceTool
import
Priority
from
zLOG
import
LOG
,
DEBUG
from
Products.ERP5Type.Utils
import
convertToUpperCase
,
str2bytes
from
Products.ERP5Type.Utils
import
convertToUpperCase
,
bytes2str
,
str2bytes
from
Products.ERP5Type.tests.backportUnittest
import
SetupSiteError
from
Products.ERP5Type.tests.utils
import
addUserToDeveloperRole
from
Products.ERP5Type.tests.utils
import
parseListeningAddress
...
...
@@ -1560,7 +1560,7 @@ def optimize():
PythonScript
.
_compile
=
_compile
PythonScript_exec
=
PythonScript
.
_exec
def
_exec
(
self
,
*
args
):
self
.
func_code
# trigger compilation if needed
self
.
__code__
# trigger compilation if needed
return
PythonScript_exec
(
self
,
*
args
)
PythonScript
.
_exec
=
_exec
from
Acquisition
import
aq_parent
...
...
product/ZSQLCatalog/Utils.py
View file @
4f0fd092
...
...
@@ -31,6 +31,8 @@ def sqlquote(value):
# (ex: ZMySQLDA.DA.Connection.sql_quote__).
# Duplicating such code is error-prone, and makes us rely on a specific SQL
# dialect...
if
str
!=
bytes
and
isinstance
(
value
,
bytes
):
# six.PY3
value
=
value
.
decode
()
return
"'"
+
(
value
.
replace
(
'
\
x5c
'
,
r'\\'
)
.
replace
(
'
\
x00
'
,
r'\0'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment