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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Eugene Shen
erp5
Commits
c1746228
Commit
c1746228
authored
Dec 12, 2013
by
Arnaud Fontaine
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Get rid of Business Template format version 0 as it's been deprecated for a while.
parent
394054e6
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
55 additions
and
238 deletions
+55
-238
product/ERP5/Document/BusinessTemplate.py
product/ERP5/Document/BusinessTemplate.py
+45
-225
product/ERP5/Tool/TemplateTool.py
product/ERP5/Tool/TemplateTool.py
+1
-6
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BusinessTemplate_getDiffObjectList.xml
...al_skins/erp5_core/BusinessTemplate_getDiffObjectList.xml
+0
-4
product/ERP5/bootstrap/erp5_core/bt/change_log
product/ERP5/bootstrap/erp5_core/bt/change_log
+3
-0
product/ERP5/bootstrap/erp5_core/bt/revision
product/ERP5/bootstrap/erp5_core/bt/revision
+1
-1
product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/BusinessTemplate/template_format_version_property.xml
...ets/BusinessTemplate/template_format_version_property.xml
+1
-1
product/ERP5/bootstrap/erp5_property_sheets/bt/change_log
product/ERP5/bootstrap/erp5_property_sheets/bt/change_log
+3
-0
product/ERP5/bootstrap/erp5_property_sheets/bt/revision
product/ERP5/bootstrap/erp5_property_sheets/bt/revision
+1
-1
No files found.
product/ERP5/Document/BusinessTemplate.py
View file @
c1746228
...
...
@@ -472,9 +472,8 @@ class BaseTemplateItem(Implicit, Persistent):
XXX: -12 used here is -len('TemplateItem')
"""
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
new_keys
=
self
.
_objects
.
keys
()
for
path
in
new_keys
:
if
1
:
for
path
in
self
.
_objects
:
if
installed_item
.
_objects
.
has_key
(
path
):
# compare objects to see it there are changes
new_obj_xml
=
self
.
generateXml
(
path
=
path
)
...
...
@@ -487,7 +486,7 @@ class BaseTemplateItem(Implicit, Persistent):
# list removed objects
old_keys
=
installed_item
.
_objects
.
keys
()
for
path
in
old_keys
:
if
path
not
in
new_key
s
:
if
path
not
in
self
.
_object
s
:
modified_object_list
.
update
({
path
:
[
'Removed'
,
self
.
__class__
.
__name__
[:
-
12
]]})
return
modified_object_list
...
...
@@ -818,7 +817,7 @@ class ObjectTemplateItem(BaseTemplateItem):
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
upgrade_list
=
[]
type_name
=
self
.
__class__
.
__name__
.
split
(
'TemplateItem'
)[
-
2
]
for
path
,
obj
in
self
.
_objects
.
iteritems
():
...
...
@@ -1000,7 +999,7 @@ class ObjectTemplateItem(BaseTemplateItem):
self.beforeInstall()
update_dict = kw.get('
object_to_update
')
force = kw.get('
force
')
if
context.getTemplateFormatVersion() ==
1:
if 1:
def recurse(hook, document, prefix=''):
my_prefix = '
%
s
/%
s
' % (prefix, document.id)
if (hook(document, my_prefix)):
...
...
@@ -1326,27 +1325,7 @@ class ObjectTemplateItem(BaseTemplateItem):
self
.
_backupObject
(
action
,
trashbin
,
container_path_list
,
document_id
)
parent
.
manage_delObjects
([
document_id
])
else
:
# for old business template format
BaseTemplateItem
.
install
(
self
,
context
,
trashbin
,
**
kw
)
portal
=
context
.
getPortalObject
()
for
relative_url
in
self
.
_archive
.
keys
():
obj
=
self
.
_archive
[
relative_url
]
container_path
=
relative_url
.
split
(
'/'
)[
0
:
-
1
]
object_id
=
relative_url
.
split
(
'/'
)[
-
1
]
container
=
portal
.
unrestrictedTraverse
(
container_path
)
container_ids
=
container
.
objectIds
()
if
object_id
in
container_ids
:
# Object already exists
self
.
_backupObject
(
'backup'
,
trashbin
,
container_path
,
object_id
)
container
.
manage_delObjects
([
object_id
])
# Set a hard link
obj
=
obj
.
_getCopy
(
container
)
container
.
_setObject
(
object_id
,
obj
)
obj
=
container
.
_getOb
(
object_id
)
obj
.
manage_afterClone
(
obj
)
obj
.
wl_clearLocks
()
if
obj
.
meta_type
in
(
'Z SQL Method'
,):
fixZSQLMethod
(
portal
,
obj
)
self
.
afterInstall
()
def
uninstall
(
self
,
context
,
**
kw
):
...
...
@@ -1721,10 +1700,7 @@ class SkinTemplateItem(ObjectTemplateItem):
skin_tool
=
p
.
portal_skins
for
relative_url
in
self
.
_objects
.
keys
():
# Do not register skin which were explicitely ask not to be installed
if
context
.
getTemplateFormatVersion
()
==
1
:
if
update_dict
.
has_key
(
relative_url
)
or
force
:
if
not
force
:
if
update_dict
[
relative_url
]
==
'nothing'
:
if
not
force
and
update_dict
.
get
(
relative_url
)
==
'nothing'
:
continue
folder
=
self
.
unrestrictedResolveValue
(
p
,
relative_url
)
for
obj
in
folder
.
objectValues
(
spec
=
(
'Z SQL Method'
,)):
...
...
@@ -1859,9 +1835,8 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem):
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
new_keys
=
self
.
_objects
.
keys
()
for
path
in
new_keys
:
if
1
:
for
path
in
self
.
_objects
:
if
installed_item
.
_objects
.
has_key
(
path
):
# compare object to see it there is changes
new_object
=
self
.
_objects
[
path
]
...
...
@@ -1873,7 +1848,7 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem):
# get removed object
old_keys
=
installed_item
.
_objects
.
keys
()
for
path
in
old_keys
:
if
path
not
in
new_key
s
:
if
path
not
in
self
.
_object
s
:
modified_object_list
.
update
({
path
:
[
'Removed'
,
self
.
__class__
.
__name__
[:
-
12
]]})
return
modified_object_list
...
...
@@ -1962,9 +1937,6 @@ class RegisteredVersionPrioritySelectionTemplateItem(BaseTemplateItem):
for
version
,
priority
in
registered_tuple_list
))
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
if
context
.
getTemplateFormatVersion
()
!=
1
:
return
{}
modified_object_list
=
{}
class_name_prefix
=
self
.
__class__
.
__name__
[:
-
12
]
for
path
,
new_object
in
self
.
_objects
.
iteritems
():
...
...
@@ -2050,7 +2022,7 @@ class WorkflowTemplateItem(ObjectTemplateItem):
return
modified_workflow_dict
def
install
(
self
,
context
,
trashbin
,
**
kw
):
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
portal
=
context
.
getPortalObject
()
update_dict
=
kw
.
get
(
'object_to_update'
)
force
=
kw
.
get
(
'force'
)
...
...
@@ -2084,8 +2056,6 @@ class WorkflowTemplateItem(ObjectTemplateItem):
obj
=
container
.
_getOb
(
object_id
)
obj
.
manage_afterClone
(
obj
)
obj
.
wl_clearLocks
()
else
:
ObjectTemplateItem
.
install
(
self
,
context
,
trashbin
,
**
kw
)
def
uninstall
(
self
,
context
,
**
kw
):
object_path
=
kw
.
get
(
'object_path'
,
None
)
...
...
@@ -2174,17 +2144,12 @@ class PortalTypeTemplateItem(ObjectTemplateItem):
# best solution, by default it is 'default_workflow', which is
# not very usefull
default_chain
=
''
if
context
.
getTemplateFormatVersion
()
==
1
:
object_list
=
self
.
_objects
else
:
object_list
=
self
.
_archive
for
path
in
object_list
.
keys
():
for
path
,
obj
in
self
.
_objects
.
iteritems
():
if
update_dict
.
has_key
(
path
)
or
force
:
if
not
force
:
action
=
update_dict
[
path
]
if
action
==
'nothing'
:
continue
obj
=
object_list
[
path
]
portal_type
=
obj
.
id
if
self
.
_workflow_chain_archive
.
has_key
(
portal_type
):
chain_dict
[
'chain_%s'
%
portal_type
]
=
\
...
...
@@ -2394,8 +2359,7 @@ class PortalTypeWorkflowChainTemplateItem(BaseTemplateItem):
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
new_key_list
=
self
.
_objects
.
keys
()
if
1
:
new_dict
=
PersistentMapping
()
# Fix key from installed bt if necessary
for
key
,
value
in
installed_item
.
_objects
.
iteritems
():
...
...
@@ -2404,7 +2368,7 @@ class PortalTypeWorkflowChainTemplateItem(BaseTemplateItem):
new_dict
[
key
]
=
value
if
new_dict
:
installed_item
.
_objects
=
new_dict
for
path
in
new_key_list
:
for
path
in
self
.
_objects
:
if
path
in
installed_item
.
_objects
:
# compare object to see it there is changes
new_object
=
self
.
_objects
[
path
]
...
...
@@ -2421,7 +2385,7 @@ class PortalTypeWorkflowChainTemplateItem(BaseTemplateItem):
modified_object_list
.
update
({
path
:
[
'New'
,
self
.
getTemplateTypeName
()]})
# get removed object
for
path
in
installed_item
.
_objects
:
if
path
not
in
new_key_list
:
if
path
not
in
self
.
_objects
:
modified_object_list
.
update
({
path
:
[
'Removed'
,
self
.
getTemplateTypeName
()]})
return
modified_object_list
...
...
@@ -2501,8 +2465,7 @@ class PortalTypeAllowedContentTypeTemplateItem(BaseTemplateItem):
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
new_key_list
=
self
.
_objects
.
keys
()
if
1
:
new_dict
=
PersistentMapping
()
# fix key if necessary in installed bt for diff
for
key
,
value
in
installed_item
.
_objects
.
iteritems
():
...
...
@@ -2511,7 +2474,7 @@ class PortalTypeAllowedContentTypeTemplateItem(BaseTemplateItem):
new_dict
[
key
]
=
value
if
new_dict
:
installed_item
.
_objects
=
new_dict
for
path
in
new_key_list
:
for
path
in
self
.
_objects
:
if
path
in
installed_item
.
_objects
:
# compare object to see it there is changes
new_object
=
self
.
_objects
[
path
]
...
...
@@ -2524,7 +2487,7 @@ class PortalTypeAllowedContentTypeTemplateItem(BaseTemplateItem):
modified_object_list
.
update
({
path
:
[
'New'
,
self
.
getTemplateTypeName
()]})
# get removed object
for
path
in
installed_item
.
_objects
:
if
path
not
in
new_key_list
:
if
path
not
in
self
.
_objects
:
modified_object_list
.
update
({
path
:
[
'Removed'
,
self
.
getTemplateTypeName
()]})
return
modified_object_list
...
...
@@ -2756,28 +2719,17 @@ class CatalogMethodTemplateItem(ObjectTemplateItem):
update_dict
=
kw
.
get
(
'object_to_update'
)
force
=
kw
.
get
(
'force'
)
values
=
[]
new_bt_format
=
context
.
getTemplateFormatVersion
()
if
force
:
# get all objects
if
new_bt_format
:
values
=
self
.
_objects
.
values
()
else
:
values
=
self
.
_archive
.
values
()
else
:
# get only selected object
if
new_bt_format
==
1
:
keys
=
self
.
_objects
.
keys
()
else
:
keys
=
self
.
_archive
.
keys
()
for
key
in
keys
:
for
key
,
value
in
self
.
_objects
.
iteritems
():
if
update_dict
.
has_key
(
key
)
or
force
:
if
not
force
:
action
=
update_dict
[
key
]
if
action
==
'nothing'
:
continue
if
new_bt_format
:
values
.
append
(
self
.
_objects
[
key
])
else
:
values
.
append
(
self
.
_archive
[
key
])
values
.
append
(
value
)
for
obj
in
values
:
method_id
=
obj
.
id
...
...
@@ -2797,14 +2749,12 @@ class CatalogMethodTemplateItem(ObjectTemplateItem):
# Restore filter
if
self
.
_is_filtered_archive
.
get
(
method_id
,
0
):
expression
=
self
.
_filter_expression_archive
[
method_id
]
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
if
expression
and
expression
.
strip
():
# only compile non-empty expressions
expr_instance
=
Expression
(
expression
)
else
:
expr_instance
=
None
else
:
expr_instance
=
self
.
_filter_expression_instance_archive
[
method_id
]
catalog
.
filter_dict
[
method_id
]
=
PersistentMapping
()
catalog
.
filter_dict
[
method_id
][
'filtered'
]
=
1
catalog
.
filter_dict
[
method_id
][
'expression'
]
=
expression
...
...
@@ -2860,16 +2810,10 @@ class CatalogMethodTemplateItem(ObjectTemplateItem):
object_path
=
kw
.
get
(
'object_path'
,
None
)
# get required values
if
object_path
is
None
:
if
context
.
getTemplateFormatVersion
()
==
1
:
values
=
self
.
_objects
.
values
()
else
:
values
=
self
.
_archive
.
values
()
else
:
try
:
if
context
.
getTemplateFormatVersion
()
==
1
:
value
=
self
.
_objects
[
object_path
]
else
:
value
=
self
.
_archive
[
object_path
]
except
KeyError
:
value
=
None
if
value
is
not
None
:
...
...
@@ -3017,7 +2961,7 @@ class ActionTemplateItem(ObjectTemplateItem):
def
install
(
self
,
context
,
trashbin
,
**
kw
):
update_dict
=
kw
.
get
(
'object_to_update'
)
force
=
kw
.
get
(
'force'
)
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
portal_type_dict
=
{}
p
=
context
.
getPortalObject
()
for
id
in
self
.
_objects
.
keys
():
...
...
@@ -3088,39 +3032,6 @@ class ActionTemplateItem(ObjectTemplateItem):
for
name
,
obj
in
action_dict
.
iteritems
():
container
.
_importOldAction
(
obj
).
aq_base
else
:
BaseTemplateItem
.
install
(
self
,
context
,
trashbin
,
**
kw
)
p
=
context
.
getPortalObject
()
for
id
in
self
.
_archive
.
keys
():
action
=
self
.
_archive
[
id
]
relative_url
,
key
,
value
=
self
.
_splitPath
(
id
)
obj
=
p
.
unrestrictedTraverse
(
relative_url
)
for
ai
in
obj
.
listActions
():
if
getattr
(
ai
,
key
)
==
value
:
raise
TemplateConflictError
,
'the portal type %s already has the action %s'
%
(
obj
.
id
,
value
)
action_text
=
action
.
action
if
isinstance
(
action_text
,
Expression
):
action_text
=
action_text
.
text
obj
.
addAction
(
id
=
action
.
id
,
name
=
action
.
title
,
action
=
action_text
,
condition
=
action
.
getCondition
()
,
permission
=
action
.
permissions
,
category
=
action
.
category
,
visible
=
action
.
visible
,
icon
=
getattr
(
action
,
'icon'
,
None
)
\
and
action
.
icon
.
text
or
''
)
new_priority
=
action
.
priority
action_list
=
obj
.
listActions
()
move_down_list
=
[]
for
index
in
range
(
len
(
action_list
)):
action
=
action_list
[
index
]
if
action
.
priority
>
new_priority
:
move_down_list
.
append
(
str
(
index
))
obj
.
moveDownActions
(
selections
=
tuple
(
move_down_list
))
def
uninstall
(
self
,
context
,
**
kw
):
p
=
context
.
getPortalObject
()
object_path
=
kw
.
get
(
"object_path"
,
None
)
...
...
@@ -3337,7 +3248,7 @@ class SitePropertyTemplateItem(BaseTemplateItem):
def
install
(
self
,
context
,
trashbin
,
**
kw
):
update_dict
=
kw
.
get
(
'object_to_update'
)
force
=
kw
.
get
(
'force'
)
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
p
=
context
.
getPortalObject
()
for
path
in
self
.
_objects
.
keys
():
if
update_dict
.
has_key
(
path
)
or
force
:
...
...
@@ -3355,19 +3266,6 @@ class SitePropertyTemplateItem(BaseTemplateItem):
p
.
_updateProperty
(
id
,
property
)
else
:
p
.
_setProperty
(
id
,
property
,
type
=
prop_type
)
else
:
BaseTemplateItem
.
install
(
self
,
context
,
trashbin
,
**
kw
)
p
=
context
.
getPortalObject
()
for
id
,
property
in
self
.
_archive
.
keys
():
property
=
self
.
_archive
[
id
]
if
p
.
hasProperty
(
id
):
if
p
.
getPropertyType
(
id
)
!=
property
[
'type'
]:
p
.
_delProperty
(
id
)
p
.
_setProperty
(
id
,
property
[
'value'
],
type
=
property
[
'type'
])
else
:
p
.
_updateProperty
(
id
,
property
[
'value'
])
else
:
p
.
_setProperty
(
id
,
property
[
'value'
],
type
=
property
[
'type'
])
def
uninstall
(
self
,
context
,
**
kw
):
p
=
context
.
getPortalObject
()
...
...
@@ -3483,14 +3381,9 @@ class ModuleTemplateItem(BaseTemplateItem):
portal
=
context
.
getPortalObject
()
update_dict
=
kw
.
get
(
'object_to_update'
)
force
=
kw
.
get
(
'force'
)
if
context
.
getTemplateFormatVersion
()
==
1
:
items
=
self
.
_objects
else
:
items
=
self
.
_archive
valid_permissions
=
dict
.
fromkeys
([
x
[
0
]
for
x
in
context
.
ac_inherited_permissions
(
all
=
1
)])
for
path
,
mapping
in
item
s
.
iteritems
():
for
path
,
mapping
in
self
.
_object
s
.
iteritems
():
if
update_dict
.
has_key
(
path
)
or
force
:
if
not
force
:
action
=
update_dict
[
path
]
...
...
@@ -3598,8 +3491,7 @@ class FilesystemDocumentTemplateItem(BaseTemplateItem):
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
new_keys
=
self
.
_objects
.
keys
()
if
1
:
# fix key if necessary in installed bt for diff
extra_prefix
=
self
.
__class__
.
__name__
+
'/'
for
key
in
installed_item
.
_objects
.
keys
():
...
...
@@ -3607,7 +3499,7 @@ class FilesystemDocumentTemplateItem(BaseTemplateItem):
new_key
=
key
[
len
(
extra_prefix
):]
installed_item
.
_objects
[
new_key
]
=
installed_item
.
_objects
[
key
]
del
installed_item
.
_objects
[
key
]
for
path
in
new_key
s
:
for
path
in
self
.
_object
s
:
if
installed_item
.
_objects
.
has_key
(
path
):
# compare object to see if there is changes
new_obj_code
=
self
.
_objects
[
path
]
...
...
@@ -3623,7 +3515,7 @@ class FilesystemDocumentTemplateItem(BaseTemplateItem):
# get removed object
old_keys
=
installed_item
.
_objects
.
keys
()
for
path
in
old_keys
:
if
path
not
in
new_key
s
:
if
path
not
in
self
.
_object
s
:
# Note: Magical way to have unique paths
modified_object_list
.
update
(
{
self
.
_getKey
(
path
)
:
[
'Removed'
,
self
.
__class__
.
__name__
[:
-
12
]]})
...
...
@@ -3647,7 +3539,7 @@ class FilesystemDocumentTemplateItem(BaseTemplateItem):
def
install
(
self
,
context
,
trashbin
,
**
kw
):
update_dict
=
kw
.
get
(
'object_to_update'
)
force
=
kw
.
get
(
'force'
)
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
need_reset
=
isinstance
(
self
,
FilesystemDocumentTemplateItem
)
for
key
in
self
.
_objects
.
keys
():
# to achieve non data migration fresh installation parameters
...
...
@@ -3676,14 +3568,6 @@ class FilesystemDocumentTemplateItem(BaseTemplateItem):
self
.
_resetDynamicModules
()
need_reset
=
False
self
.
local_file_importer_name
(
name
)
else
:
BaseTemplateItem
.
install
(
self
,
context
,
trashbin
,
**
kw
)
for
key
in
self
.
_archive
.
keys
():
text
=
self
.
_archive
[
key
]
# This raises an exception if the file exists.
self
.
local_file_writer_name
(
key
,
text
,
create
=
1
)
if
self
.
local_file_importer_name
is
not
None
:
self
.
local_file_importer_name
(
key
)
def
remove
(
self
,
context
,
**
kw
):
"""Conversion of magically uniqued paths to real ones"""
...
...
@@ -3939,19 +3823,7 @@ class FilesystemToZodbTemplateItem(FilesystemDocumentTemplateItem,
getattr
(
context
.
getPortalObject
(),
self
.
_tool_id
,
None
)
is
None
):
return
FilesystemDocumentTemplateItem
.
install
(
self
,
context
,
**
kw
)
# With format 0 of Business Template, the objects are stored in
# '_archive' whereas they are stored in '_objects' with format
# version 1
bt_format_version
=
context
.
getTemplateFormatVersion
()
if
bt_format_version
==
0
and
\
not
self
.
_is_already_migrated
(
self
.
_archive
.
keys
()):
self
.
_migrateAllFromFilesystem
(
context
,
self
.
_archive
,
self
.
_objects
,
kw
.
get
(
'object_to_update'
))
elif
bt_format_version
==
1
and
\
not
self
.
_is_already_migrated
(
self
.
_objects
.
keys
()):
if
not
self
.
_is_already_migrated
(
self
.
_objects
.
keys
()):
self
.
_migrateAllFromFilesystem
(
context
,
self
.
_objects
,
self
.
_archive
,
...
...
@@ -4173,10 +4045,7 @@ class DocumentTemplateItem(FilesystemToZodbTemplateItem):
automatically as the version must be set manually. This should not be an
issue as there are not so many Documents in bt5...
"""
object_list
=
list
(
self
.
_objects
if
context
.
getTemplateFormatVersion
()
==
1
else
self
.
_archive
)
if
self
.
_is_already_migrated
(
object_list
):
if
self
.
_is_already_migrated
(
self
.
_objects
.
keys
()):
ObjectTemplateItem
.
install
(
self
,
context
,
**
kw
)
self
.
portal_components
.
reset
(
force
=
True
,
reset_portal_type_at_transaction_boundary
=
True
)
...
...
@@ -4243,15 +4112,14 @@ class RoleTemplateItem(BaseTemplateItem):
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
new_roles
=
self
.
_objects
.
keys
()
if
1
:
# BBB it might be necessary to change the data structure.
obsolete_key
=
self
.
__class__
.
__name__
+
'/role_list'
if
obsolete_key
in
installed_item
.
_objects
:
for
role
in
installed_item
.
_objects
[
obsolete_key
]:
installed_item
.
_objects
[
role
]
=
1
del
installed_item
.
_objects
[
obsolete_key
]
for
role
in
new_role
s
:
for
role
in
self
.
_object
s
:
if
installed_item
.
_objects
.
has_key
(
role
):
continue
else
:
# only show new roles
...
...
@@ -4259,17 +4127,14 @@ class RoleTemplateItem(BaseTemplateItem):
# get removed roles
old_roles
=
installed_item
.
_objects
.
keys
()
for
role
in
old_roles
:
if
role
not
in
new_role
s
:
if
role
not
in
self
.
_object
s
:
modified_object_list
.
update
({
role
:
[
'Removed'
,
self
.
__class__
.
__name__
[:
-
12
]]})
return
modified_object_list
def
install
(
self
,
context
,
trashbin
,
**
kw
):
p
=
context
.
getPortalObject
()
# get roles
if
context
.
getTemplateFormatVersion
()
==
1
:
role_set
=
set
(
self
.
_objects
)
else
:
role_set
=
set
(
self
.
_archive
)
# set roles in PAS
if
p
.
acl_users
.
meta_type
==
'Pluggable Auth Service'
:
role_manager_list
=
p
.
acl_users
.
objectValues
(
'ZODB Role Manager'
)
...
...
@@ -4370,14 +4235,12 @@ class CatalogKeyTemplateItemBase(BaseTemplateItem):
return
catalog_key_list
=
list
(
getattr
(
catalog
,
self
.
key_list_attr
,
[]))
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
if
len
(
self
.
_objects
.
keys
())
==
0
:
# needed because of pop()
return
keys
=
[]
for
k
in
self
.
_objects
.
values
().
pop
():
# because of list of list
keys
.
append
(
k
)
else
:
keys
=
self
.
_archive
.
keys
()
update_dict
=
kw
.
get
(
'object_to_update'
)
force
=
kw
.
get
(
'force'
)
if
force
or
self
.
_getUpdateDictAction
(
update_dict
)
!=
'nothing'
:
...
...
@@ -4545,9 +4408,8 @@ class MessageTranslationTemplateItem(BaseTemplateItem):
def
preinstall
(
self
,
context
,
installed_item
,
**
kw
):
modified_object_list
=
{}
if
context
.
getTemplateFormatVersion
()
==
1
:
new_keys
=
self
.
_objects
.
keys
()
for
path
in
new_keys
:
if
1
:
for
path
in
self
.
_objects
:
if
installed_item
.
_objects
.
has_key
(
path
):
# compare object to see if there is changes
new_obj_code
=
self
.
_objects
[
path
]
...
...
@@ -4559,7 +4421,7 @@ class MessageTranslationTemplateItem(BaseTemplateItem):
# get removed object
old_keys
=
installed_item
.
_objects
.
keys
()
for
path
in
old_keys
:
if
path
not
in
new_key
s
:
if
path
not
in
self
.
_object
s
:
modified_object_list
.
update
({
path
:
[
'Removed'
,
self
.
__class__
.
__name__
[:
-
12
]]})
return
modified_object_list
...
...
@@ -4592,7 +4454,7 @@ class MessageTranslationTemplateItem(BaseTemplateItem):
localizer
=
context
.
getPortalObject
().
Localizer
update_dict
=
kw
.
get
(
'object_to_update'
,
{})
force
=
kw
.
get
(
'force'
)
if
context
.
getTemplateFormatVersion
()
==
1
:
if
1
:
for
key
in
sorted
(
self
.
_objects
.
keys
()):
if
update_dict
.
has_key
(
key
)
or
force
:
if
not
force
:
...
...
@@ -4623,13 +4485,6 @@ class MessageTranslationTemplateItem(BaseTemplateItem):
if
lang
not
in
localizer
.
get_languages
():
localizer
.
manage_addLanguage
(
lang
)
self
.
_importCatalogLanguage
(
localizer
,
catalog
,
lang
,
po
)
else
:
BaseTemplateItem
.
install
(
self
,
context
,
trashbin
,
**
kw
)
for
lang
,
catalogs
in
self
.
_archive
.
iteritems
():
if
lang
not
in
localizer
.
get_languages
():
localizer
.
manage_addLanguage
(
lang
)
for
catalog
,
po
in
catalogs
.
items
():
self
.
_importCatalogLanguage
(
catalog
,
lang
,
po
)
def
uninstall
(
self
,
context
,
remove_translations
=
False
,
**
kw
):
if
not
remove_translations
:
...
...
@@ -4976,18 +4831,6 @@ Business Template is a set of definitions, such as skins, portal types and categ
XMLObject
.
__init__
(
self
,
*
args
,
**
kw
)
self
.
_clean
()
def
getTemplateFormatVersion
(
self
,
**
kw
):
"""This is a workaround, because template_format_version was not set even for the new format.
"""
if
self
.
hasProperty
(
'template_format_version'
):
self
.
_baseGetTemplateFormatVersion
()
# the attribute _objects in BaseTemplateItem was added in the new format.
if
hasattr
(
self
.
_path_item
,
'_objects'
):
return
1
return
0
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'manage_afterAdd'
)
def
manage_afterAdd
(
self
,
item
,
container
):
"""
...
...
@@ -5194,7 +5037,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
default_catalog
=
self
.
getPortalObject
().
portal_catalog
.
getSQLCatalog
()
my_catalog
=
_getCatalogValue
(
self
)
if
default_catalog
is
not
None
and
my_catalog
is
not
None
\
and
catalog_method
is
not
None
and
self
.
getTemplateFormatVersion
()
==
1
:
and
catalog_method
is
not
None
:
if
default_catalog
.
getId
()
==
my_catalog
.
getId
():
# It is needed to update the catalog only if the default SQLCatalog is modified.
for
method_id
in
catalog_method
.
_objects
.
keys
():
...
...
@@ -5223,10 +5066,6 @@ Business Template is a set of definitions, such as skins, portal types and categ
installed_bt
=
bt2
else
:
installed_bt
=
self
.
portal_templates
.
getInstalledBusinessTemplate
(
title
=
bt_title
)
if
installed_bt
is
None
:
installed_bt_format
=
0
# that will not check for modification
else
:
installed_bt_format
=
installed_bt
.
getTemplateFormatVersion
()
# if reinstall business template, must compare to object in ZODB
# and not to those in the installed Business Template because it is itself.
...
...
@@ -5245,19 +5084,6 @@ Business Template is a set of definitions, such as skins, portal types and categ
else
:
installed_bt
=
self
.
portal_templates
.
_getOb
(
INSTALLED_BT_FOR_DIFF
)
new_bt_format
=
self
.
getTemplateFormatVersion
()
if
installed_bt_format
==
0
and
new_bt_format
==
0
:
# still use old format, so install everything, no choice
return
modified_object_list
elif
installed_bt_format
==
0
and
new_bt_format
==
1
:
# return list of all object in bt
for
item_name
in
self
.
_item_name_list
:
item
=
getattr
(
self
,
item_name
,
None
)
if
item
is
not
None
:
for
path
in
item
.
_objects
.
keys
():
modified_object_list
.
update
({
path
:
[
'New'
,
item
.
__class__
.
__name__
[:
-
12
]]})
return
modified_object_list
for
item_name
in
self
.
_item_name_list
:
new_item
=
getattr
(
self
,
item_name
,
None
)
installed_item
=
getattr
(
installed_bt
,
item_name
,
None
)
...
...
@@ -5293,20 +5119,14 @@ Business Template is a set of definitions, such as skins, portal types and categ
self
.
getTitle
())
# When reinstalling, installation state should not change to replaced
if
installed_bt
not
in
[
None
,
self
]:
if
installed_bt
.
getTemplateFormatVersion
()
==
0
:
force
=
1
if
site
.
portal_workflow
.
isTransitionPossible
(
installed_bt
,
'replace'
):
installed_bt
.
replace
(
self
)
trash_tool
=
getToolByName
(
site
,
'portal_trash'
,
None
)
if
trash_tool
is
None
and
self
.
getTemplateFormatVersion
()
==
1
:
if
trash_tool
is
None
:
raise
AttributeError
,
'Trash Tool is not installed'
# Check the format of business template, if old, force install
if
self
.
getTemplateFormatVersion
()
==
0
:
force
=
1
if
not
force
:
self
.
checkDependencies
()
...
...
product/ERP5/Tool/TemplateTool.py
View file @
c1746228
...
...
@@ -307,12 +307,7 @@ class TemplateTool (BaseTool):
file
.
seek
(
0
)
magic
=
file
.
read
(
5
)
if
magic
==
'<?xml'
:
# old version
self
.
_importObjectFromFile
(
path
,
id
=
id
)
bt
=
self
[
id
]
bt
.
id
=
id
# Make sure id is consistent
bt
.
setProperty
(
'template_format_version'
,
0
,
type
=
'int'
)
else
:
# new version
if
1
:
# XXX: should really check for a magic and offer a falback if it
# doens't correspond to anything handled.
tar
=
tarfile
.
open
(
path
,
'r:gz'
)
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/BusinessTemplate_getDiffObjectList.xml
View file @
c1746228
...
...
@@ -68,16 +68,12 @@ if len(uids) > 2:\n
bt1 = context.portal_catalog.getObject(uids[0])\n
if bt1.getBuildingState() != \'built\':\n
raise TemplateConditionError(\'Business Template must be built to make diff\')\n
if (getattr(bt1, \'template_format_version\', 0)) != 1:\n
raise TemplateConditionError(\'Business Template must be in new format\')\n
\n
# check if there is a second bt or if we compare to installed one\n
if len(uids) == 2:\n
bt2 = context.portal_catalog.getObject(uids[1])\n
if bt2.getBuildingState() != \'built\':\n
raise TemplateConditionError(\'Business Template must be built to make diff\')\n
if (getattr(bt2, \'template_format_version\', 0)) != 1:\n
raise TemplateConditionError(\'Business Template must be in new format\')\n
else:\n
# compare to objects in ZODB\n
bt2 = bt1\n
...
...
product/ERP5/bootstrap/erp5_core/bt/change_log
View file @
c1746228
2013-12-12 arnaud.fontaine
* Get rid of Business Template format version 0 as it's been deprecated for a while.
2013-11-07 arnaud.fontaine
* SelectionTool: Changing storage or memcached settings were not taken into effect until restart.
...
...
product/ERP5/bootstrap/erp5_core/bt/revision
View file @
c1746228
41144
\ No newline at end of file
41145
\ No newline at end of file
product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/BusinessTemplate/template_format_version_property.xml
View file @
c1746228
...
...
@@ -49,7 +49,7 @@
</item>
<item>
<key>
<string>
property_default
</string>
</key>
<value>
<string>
python:
0
</string>
</value>
<value>
<string>
python:
1
</string>
</value>
</item>
</dictionary>
</pickle>
...
...
product/ERP5/bootstrap/erp5_property_sheets/bt/change_log
View file @
c1746228
2013-12-12 arnaud.fontaine
* Get rid of Business Template format version 0 as it's been deprecated for a while.
2013-10-17 tatuya
* Arrow: Add {source,destination}_{decision,carrier,section}_administration categories
...
...
product/ERP5/bootstrap/erp5_property_sheets/bt/revision
View file @
c1746228
69
\ No newline at end of file
70
\ No newline at end of file
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