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
Paul Graydon
erp5
Commits
c71a47c8
Commit
c71a47c8
authored
2 years ago
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into zope4py2
parents
5252fde2
e9531ee8
Changes
20
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
70 additions
and
80 deletions
+70
-80
bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.py
...eItem/portal_components/test.erp5.testBusinessTemplate.py
+7
-7
bt5/erp5_crm/TestTemplateItem/portal_components/test.erp5.testCRM.py
...m/TestTemplateItem/portal_components/test.erp5.testCRM.py
+1
-1
bt5/erp5_syncml/ModuleComponentTemplateItem/portal_components/module.erp5.SyncMLTransportFile.py
...Item/portal_components/module.erp5.SyncMLTransportFile.py
+1
-1
bt5/erp5_syncml/ToolComponentTemplateItem/portal_components/tool.erp5.SynchronizationTool.py
...teItem/portal_components/tool.erp5.SynchronizationTool.py
+1
-1
product/ERP5/Document/BusinessTemplate.py
product/ERP5/Document/BusinessTemplate.py
+26
-30
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_callDialogMethod.py
...plateItem/portal_skins/erp5_core/Base_callDialogMethod.py
+3
-3
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BusinessTemplate_getDiffObjectList.py
...tal_skins/erp5_core/BusinessTemplate_getDiffObjectList.py
+2
-6
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BusinessTemplate_getModifiedObject.py
...tal_skins/erp5_core/BusinessTemplate_getModifiedObject.py
+3
-5
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ListBox_initializeFastInput.py
...tem/portal_skins/erp5_core/ListBox_initializeFastInput.py
+1
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/TemplateTool_getModifiedObjectList.py
...tal_skins/erp5_core/TemplateTool_getModifiedObjectList.py
+2
-2
product/ERP5/tests/erp5_url_checker.py
product/ERP5/tests/erp5_url_checker.py
+1
-1
product/ERP5/tests/extractMessageCatalog.py
product/ERP5/tests/extractMessageCatalog.py
+1
-1
product/ERP5/tests/utils.py
product/ERP5/tests/utils.py
+1
-1
product/ERP5Type/XMLExportImport/__init__.py
product/ERP5Type/XMLExportImport/__init__.py
+5
-7
product/ERP5Type/patches/DA.py
product/ERP5Type/patches/DA.py
+1
-1
product/ERP5Type/tests/ProcessingNodeTestCase.py
product/ERP5Type/tests/ProcessingNodeTestCase.py
+1
-1
product/ERP5Type/tests/Python3StyleTest.py
product/ERP5Type/tests/Python3StyleTest.py
+10
-5
product/Formulator/tests/testFormValidator.py
product/Formulator/tests/testFormValidator.py
+1
-1
product/Localizer/MessageCatalog.py
product/Localizer/MessageCatalog.py
+1
-3
product/MailTemplates/BaseMailTemplate.py
product/MailTemplates/BaseMailTemplate.py
+1
-2
No files found.
bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testBusinessTemplate.py
View file @
c71a47c8
...
...
@@ -224,7 +224,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor):
file_path
=
os
.
path
.
join
(
cfg
.
instancehome
,
'tests'
,
test_title
+
'.py'
)
if
os
.
path
.
exists
(
file_path
):
os
.
remove
(
file_path
)
f
=
file
(
file_path
,
'w'
)
f
=
open
(
file_path
,
'w'
)
f
.
write
(
test_data
)
f
.
close
()
self
.
assertTrue
(
os
.
path
.
exists
(
file_path
))
...
...
@@ -2371,7 +2371,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor):
file_path
=
os
.
path
.
join
(
cfg
.
instancehome
,
'PropertySheet'
,
ps_title
+
'.py'
)
if
os
.
path
.
exists
(
file_path
):
os
.
remove
(
file_path
)
f
=
file
(
file_path
,
'w'
)
f
=
open
(
file_path
,
'w'
)
f
.
write
(
ps_data
)
f
.
close
()
self
.
assertTrue
(
os
.
path
.
exists
(
file_path
))
...
...
@@ -2463,7 +2463,7 @@ class BusinessTemplateMixin(ERP5TypeTestCase, LogInterceptor):
file_path
=
os
.
path
.
join
(
cfg
.
instancehome
,
'PropertySheet'
,
ps_title
+
'.py'
)
if
os
.
path
.
exists
(
file_path
):
os
.
remove
(
file_path
)
f
=
file
(
file_path
,
'w'
)
f
=
open
(
file_path
,
'w'
)
f
.
write
(
ps_data
)
f
.
close
()
self
.
assertTrue
(
os
.
path
.
exists
(
file_path
))
...
...
@@ -8036,7 +8036,7 @@ class _LocalTemplateItemMixin:
file_path
=
os
.
path
.
join
(
self
.
document_base_path
,
self
.
document_title
+
'.py'
)
if
os
.
path
.
exists
(
file_path
):
os
.
remove
(
file_path
)
f
=
file
(
file_path
,
'w'
)
f
=
open
(
file_path
,
'w'
)
f
.
write
(
self
.
document_data
)
f
.
close
()
self
.
assertTrue
(
os
.
path
.
exists
(
file_path
))
...
...
@@ -8048,7 +8048,7 @@ class _LocalTemplateItemMixin:
file_path
=
os
.
path
.
join
(
self
.
document_base_path
,
self
.
document_title
+
'.py'
)
if
os
.
path
.
exists
(
file_path
):
os
.
remove
(
file_path
)
f
=
file
(
file_path
,
'w'
)
f
=
open
(
file_path
,
'w'
)
f
.
write
(
self
.
document_data_updated
)
f
.
close
()
self
.
assertTrue
(
os
.
path
.
exists
(
file_path
))
...
...
@@ -8070,12 +8070,12 @@ class _LocalTemplateItemMixin:
def
stepCheckDocumentExists
(
self
,
sequence
=
None
,
**
kw
):
self
.
assertFalse
(
not
os
.
path
.
exists
(
sequence
[
'document_path'
]))
self
.
assertEqual
(
file
(
sequence
[
'document_path'
]).
read
(),
self
.
assertEqual
(
open
(
sequence
[
'document_path'
]).
read
(),
sequence
[
'document_data'
])
def
stepCheckUpdatedDocumentExists
(
self
,
sequence
=
None
,
**
kw
):
self
.
assertFalse
(
not
os
.
path
.
exists
(
sequence
[
'document_path'
]))
self
.
assertEqual
(
file
(
sequence
[
'document_path'
]).
read
(),
self
.
assertEqual
(
open
(
sequence
[
'document_path'
]).
read
(),
sequence
[
'document_data_updated'
])
def
stepCheckDocumentRemoved
(
self
,
sequence
=
None
,
**
kw
):
...
...
This diff is collapsed.
Click to expand it.
bt5/erp5_crm/TestTemplateItem/portal_components/test.erp5.testCRM.py
View file @
c71a47c8
...
...
@@ -693,7 +693,7 @@ class TestCRMMailIngestion(BaseTestCRM):
def
_readTestData
(
self
,
filename
):
"""read test data from data directory."""
return
file
(
makeFilePath
(
filename
)).
read
()
return
open
(
makeFilePath
(
filename
)).
read
()
def
_ingestMail
(
self
,
filename
=
None
,
data
=
None
):
"""ingest an email from the mail in data dir named `filename`"""
...
...
This diff is collapsed.
Click to expand it.
bt5/erp5_syncml/ModuleComponentTemplateItem/portal_components/module.erp5.SyncMLTransportFile.py
View file @
c71a47c8
...
...
@@ -32,7 +32,7 @@ class FileTransport:
def
send
(
self
,
to_url
,
data
,
sync_id
,
content_type
):
filename
=
to_url
[
len
(
'file:/'
):]
try
:
stream
=
file
(
filename
,
'w'
)
stream
=
open
(
filename
,
'w'
)
stream
.
write
(
data
)
stream
.
close
()
except
IOError
:
...
...
This diff is collapsed.
Click to expand it.
bt5/erp5_syncml/ToolComponentTemplateItem/portal_components/tool.erp5.SynchronizationTool.py
View file @
c71a47c8
...
...
@@ -262,7 +262,7 @@ class SynchronizationTool(BaseTool):
filename
=
from_url
[
len
(
'file:'
):]
xml
=
None
try
:
stream
=
file
(
filename
,
'r'
)
stream
=
open
(
filename
,
'r'
)
except
IOError
:
# XXX-Aurel : Why raising here make unit tests to fail ?
# raise ValueError("Impossible to read file %s, error is %s"
...
...
This diff is collapsed.
Click to expand it.
product/ERP5/Document/BusinessTemplate.py
View file @
c71a47c8
This diff is collapsed.
Click to expand it.
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_callDialogMethod.py
View file @
c71a47c8
...
...
@@ -2,6 +2,7 @@
Generic method called when submitting a form in dialog mode.
Responsible for validating form data and redirecting to the form action.
"""
import
six
# XXX We should not use meta_type properly,
# XXX We need to discuss this problem.(yusei)
...
...
@@ -131,9 +132,8 @@ if len(listbox_id_list):
for
listbox_id
in
listbox_id_list
:
listbox_line_list
=
[]
listbox
=
kw
[
listbox_id
]
listbox_keys
=
listbox
.
keys
()
for
key
in
sorted
(
listbox_keys
):
listbox_line
=
listbox
[
key
]
for
key
,
value
in
sorted
(
six
.
iteritems
(
listbox
)):
listbox_line
=
value
listbox_line
[
'listbox_key'
]
=
key
listbox_line_list
.
append
(
listbox_line
)
listbox_line_list
=
tuple
(
listbox_line_list
)
...
...
This diff is collapsed.
Click to expand it.
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BusinessTemplate_getDiffObjectList.py
View file @
c71a47c8
...
...
@@ -35,16 +35,12 @@ if p.portal_templates.compareVersions(bt1.getVersion(), bt2.getVersion()) < 0:
else
:
modified_object_list
=
getModifiedObjectList
(
bt1
,
bt2
)
keys
=
modified_object_list
.
keys
()
i
=
0
object_list
=
[]
for
object_id
in
sorted
(
keys
):
object_state
,
object_class
=
modified_object_list
[
object_id
]
for
i
,
(
object_id
,
value
)
in
enumerate
(
sorted
(
six
.
iteritems
(
modified_object_list
))
):
object_state
,
object_class
=
value
line
=
newTempBase
(
context
,
'tmp_install_%s'
%
(
str
(
i
)))
line
.
edit
(
object_id
=
object_id
,
object_state
=
object_state
,
object_class
=
object_class
,
bt1
=
bt1
.
getId
(),
bt2
=
bt2
.
getId
())
line
.
setUid
(
'new_%s'
%
object_id
)
object_list
.
append
(
line
)
i
+=
1
return
object_list
This diff is collapsed.
Click to expand it.
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BusinessTemplate_getModifiedObject.py
View file @
c71a47c8
from
Products.ERP5Type.Document
import
newTempBase
from
Products.ERP5Type.Cache
import
CachingMethod
from
Products.ERP5Type.Utils
import
ensure_list
import
six
Base_translateString
=
context
.
Base_translateString
def
getModifiedObjectList
(
context
):
...
...
@@ -21,7 +22,6 @@ getModifiedObjectList = CachingMethod(getModifiedObjectList,
cache_id_generator
=
cache_id_generator
)
modified_object_list
=
getModifiedObjectList
(
context
)
keys
=
ensure_list
(
modified_object_list
.
keys
())
no_backup_list
=
[
'Action'
,
'SiteProperty'
,
'Module'
,
'Document'
,
'PropertySheet'
,
'Extension'
,
'Test'
,
'Product'
,
'Role'
,
...
...
@@ -40,10 +40,9 @@ backup_title = Base_translateString('Backup And Upgrade')
remove_title
=
Base_translateString
(
'Remove'
)
save_and_remove_title
=
Base_translateString
(
'Backup And Remove'
)
i
=
0
object_list
=
[]
for
object_id
in
sorted
(
keys
):
object_state
,
object_class
=
modified_object_list
[
object_id
]
for
i
,
(
object_id
,
value
)
in
enumerate
(
sorted
(
six
.
iteritems
(
modified_object_list
))
):
object_state
,
object_class
=
value
line
=
newTempBase
(
context
,
'tmp_install_%s'
%
(
str
(
i
)))
if
object_state
==
'New'
:
choice_item_list
=
[[
install_title
,
'install'
]]
...
...
@@ -66,7 +65,6 @@ for object_id in sorted(keys):
choice_item_list
=
choice_item_list
)
line
.
setUid
(
'new_%s'
%
str
(
object_id
))
object_list
.
append
(
line
)
i
+=
1
object_list
.
sort
(
key
=
lambda
x
:(
x
.
object_class
,
x
.
object_state
))
return
object_list
This diff is collapsed.
Click to expand it.
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/ListBox_initializeFastInput.py
View file @
c71a47c8
...
...
@@ -19,7 +19,7 @@ if hasattr(request, listbox_id):
# initialize the listbox
listbox
=
request
[
listbox_id
]
keys_list
=
sorted
(
listbox
.
keys
()
,
key
=
int
)
keys_list
=
sorted
(
listbox
,
key
=
int
)
if
keys_list
!=
[]:
first_empty_line_id
=
int
(
keys_list
[
-
1
])
+
1
...
...
This diff is collapsed.
Click to expand it.
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/TemplateTool_getModifiedObjectList.py
View file @
c71a47c8
import
six
REQUEST
=
container
.
REQUEST
Base_translateString
=
context
.
Base_translateString
...
...
@@ -45,8 +46,7 @@ save_and_remove_title = Base_translateString('Backup And Remove')
for
bt
in
bt_id_list
:
bt_title
,
modified_object_list
=
bt_object_dict
[
bt
]
keys
=
modified_object_list
.
keys
()
for
i
,
object_id
in
enumerate
(
sorted
(
keys
)):
for
i
,
(
object_id
,
value
)
in
enumerate
(
sorted
(
six
.
iteritems
(
modified_object_list
))):
object_state
,
object_class
=
modified_object_list
[
object_id
]
object_id
=
bt
+
'|'
+
object_id
line
=
newTempBase
(
context
,
'tmp_install_%s'
%
i
)
...
...
This diff is collapsed.
Click to expand it.
product/ERP5/tests/erp5_url_checker.py
View file @
c71a47c8
...
...
@@ -116,7 +116,7 @@ class URLOpener(FancyURLopener):
if
auth
:
h
.
putheader
(
'Authorization'
,
'Basic %s'
%
auth
)
if
realhost
:
h
.
putheader
(
'Host'
,
realhost
)
for
args
in
self
.
addheaders
:
apply
(
h
.
putheader
,
args
)
for
args
in
self
.
addheaders
:
h
.
putheader
(
*
args
)
h
.
endheaders
()
if
data
is
not
None
:
h
.
send
(
data
+
'
\
r
\
n
'
)
...
...
This diff is collapsed.
Click to expand it.
product/ERP5/tests/extractMessageCatalog.py
View file @
c71a47c8
...
...
@@ -63,7 +63,7 @@ class ExtractMessageCatalog(TestXHTML):
messages
=
dict
(
getattr
(
self
.
portal
.
Localizer
,
i
).
_messages
)
result
[
i
].
update
(
messages
)
f
=
file
(
'%s.pot'
%
i
,
'w'
)
f
=
open
(
'%s.pot'
%
i
,
'w'
)
for
msgid
in
result
[
i
].
keys
():
f
.
write
(
'msgid "%s"
\
n
msgstr ""
\
n
\
n
'
%
msgid
)
...
...
This diff is collapsed.
Click to expand it.
product/ERP5/tests/utils.py
View file @
c71a47c8
...
...
@@ -186,4 +186,4 @@ class BusinessTemplateInfoDir(BusinessTemplateInfoBase):
return
fileinfo
def
readFileInfo
(
self
,
fileinfo
):
return
file
(
fileinfo
).
read
()
return
open
(
fileinfo
).
read
()
This diff is collapsed.
Click to expand it.
product/ERP5Type/XMLExportImport/__init__.py
View file @
c71a47c8
...
...
@@ -143,26 +143,24 @@ def Base_asXML(object, root=None):
# We have to describe the workflow history
if
getattr
(
self
,
'workflow_history'
,
None
)
is
not
None
:
workflow_list
=
self
.
workflow_history
workflow_list_keys
=
workflow_list
.
keys
()
for
workflow_id
in
sorted
(
workflow_list_keys
):
# Make sure it is sorted
for
workflow_action
in
workflow_
list
[
workflow_id
]
:
for
workflow_id
,
workflow_action_list
in
sorted
(
six
.
iteritems
(
workflow_list
)
):
# Make sure it is sorted
for
workflow_action
in
workflow_
action_list
:
workflow_node
=
SubElement
(
object
,
'workflow_action'
,
attrib
=
dict
(
workflow_id
=
workflow_id
))
workflow_variable_list
=
workflow_action
.
keys
()
for
workflow_variable
in
sorted
(
workflow_variable_list
):
for
workflow_variable
,
variable_node_text
in
sorted
(
six
.
iteritems
(
workflow_action
)
):
variable_type
=
"string"
# Somewhat bad, should find a better way
if
workflow_variable
.
find
(
'time'
)
>=
0
:
variable_type
=
"date"
if
workflow_variable
.
find
(
'language_revs'
)
>=
0
:
# XXX specific to cps
variable_type
=
"dict"
if
workflow_action
[
workflow_variable
]
is
None
:
if
variable_node_text
is
None
:
variable_type
=
'None'
variable_node
=
SubElement
(
workflow_node
,
workflow_variable
,
attrib
=
dict
(
type
=
variable_type
))
if
variable_type
!=
'None'
:
variable_node_text
=
str
(
workflow_action
[
workflow_variable
])
variable_node
.
text
=
six
.
text_type
(
variable_node_text
,
'utf-8'
)
variable_node
.
text
=
six
.
text_type
(
str
(
variable_node_text
),
'utf-8'
)
if
workflow_variable
==
'time'
:
time
=
variable_node
.
text
...
...
This diff is collapsed.
Click to expand it.
product/ERP5Type/patches/DA.py
View file @
c71a47c8
...
...
@@ -35,7 +35,7 @@ def DA_fromFile(self, filename):
"""
Read the file and update self
"""
f
=
file
(
filename
)
f
=
open
(
filename
)
s
=
f
.
read
()
f
.
close
()
self
.
fromText
(
s
)
...
...
This diff is collapsed.
Click to expand it.
product/ERP5Type/tests/ProcessingNodeTestCase.py
View file @
c71a47c8
...
...
@@ -113,7 +113,7 @@ def Application_resolveConflict(self, old_state, saved_state, new_state):
new_state
[
'test_distributing_node'
]
=
test_distributing_node_set
.
pop
()
old
,
saved
,
new
=
[
set
(
state
.
pop
(
'test_processing_nodes'
,
{}).
items
())
for
state
in
old_state
,
saved_state
,
new_state
]
for
state
in
(
old_state
,
saved_state
,
new_state
)
]
# The value of these attributes don't have proper __eq__ implementation.
for
attr
in
'__before_traverse__'
,
'__before_publishing_traverse__'
:
del
old_state
[
attr
],
saved_state
[
attr
]
...
...
This diff is collapsed.
Click to expand it.
product/ERP5Type/tests/Python3StyleTest.py
View file @
c71a47c8
...
...
@@ -75,18 +75,23 @@ class Python3StyleTest(ERP5TypeTestCase):
if
error
:
self
.
fail
(
error
)
def
test_raiseFixApplied
(
self
):
self
.
_testFixer
(
'raise'
)
def
test_importFixApplied
(
self
):
self
.
_testFixer
(
'import'
)
def
test_applyFixApplied
(
self
):
self
.
_testFixer
(
'apply'
)
def
test_hasKeyFixApplied
(
self
):
self
.
_testFixer
(
'has_key'
)
def
test_importFixApplied
(
self
):
self
.
_testFixer
(
'import'
)
def
test_numliteralsFixApplied
(
self
):
self
.
_testFixer
(
'numliterals'
)
def
test_numliteralsFixApplied
(
self
):
self
.
_testFixer
(
'paren'
)
def
test_raiseFixApplied
(
self
):
self
.
_testFixer
(
'raise'
)
def
test_suite
():
suite
=
unittest
.
TestSuite
()
...
...
This diff is collapsed.
Click to expand it.
product/Formulator/tests/testFormValidator.py
View file @
c71a47c8
...
...
@@ -27,7 +27,7 @@ class TestField:
class
ValidatorTestCase
(
unittest
.
TestCase
):
def
assertValidatorRaises
(
self
,
exception
,
error_key
,
f
,
*
args
,
**
kw
):
try
:
apply
(
f
,
args
,
kw
)
f
(
*
args
,
**
kw
)
except
exception
as
e
:
if
hasattr
(
e
,
'error_key'
)
and
e
.
error_key
!=
error_key
:
self
.
fail
(
'Got wrong error. Expected %s received %s'
%
...
...
This diff is collapsed.
Click to expand it.
product/Localizer/MessageCatalog.py
View file @
c71a47c8
...
...
@@ -646,10 +646,8 @@ class MessageCatalog(LanguageManager, ObjectManager, SimpleItem):
return
x
# Generate sorted msgids to simplify diffs
dkeys
=
d
.
keys
()
for
k
in
sorted
(
dkeys
):
for
k
,
v
in
sorted
(
six
.
iteritems
(
d
)):
r
.
append
(
'msgid "%s"'
%
backslashescape
(
k
))
v
=
d
[
k
]
r
.
append
(
'msgstr "%s"'
%
backslashescape
(
v
))
r
.
append
(
''
)
...
...
This diff is collapsed.
Click to expand it.
product/MailTemplates/BaseMailTemplate.py
View file @
c71a47c8
...
...
@@ -118,8 +118,7 @@ class BaseMailTemplate:
# we want to have it stored in ERP5, for mail threading
headers
[
'Message-ID'
]
=
make_msgid
()
# turn headers into an ordered list for predictable header order
keys
=
headers
.
keys
()
return
msg
,
values
,[(
key
,
headers
[
key
])
for
key
in
sorted
(
keys
)]
return
msg
,
values
,
[(
key
,
value
)
for
key
,
value
in
sorted
(
six
.
iteritems
(
headers
))]
security
.
declarePrivate
(
'_send'
)
def
_send
(
self
,
mfrom
,
mto
,
msg
):
...
...
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