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
Labels
Merge Requests
139
Merge Requests
139
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
Jobs
Commits
Open sidebar
nexedi
erp5
Commits
75d6e57f
Commit
75d6e57f
authored
2 years ago
by
Kazuhiko Shiozaki
Committed by
Arnaud Fontaine
7 months ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
py2/py3: cmp() and sort(cmp=...) do not exist in Python 3.
also str representation of unicode character is different.
parent
dacc54d4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
10 deletions
+32
-10
bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.BuilderMixin.py
...TemplateItem/portal_components/mixin.erp5.BuilderMixin.py
+6
-5
product/CMFCategory/Category.py
product/CMFCategory/Category.py
+17
-4
product/CMFCategory/tests/testCMFCategory.py
product/CMFCategory/tests/testCMFCategory.py
+3
-0
product/ERP5Type/Utils.py
product/ERP5Type/Utils.py
+6
-1
No files found.
bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.BuilderMixin.py
View file @
75d6e57f
...
...
@@ -780,15 +780,16 @@ class BuilderMixin(XMLObject, Amount, Predicate):
for
i
in
self
.
getPortalObject
().
portal_categories
.
collect_order_group
.
contentValues
():
category_index_dict
[
i
.
getId
()]
=
i
.
getIntIndex
()
def
sort_movement_group
(
a
,
b
):
return
cmp
(
category_index_dict
.
get
(
a
.
getCollectOrderGroup
()),
category_index_dict
.
get
(
b
.
getCollectOrderGroup
()))
or
\
cmp
(
a
.
getIntIndex
(),
b
.
getIntIndex
())
def
sort_movement_group_key
(
a
):
return
(
category_index_dict
.
get
(
a
.
getCollectOrderGroup
()),
a
.
getIntIndex
(),
)
if
portal_type
is
None
:
portal_type
=
self
.
getPortalMovementGroupTypeList
()
movement_group_list
=
[
x
for
x
in
self
.
contentValues
(
filter
=
{
'portal_type'
:
portal_type
})
\
if
collect_order_group
is
None
or
collect_order_group
==
x
.
getCollectOrderGroup
()]
return
sorted
(
movement_group_list
,
sort_movement_group
)
return
sorted
(
movement_group_list
,
key
=
sort_movement_group_key
)
# XXX category name is hardcoded.
def
getDeliveryMovementGroupList
(
self
,
**
kw
):
...
...
This diff is collapsed.
Click to expand it.
product/CMFCategory/Category.py
View file @
75d6e57f
...
...
@@ -42,12 +42,20 @@ from Products.ERP5Type.Core.Folder import Folder
from
Products.CMFCategory.Renderer
import
Renderer
from
Products.ERP5Type.Utils
import
sortValueList
from
Products.ERP5Type.Cache
import
CachingMethod
import
six
if
six
.
PY3
:
from
functools
import
cmp_to_key
def
cmp
(
a
,
b
):
return
(
a
>
b
)
-
(
a
<
b
)
DEFAULT_CACHE_FACTORY
=
'erp5_ui_long'
from
zLOG
import
LOG
NBSP_UTF8
=
u'
\
xA0
'
.
encode
(
'utf-8'
)
if
six
.
PY2
:
NBSP_UTF8
=
u'
\
xA0
'
.
encode
(
'utf-8'
)
else
:
NBSP_UTF8
=
'
\
xA0
'
manage_addCategoryForm
=
DTMLFile
(
'dtml/category_add'
,
globals
())
...
...
@@ -331,8 +339,10 @@ class Category(Folder):
if
local_sort_method
:
# sort objects at the current level
child_value_list
=
list
(
child_value_list
)
child_value_list
.
sort
(
local_sort_method
)
if
six
.
PY2
:
child_value_list
.
sort
(
local_sort_method
)
else
:
child_value_list
.
sort
(
key
=
cmp_to_key
(
local_sort_method
))
if
recursive
:
for
c
in
child_value_list
:
# Do not pass sort_on / sort_order parameters intentionally, because
...
...
@@ -883,7 +893,10 @@ class BaseCategory(Category):
if
local_sort_method
:
# sort objects at the current level
child_value_list
=
list
(
child_value_list
)
child_value_list
.
sort
(
local_sort_method
)
if
six
.
PY2
:
child_value_list
.
sort
(
local_sort_method
)
else
:
child_value_list
.
sort
(
key
=
cmp_to_key
(
local_sort_method
))
if
recursive
:
for
c
in
child_value_list
:
...
...
This diff is collapsed.
Click to expand it.
product/CMFCategory/tests/testCMFCategory.py
View file @
75d6e57f
...
...
@@ -38,6 +38,9 @@ from Testing.ZopeTestCase.PortalTestCase import PortalTestCase
from
AccessControl.SecurityManagement
import
newSecurityManager
from
AccessControl.SecurityManagement
import
noSecurityManager
import
six
if
six
.
PY3
:
def
cmp
(
a
,
b
):
return
(
a
>
b
)
-
(
a
<
b
)
class
TestCMFCategory
(
ERP5TypeTestCase
):
...
...
This diff is collapsed.
Click to expand it.
product/ERP5Type/Utils.py
View file @
75d6e57f
...
...
@@ -34,6 +34,8 @@ from six import int2byte as chr
from
six
import
string_types
as
basestring
from
six.moves
import
xrange
import
six
if
six
.
PY3
:
from
functools
import
cmp_to_key
import
os
import
re
import
string
...
...
@@ -206,7 +208,10 @@ def sortValueList(value_list, sort_on=None, sort_order=None, **kw):
if
result
!=
0
:
break
return
result
sort_kw
=
{
'cmp'
:
sortValues
}
if
six
.
PY2
:
sort_kw
=
{
'cmp'
:
sortValues
}
else
:
sort_kw
=
{
'key'
:
cmp_to_key
(
sortValues
)}
sort_kw_cache
[(
sort_on
,
sort_order
)]
=
sort_kw
if
isinstance
(
value_list
,
LazyMap
):
...
...
This diff is collapsed.
Click to expand it.
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