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
Levin Zimmermann
erp5
Commits
dbdb5ef5
Commit
dbdb5ef5
authored
Aug 19, 2022
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'nexedi/master' into zope4py2
parents
87ccbb29
2bd1d4ed
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
50 additions
and
83 deletions
+50
-83
bt5/erp5_accounting/DocumentTemplateItem/portal_components/document.erp5.BalanceTransaction.py
...tem/portal_components/document.erp5.BalanceTransaction.py
+1
-10
product/ERP5/Document/BusinessTemplate.py
product/ERP5/Document/BusinessTemplate.py
+5
-0
product/ERP5/bootstrap/erp5_core/DocumentTemplateItem/portal_components/document.erp5.Inventory.py
...TemplateItem/portal_components/document.erp5.Inventory.py
+2
-2
product/ERP5Form/ListBox.py
product/ERP5Form/ListBox.py
+36
-25
product/ERP5Form/ProxyField.py
product/ERP5Form/ProxyField.py
+2
-6
product/ERP5Type/Base.py
product/ERP5Type/Base.py
+4
-1
product/ERP5Type/ZopePatch.py
product/ERP5Type/ZopePatch.py
+0
-1
product/ERP5Type/patches/CMFCatalogAware.py
product/ERP5Type/patches/CMFCatalogAware.py
+0
-38
No files found.
bt5/erp5_accounting/DocumentTemplateItem/portal_components/document.erp5.BalanceTransaction.py
View file @
dbdb5ef5
...
@@ -440,16 +440,7 @@ class BalanceTransaction(AccountingTransaction, Inventory):
...
@@ -440,16 +440,7 @@ class BalanceTransaction(AccountingTransaction, Inventory):
return
factory
return
factory
def
_immediateReindexObject
(
self
,
**
kw
):
security
.
declarePrivate
(
'alternateReindexObject'
)
def
alternateReindexObject
(
self
,
**
kw
):
"""This method is called when an inventory object is included in a
group of catalogged objects.
"""
return
self
.
immediateReindexObject
(
**
kw
)
def
immediateReindexObject
(
self
,
**
kw
):
"""Reindexes the object.
"""Reindexes the object.
This is different indexing that the default Inventory indexing, because
This is different indexing that the default Inventory indexing, because
we want to take into account that lines in this balance transaction to
we want to take into account that lines in this balance transaction to
...
...
product/ERP5/Document/BusinessTemplate.py
View file @
dbdb5ef5
...
@@ -2037,6 +2037,11 @@ class SkinTemplateItem(ObjectTemplateItem):
...
@@ -2037,6 +2037,11 @@ class SkinTemplateItem(ObjectTemplateItem):
# Do not register skin which were explicitely ask not to be installed
# Do not register skin which were explicitely ask not to be installed
if
not
force
and
update_dict
.
get
(
relative_url
)
==
'nothing'
:
if
not
force
and
update_dict
.
get
(
relative_url
)
==
'nothing'
:
continue
continue
# self._objects contains the skin folder and all skins, for this
# we want to process only the skin folder
relative_url
=
relative_url
.
split
(
'/'
)
if
len
(
relative_url
)
!=
2
:
continue
folder
=
self
.
unrestrictedResolveValue
(
p
,
relative_url
)
folder
=
self
.
unrestrictedResolveValue
(
p
,
relative_url
)
for
obj
in
folder
.
objectValues
(
spec
=
(
'Z SQL Method'
,
'ERP5 SQL Method'
)):
for
obj
in
folder
.
objectValues
(
spec
=
(
'Z SQL Method'
,
'ERP5 SQL Method'
)):
fixZSQLMethod
(
p
,
obj
)
fixZSQLMethod
(
p
,
obj
)
...
...
product/ERP5/bootstrap/erp5_core/DocumentTemplateItem/portal_components/document.erp5.Inventory.py
View file @
dbdb5ef5
...
@@ -84,9 +84,9 @@ class Inventory(Delivery):
...
@@ -84,9 +84,9 @@ class Inventory(Delivery):
category_list
.
extend
(
value_list
)
category_list
.
extend
(
value_list
)
def
immediateReindexObject
(
self
,
temp_constructor
=
None
,
**
kw
):
def
_
immediateReindexObject
(
self
,
temp_constructor
=
None
,
**
kw
):
"""
"""
Rewrite
reindexObject
so that we can insert lines in stock table
Rewrite
indexation method
so that we can insert lines in stock table
which will be equal to the difference between stock values for
which will be equal to the difference between stock values for
resource in the inventory and the one before the date of this inventory
resource in the inventory and the one before the date of this inventory
...
...
product/ERP5Form/ListBox.py
View file @
dbdb5ef5
...
@@ -2132,6 +2132,41 @@ class ListBoxRendererLine:
...
@@ -2132,6 +2132,41 @@ class ListBoxRendererLine:
"""
"""
return
self
.
getBrain
().
getUrl
()
return
self
.
getBrain
().
getUrl
()
@
lazyMethod
def
getDefaultAbsoluteURL
(
self
):
"""Compute the default link for this line.
"""
renderer
=
self
.
renderer
request
=
renderer
.
request
# brain.absolute_url() is slow because it invokes
# _aq_dynamic() every time to get brain.REQUEST,
# so we call request.physicalPathToURL() directly
# instead of brain.absolute_url().
try
:
url
=
request
.
physicalPathToURL
(
self
.
getBrain
().
getPath
())
except
AttributeError
:
return
None
params
=
[]
selection_name
=
renderer
.
getSelectionName
()
if
int
(
request
.
get
(
'ignore_layout'
,
0
if
request
.
get
(
'is_web_mode'
)
else
1
)):
params
.
append
(
'ignore_layout:int=1'
)
if
int
(
request
.
get
(
'editable_mode'
,
0
)):
params
.
append
(
'editable_mode:int=1'
)
if
selection_name
:
params
.
extend
((
'selection_name=%s'
%
selection_name
,
'selection_index=%s'
%
self
.
index
,
'reset:int=1'
))
if
renderer
.
getSelectionTool
().
isAnonymous
():
params
.
append
(
'selection_key=%s'
%
renderer
.
getSelection
().
getAnonymousSelectionKey
())
if
params
:
url
=
'%s?%s'
%
(
url
,
'&'
.
join
(
params
))
return
url
def
isSummary
(
self
):
def
isSummary
(
self
):
"""Return whether this line is a summary or not.
"""Return whether this line is a summary or not.
"""
"""
...
@@ -2339,9 +2374,6 @@ class ListBoxHTMLRendererLine(ListBoxRendererLine):
...
@@ -2339,9 +2374,6 @@ class ListBoxHTMLRendererLine(ListBoxRendererLine):
url_column_dict
=
dict
(
renderer
.
getUrlColumnList
())
url_column_dict
=
dict
(
renderer
.
getUrlColumnList
())
selection
=
renderer
.
getSelection
()
selection
=
renderer
.
getSelection
()
selection_name
=
renderer
.
getSelectionName
()
selection_name
=
renderer
.
getSelectionName
()
ignore_layout
=
int
(
request
.
get
(
'ignore_layout'
,
0
if
request
.
get
(
'is_web_mode'
)
else
1
))
editable_mode
=
int
(
request
.
get
(
'editable_mode'
,
0
))
ui_domain
=
'erp5_ui'
ui_domain
=
'erp5_ui'
# We need a way to pass the current line object (ie. brain) to the
# We need a way to pass the current line object (ie. brain) to the
# field which is being displayed. Since the render_view API did not
# field which is being displayed. Since the render_view API did not
...
@@ -2404,28 +2436,7 @@ class ListBoxHTMLRendererLine(ListBoxRendererLine):
...
@@ -2404,28 +2436,7 @@ class ListBoxHTMLRendererLine(ListBoxRendererLine):
LOG
(
'ListBox'
,
WARNING
,
'could not evaluate the url method getListItemUrl with %r'
%
(
brain
,),
LOG
(
'ListBox'
,
WARNING
,
'could not evaluate the url method getListItemUrl with %r'
%
(
brain
,),
error
=
sys
.
exc_info
())
error
=
sys
.
exc_info
())
else
:
else
:
try
:
url
=
self
.
getDefaultAbsoluteURL
()
# brain.absolute_url() is slow because it invokes
# _aq_dynamic() every time to get brain.REQUEST,
# so we call request.physicalPathToURL() directly
# instead of brain.absolute_url().
url
=
request
.
physicalPathToURL
(
brain
.
getPath
())
params
=
[]
if
ignore_layout
:
params
.
append
(
'ignore_layout:int=1'
)
if
editable_mode
:
params
.
append
(
'editable_mode:int=1'
)
if
selection_name
:
params
.
extend
((
'selection_name=%s'
%
selection_name
,
'selection_index=%s'
%
self
.
index
,
'reset:int=1'
))
selection_tool
=
self
.
getObject
().
getPortalObject
().
portal_selections
if
selection_tool
.
isAnonymous
():
params
.
append
(
'selection_key=%s'
%
selection
.
getAnonymousSelectionKey
())
if
params
:
url
=
'%s?%s'
%
(
url
,
'&'
.
join
(
params
))
except
AttributeError
:
pass
if
isinstance
(
url
,
six
.
binary_type
):
if
isinstance
(
url
,
six
.
binary_type
):
url
=
six
.
text_type
(
url
,
encoding
)
url
=
six
.
text_type
(
url
,
encoding
)
...
...
product/ERP5Form/ProxyField.py
View file @
dbdb5ef5
...
@@ -36,7 +36,6 @@ from Acquisition import aq_base
...
@@ -36,7 +36,6 @@ from Acquisition import aq_base
from
MethodObject
import
Method
from
MethodObject
import
Method
from
zLOG
import
LOG
,
WARNING
from
zLOG
import
LOG
,
WARNING
from
Products.CMFCore.Skinnable
import
SKINDATA
from
Products.Formulator
import
Widget
,
Validator
from
Products.Formulator
import
Widget
,
Validator
from
Products.Formulator.Field
import
ZMIField
from
Products.Formulator.Field
import
ZMIField
...
@@ -439,11 +438,8 @@ class ProxyField(ZMIField):
...
@@ -439,11 +438,8 @@ class ProxyField(ZMIField):
# priority.
# priority.
# This should return no field if the skin folder name is defined in
# This should return no field if the skin folder name is defined in
# form_id.
# form_id.
skin_info
=
SKINDATA
.
get
(
get_ident
())
skin_selection_name
=
object
.
getCurrentSkinName
()
if
skin_selection_name
is
not
None
:
if
skin_info
is
not
None
:
_
,
skin_selection_name
,
ignore
,
resolve
=
skin_info
selection_dict
=
portal_skins
.
_getSelections
()
selection_dict
=
portal_skins
.
_getSelections
()
candidate_folder_id_list
=
selection_dict
[
skin_selection_name
].
split
(
','
)
candidate_folder_id_list
=
selection_dict
[
skin_selection_name
].
split
(
','
)
...
...
product/ERP5Type/Base.py
View file @
dbdb5ef5
...
@@ -2936,9 +2936,12 @@ class Base(
...
@@ -2936,9 +2936,12 @@ class Base(
def
immediateReindexObject
(
self
,
*
args
,
**
kw
):
def
immediateReindexObject
(
self
,
*
args
,
**
kw
):
if
self
.
isAncestryIndexable
():
if
self
.
isAncestryIndexable
():
with
super_user
():
with
super_user
():
PortalContent
.
reindexObject
(
self
,
*
args
,
**
kw
)
self
.
_immediateReindexObject
(
*
args
,
**
kw
)
_reindexOnCreation
=
immediateReindexObject
_reindexOnCreation
=
immediateReindexObject
def
_immediateReindexObject
(
self
,
*
args
,
**
kw
):
self
.
getPortalObject
().
portal_catalog
.
reindexCatalogObject
(
self
,
*
args
,
**
kw
)
security
.
declarePublic
(
'reindexObject'
)
security
.
declarePublic
(
'reindexObject'
)
def
reindexObject
(
self
,
*
args
,
**
kw
):
def
reindexObject
(
self
,
*
args
,
**
kw
):
"""
"""
...
...
product/ERP5Type/ZopePatch.py
View file @
dbdb5ef5
...
@@ -43,7 +43,6 @@ from Products.ERP5Type.patches import DynamicType
...
@@ -43,7 +43,6 @@ from Products.ERP5Type.patches import DynamicType
from
Products.ERP5Type.patches
import
Expression
from
Products.ERP5Type.patches
import
Expression
from
Products.ERP5Type.patches
import
sqltest
from
Products.ERP5Type.patches
import
sqltest
from
Products.ERP5Type.patches
import
sqlvar
from
Products.ERP5Type.patches
import
sqlvar
from
Products.ERP5Type.patches
import
CMFCatalogAware
from
Products.ERP5Type.patches
import
ProductContext
from
Products.ERP5Type.patches
import
ProductContext
from
Products.ERP5Type.patches
import
PropertiedUser
from
Products.ERP5Type.patches
import
PropertiedUser
if
WITH_LEGACY_WORKFLOW
:
if
WITH_LEGACY_WORKFLOW
:
...
...
product/ERP5Type/patches/CMFCatalogAware.py
deleted
100644 → 0
View file @
87ccbb29
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
# Copyright (c) 2002,2005 Nexedi SARL and Contributors. All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
#
##############################################################################
# CMFCatalogAware patch for accepting arbitrary parameters.
from
Products.CMFCore.CMFCatalogAware
import
CMFCatalogAware
from
Acquisition
import
aq_base
from
Products.CMFCore.utils
import
getToolByName
def
reindexCatalogObject
(
self
,
idxs
=
[],
*
args
,
**
kw
):
"""
Reindex the object in the portal catalog.
If idxs is present, only those indexes are reindexed.
The metadata is always updated.
Also update the modification date of the object,
unless specific indexes were requested.
"""
if
idxs
==
[]:
# Update the modification date.
if
getattr
(
aq_base
(
self
),
'notifyModified'
,
None
)
is
not
None
:
self
.
notifyModified
()
catalog
=
getToolByName
(
self
,
'portal_catalog'
,
None
)
if
catalog
is
not
None
:
catalog
.
reindexCatalogObject
(
self
,
idxs
=
idxs
,
*
args
,
**
kw
)
CMFCatalogAware
.
reindexObject
=
reindexCatalogObject
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