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
alecs_myu
erp5
Commits
3f396373
Commit
3f396373
authored
May 03, 2017
by
Ayush Tiwari
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bt5_config: Add BusinessPropertyItem for saving values of properties
parent
2216aa39
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
123 additions
and
219 deletions
+123
-219
product/ERP5/Document/BusinessManager.py
product/ERP5/Document/BusinessManager.py
+99
-207
product/ERP5/Tool/TemplateTool.py
product/ERP5/Tool/TemplateTool.py
+24
-12
No files found.
product/ERP5/Document/BusinessManager.py
View file @
3f396373
This diff is collapsed.
Click to expand it.
product/ERP5/Tool/TemplateTool.py
View file @
3f396373
...
...
@@ -1772,9 +1772,15 @@ class TemplateTool (BaseTool):
# thus all the BusinessItem sub-objects should have single value
# Update hashes of item in old state before installation
for
item
in
old_installation_state
.
objectValues
():
value_list
=
item
.
objectValues
()
if
item
.
isProperty
:
value_list
=
item
.
getProperty
(
'value'
)
else
:
value_list
=
item
.
objectValues
()
if
value_list
:
item
.
setProperty
(
'item_sha'
,
self
.
calculateComparableHash
(
value_list
[
0
]))
item
.
setProperty
(
'item_sha'
,
self
.
calculateComparableHash
(
value_list
[
0
],
item
.
isProperty
,
))
# Path Item List for installation_process should be the difference between
# old and new installation state
...
...
@@ -1782,7 +1788,15 @@ class TemplateTool (BaseTool):
# If the path has been removed, then add it with sign = -1
old_item
=
old_installation_state
.
getBusinessItemByPath
(
item
.
getProperty
(
'item_path'
))
# Calculate sha for the items in new_insatallation_state
item
.
setProperty
(
'item_sha'
,
self
.
calculateComparableHash
(
item
.
objectValues
()[
0
]))
import
pdb
;
pdb
.
set_trace
()
if
item
.
isProperty
:
value
=
item
.
getProperty
(
'value'
)
else
:
value
=
item
.
objectValues
()[
0
]
item
.
setProperty
(
'item_sha'
,
self
.
calculateComparableHash
(
value
,
item
.
isProperty
,
))
if
old_item
:
# If the old_item exists, we match the hashes and if it differs, then
# add the new item
...
...
@@ -1807,7 +1821,7 @@ class TemplateTool (BaseTool):
installMultipleBusinessManager
=
updateInstallationState
def
calculateComparableHash
(
self
,
object
):
def
calculateComparableHash
(
self
,
object
,
isProperty
=
False
):
"""
Remove some attributes before comparing hashses
and return hash of the comparable object dict, in case the object is
...
...
@@ -1817,7 +1831,7 @@ class TemplateTool (BaseTool):
attributes which changes at small updation, like workflow_history,
uid, volatile attributes(which starts with _v)
"""
if
object
.
__class__
.
__name__
==
'PersistentMapping'
:
if
isProperty
:
obj_dict
=
object
else
:
obj_dict
=
object
.
__dict__
.
copy
()
...
...
@@ -1827,6 +1841,7 @@ class TemplateTool (BaseTool):
removable_attributes
.
append
(
'uid'
)
removable_attributes
.
append
(
'_owner'
)
removable_attributes
.
append
(
'isIndexable'
)
for
attr
in
removable_attributes
:
try
:
del
obj_dict
[
attr
]
...
...
@@ -1848,6 +1863,7 @@ class TemplateTool (BaseTool):
try
:
if
'#'
in
str
(
path
):
isProperty
=
True
relative_url
,
property_id
=
path
.
split
(
'#'
)
obj
=
portal
.
restrictedTraverse
(
relative_url
)
property_value
=
obj
.
getProperty
(
property_id
)
...
...
@@ -1860,16 +1876,12 @@ class TemplateTool (BaseTool):
if
not
property_value
:
raise
KeyError
property_type
=
obj
.
getPropertyType
(
property_id
)
# Create a persistent object to compare the hash
value
=
PersistentMapping
()
value
[
'name'
]
=
property_id
value
[
'type'
]
=
property_type
value
[
'value'
]
=
property_value
obj
=
value
obj
=
property_value
else
:
isProperty
=
False
obj
=
portal
.
restrictedTraverse
(
path
)
obj_sha
=
self
.
calculateComparableHash
(
obj
)
obj_sha
=
self
.
calculateComparableHash
(
obj
,
isProperty
)
# Get item at old state
old_item
=
old_state
.
getBusinessItemByPath
(
path
)
...
...
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