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
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
Jérome Perrin
erp5
Commits
5960d9fe
Commit
5960d9fe
authored
Apr 02, 2020
by
Roque
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_officejs: refactor web section create configuration manifest action
parent
6900195c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
145 additions
and
227 deletions
+145
-227
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSection_createAppConfigurationManifest.py
..._officejs_ui/WebSection_createAppConfigurationManifest.py
+59
-0
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSection_createAppConfigurationManifest.xml
...officejs_ui/WebSection_createAppConfigurationManifest.xml
+62
-0
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSection_getBase64ConfigurationUrlList.py
...b_officejs_ui/WebSection_getBase64ConfigurationUrlList.py
+18
-70
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSection_getBase64ConfigurationUrlList.xml
..._officejs_ui/WebSection_getBase64ConfigurationUrlList.xml
+1
-1
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSite_createAppConfigurationManifest.xml
...eb_officejs_ui/WebSite_createAppConfigurationManifest.xml
+5
-2
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSite_createAppConfigurationManifest/my_appcache_manifest.xml
...e_createAppConfigurationManifest/my_appcache_manifest.xml
+0
-154
No files found.
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSection_createAppConfigurationManifest.py
0 → 100644
View file @
5960d9fe
from
datetime
import
datetime
def
getElementFromContent
(
key
,
content
):
before_template
=
'"%s" type="text/x-renderjs-configuration">'
before
=
before_template
%
key
after
=
'</script>'
start
=
content
.
find
(
before
)
+
len
(
before
)
stop
=
content
.
find
(
after
,
start
)
result
=
content
[
start
:
stop
]
if
(
not
"<"
in
result
)
and
(
not
">"
in
result
)
and
(
result
!=
""
):
return
result
return
None
portal
=
context
.
getPortalObject
()
portal_catalog
=
portal
.
portal_catalog
date
=
datetime
.
now
().
strftime
(
"%c"
)
try
:
router_file_reference
=
context
.
getLayoutProperty
(
"configuration_router_gadget_url"
,
default
=
""
)
if
router_file_reference
is
""
:
raise
ValueError
(
"Router Gadget Layout Property is missing"
)
router_file
=
portal_catalog
.
getResultValue
(
portal_type
=
'Web Page'
,
reference
=
router_file_reference
)
if
router_file
is
None
:
raise
ValueError
(
"Router web page '%s' not found"
%
router_file_reference
)
router_content
=
router_file
.
getTextContent
()
configuration_file_reference
=
getElementFromContent
(
"configuration_manifest"
,
router_content
)
if
configuration_file_reference
is
None
or
configuration_file_reference
is
""
:
raise
ValueError
(
"configuration_manifest router setting is missing"
)
configuration_manifest
=
portal_catalog
.
getResultValue
(
portal_type
=
'Web Manifest'
,
reference
=
configuration_file_reference
)
if
configuration_manifest
is
None
:
module
=
portal
.
getDefaultModule
(
'Web Page'
)
configuration_manifest
=
module
.
newContent
(
portal_type
=
'Web Manifest'
,
reference
=
configuration_file_reference
)
configuration_manifest
.
publish
()
url_list
=
context
.
WebSection_getBase64ConfigurationUrlList
(
batch_mode
=
"0"
)
configuration_element_lines_string
=
""
for
path
in
url_list
:
configuration_element_lines_string
+=
path
+
"
\
n
"
content
=
"CONFIGURATION MANIFEST
\
n
# generated on %s
\
n
CACHE:
\
n
\
n
"
%
date
content
+=
configuration_element_lines_string
content
+=
"
\
n
NETWORK:
\
n
*"
configuration_manifest
.
setTextContent
(
content
)
except
(
ValueError
,
KeyError
,
SyntaxError
,
AttributeError
)
as
e
:
if
batch_mode
:
return
'ERROR: '
+
str
(
e
)
return
context
.
Base_redirect
(
'view'
,
keep_items
=
dict
(
portal_status_message
=
'ERROR creating configuration manifest: '
+
str
(
e
)))
if
batch_mode
:
return
'done'
return
context
.
Base_redirect
(
'view'
,
keep_items
=
dict
(
portal_status_message
=
"Configuration manifest created: "
+
configuration_file_reference
))
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSection_createAppConfigurationManifest.xml
0 → 100644
View file @
5960d9fe
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
batch_mode=0
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
WebSection_createAppConfigurationManifest
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/
Base_createAppConfigurationManife
st.py
→
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/
WebSection_getBase64ConfigurationUrlLi
st.py
View file @
5960d9fe
import
json
import
base64
from
datetime
import
datetime
from
Products.ERP5Type.Log
import
log
def
getElementFromContent
(
key
,
content
):
before_template
=
'"%s" type="text/x-renderjs-configuration">'
...
...
@@ -19,48 +19,27 @@ portal_catalog = portal.portal_catalog
try
:
hateoas_appcache
=
context
.
getLayoutProperty
(
"hateoas_appcache"
,
default
=
"hateoas_appcache"
)
router_file_reference
=
context
.
getLayoutProperty
(
"configuration_router_gadget_url"
,
default
=
""
)
if
router_file_reference
is
""
:
raise
ValueError
(
"Router Gadget Layout Property is missing"
)
appcache_file_reference
=
context
.
getLayoutProperty
(
"configuration_manifest_url"
,
default
=
""
)
if
appcache_file_reference
is
""
:
raise
ValueError
(
"Manifest URL Layout Property is missing"
)
router_file
=
portal_catalog
.
getResultValue
(
portal_type
=
'Web Page'
,
reference
=
router_file_reference
)
if
router_file
is
None
:
result_list
=
portal_catalog
.
getDocumentValueList
(
portal_type
=
'Web Page'
,
reference
=
router_file_reference
,
validation_state
=
'published%'
)
if
len
(
result_list
)
==
0
:
raise
ValueError
(
"Router web page '%s' not found"
%
router_file_reference
)
appcache_manifest
=
portal_catalog
.
getResultValue
(
portal_type
=
'Web Manifest'
,
reference
=
appcache_file_reference
)
if
appcache_manifest
is
None
:
raise
ValueError
(
"Appcache manifest '%s' not found"
%
appcache_file_reference
)
router_content
=
router_file
.
getTextContent
()
configuration_file_reference
=
getElementFromContent
(
"configuration_manifest"
,
router_content
)
if
configuration_file_reference
is
None
or
configuration_file_reference
is
""
:
raise
ValueError
(
"configuration_manifest router setting is missing"
)
configuration_manifest
=
portal_catalog
.
getResultValue
(
portal_type
=
'Web Manifest'
,
reference
=
configuration_file_reference
)
if
configuration_manifest
is
None
:
module
=
portal
.
getDefaultModule
(
'Web Page'
)
configuration_manifest
=
module
.
newContent
(
portal_type
=
'Web Manifest'
,
reference
=
configuration_file_reference
)
configuration_manifest
.
publish
()
router_content
=
result_list
[
0
].
getTextContent
()
portal_skin
=
getElementFromContent
(
"portal_skin_folder"
,
router_content
)
if
portal_skin
is
None
:
raise
KeyError
(
"portal_skin_folder setting not found in router"
)
app_action_string
=
getElementFromContent
(
"app_actions"
,
router_content
)
if
app_action_string
is
None
:
raise
KeyError
(
"app_actions setting not found in router"
)
date
=
datetime
.
now
().
strftime
(
"%c"
)
app_action_list
=
[]
app_action_list
=
[]
app_action_string
=
app_action_string
.
replace
(
'('
,
'['
).
replace
(
')'
,
']'
).
replace
(
',]'
,
']'
).
replace
(
"'"
,
'"'
)
app_action_raw_list
=
json
.
loads
(
app_action_string
)
for
app_action
in
app_action_raw_list
:
...
...
@@ -88,7 +67,6 @@ try:
new_dialog_form_list
.
append
(
str
(
portal_type_dict
[
"new_content_dialog_form"
]))
configuration_path_list
=
[]
for
key
in
portal_actions_dict
:
path
=
"portal_types/%s"
%
key
configuration_path_list
.
append
(
base64
.
b64encode
(
path
))
...
...
@@ -108,44 +86,14 @@ try:
path
=
"portal_skins/%s/%s"
%
(
portal_skin
,
form
)
configuration_path_list
.
append
(
base64
.
b64encode
(
path
))
configuration_element_lines
=
""
url_list
=
[]
for
path
in
configuration_path_list
:
configuration_element_lines
+=
hateoas_appcache
+
"/definition_view/"
+
path
+
"
\
n
"
content
=
"CONFIGURATION MANIFEST
\
n
# generated on %s
\
n
CACHE:
\
n
\
n
"
%
date
content
+=
configuration_element_lines
content
+=
"
\
n
NETWORK:
\
n
*"
configuration_manifest
.
setTextContent
(
content
)
appcache_configuration_elements
=
"#app_configuration_resources
\
n
"
appcache_configuration_elements
+=
"#CONFIGURATION ELEMENTS generated on %s. Same as in configuration manifest
\
n
"
%
date
appcache_configuration_elements
+=
configuration_element_lines
appcache_configuration_elements
+=
"#/app_configuration_resources
\
n
\
n
"
token_found
=
False
configuration_added
=
False
appcache_content
=
""
appcache_line_list
=
appcache_manifest
.
getTextContent
().
split
(
'
\
n
'
)
for
line
in
appcache_line_list
:
if
"#app_configuration_resources"
in
line
:
token_found
=
True
if
"NETWORK:"
in
line
and
not
configuration_added
:
appcache_content
+=
appcache_configuration_elements
configuration_added
=
True
if
"#/app_configuration_resources"
in
line
:
appcache_content
+=
appcache_configuration_elements
configuration_added
=
True
token_found
=
False
if
not
token_found
:
if
not
"#/app_configuration_resources"
in
line
:
appcache_content
+=
line
+
'
\
n
'
appcache_manifest
.
setTextContent
(
appcache_content
)
url_list
.
append
(
hateoas_appcache
+
"/definition_view/"
+
path
)
except
(
ValueError
,
KeyError
,
SyntaxError
)
as
e
:
if
batch_mode
:
return
'ERROR: '
+
str
(
e
)
return
context
.
Base_redirect
(
'view'
,
keep_items
=
dict
(
portal_status_message
=
'ERROR creating configuration manifest: '
+
str
(
e
)))
return
url_list
if
batch_mode
:
return
'done'
return
context
.
Base_redirect
(
'view'
,
keep_items
=
dict
(
portal_status_message
=
"Configuration manifest created: "
+
configuration_file_reference
))
except
(
ValueError
,
KeyError
,
SyntaxError
,
AttributeError
)
as
e
:
if
batch_mode
==
"0"
:
raise
e
log
(
'ERROR generating Base64 configuration url list: '
+
str
(
e
))
return
[]
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/
Base_createAppConfigurationManife
st.xml
→
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/
WebSection_getBase64ConfigurationUrlLi
st.xml
View file @
5960d9fe
...
...
@@ -54,7 +54,7 @@
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Base_createAppConfigurationManife
st
</string>
</value>
<value>
<string>
WebSection_getBase64ConfigurationUrlLi
st
</string>
</value>
</item>
</dictionary>
</pickle>
...
...
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSite_createAppConfigurationManifest.xml
View file @
5960d9fe
...
...
@@ -14,7 +14,11 @@
</item>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
Base_createAppConfigurationManifest
</string>
</value>
<value>
<string>
WebSection_createAppConfigurationManifest
</string>
</value>
</item>
<item>
<key>
<string>
action_title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
...
...
@@ -74,7 +78,6 @@
<key>
<string>
left
</string>
</key>
<value>
<list>
<string>
my_appcache_manifest
</string>
<string>
my_router_gadget
</string>
</list>
</value>
...
...
bt5/erp5_officejs/SkinTemplateItem/portal_skins/erp5_web_officejs_ui/WebSite_createAppConfigurationManifest/my_appcache_manifest.xml
deleted
100644 → 0
View file @
6900195c
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"LabelField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_appcache_manifest
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Manifest URL:
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: here.getLayoutProperty("configuration_manifest_url")
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
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