From 5c30e4fb44d37a44ec6e2820a4857c74a5f7c8a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Mon, 14 Aug 2017 14:03:47 +0200
Subject: [PATCH] erp5_data_notebook: Add Cluster Data Notebook

Those types will be used to implement asynchronous and restricted
execution of Jupyter Notebook code with ERP5ClusterKernel.
---
 .../view.xml                                  |  83 +++++++++++
 .../Cluster%20Data%20Notebook/view.xml        |  83 +++++++++++
 .../cluster_data_notebook_module.xml          |  96 +++++++++++++
 .../allowed_content_types.xml                 |   3 +
 .../base_category_list.xml                    |   3 +
 .../Cluster%20Data%20Notebook%20Module.xml    | 108 +++++++++++++++
 .../Cluster%20Data%20Notebook.xml             |  62 +++++++++
 .../workflow_chain_type.xml                   |   4 +
 ...bookModule_viewClusterDataNotebookList.xml | 131 ++++++++++++++++++
 .../listbox.xml                               |  95 +++++++++++++
 .../ClusterDataNotebook_view.xml              | 131 ++++++++++++++++++
 .../ClusterDataNotebook_view/my_title.xml     |  78 +++++++++++
 .../bt/template_action_path_list              |   2 +
 .../bt/template_module_id_list                |   1 +
 ...late_portal_type_allowed_content_type_list |   1 +
 .../template_portal_type_base_category_list   |   1 +
 .../bt/template_portal_type_id_list           |   2 +
 .../template_portal_type_workflow_chain_list  |   1 +
 18 files changed, 885 insertions(+)
 create mode 100644 bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module/view.xml
 create mode 100644 bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook/view.xml
 create mode 100644 bt5/erp5_data_notebook/ModuleTemplateItem/cluster_data_notebook_module.xml
 create mode 100644 bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module.xml
 create mode 100644 bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook.xml
 create mode 100644 bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList.xml
 create mode 100644 bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList/listbox.xml
 create mode 100644 bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view.xml
 create mode 100644 bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view/my_title.xml

diff --git a/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module/view.xml b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module/view.xml
new file mode 100644
index 0000000000..a68b8d5d03
--- /dev/null
+++ b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module/view.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_list</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_list</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Action Information</string> </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/ClusterDataNotebookModule_viewClusterDataNotebookList</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook/view.xml b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook/view.xml
new file mode 100644
index 0000000000..fe27d35c49
--- /dev/null
+++ b/bt5/erp5_data_notebook/ActionTemplateItem/portal_types/Cluster%20Data%20Notebook/view.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Action Information</string> </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/ClusterDataNotebook_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/ModuleTemplateItem/cluster_data_notebook_module.xml b/bt5/erp5_data_notebook/ModuleTemplateItem/cluster_data_notebook_module.xml
new file mode 100644
index 0000000000..5b2c04cf17
--- /dev/null
+++ b/bt5/erp5_data_notebook/ModuleTemplateItem/cluster_data_notebook_module.xml
@@ -0,0 +1,96 @@
+<module>
+ <id>cluster_data_notebook_module</id>
+ <permission_list>
+  <permission type='tuple'>
+   <name>Access Transient Objects</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Access contents information</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Access session data</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Add portal content</name>
+   <role>Assignor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Add portal folders</name>
+   <role>Assignor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Change local roles</name>
+   <role>Assignor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Copy or Move</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Delete objects</name>
+   <role>Assignor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>List folder contents</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>Modify portal content</name>
+   <role>Assignor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>View</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Manager</role>
+  </permission>
+  <permission type='tuple'>
+   <name>View History</name>
+   <role>Assignee</role>
+   <role>Assignor</role>
+   <role>Associate</role>
+   <role>Auditor</role>
+   <role>Author</role>
+   <role>Manager</role>
+  </permission>
+ </permission_list>
+ <portal_type>Cluster Data Notebook Module</portal_type>
+ <title>Cluster Data Notebooks</title>
+</module>
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/bt5/erp5_data_notebook/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
index 9ac48ae107..da4173b9bc 100644
--- a/bt5/erp5_data_notebook/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
+++ b/bt5/erp5_data_notebook/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
@@ -1,4 +1,7 @@
 <allowed_content_type_list>
+ <portal_type id="Cluster Data Notebook Module">
+  <item>Cluster Data Notebook</item>
+ </portal_type>
  <portal_type id="Data Notebook">
   <item>Data Notebook Line</item>
  </portal_type>
diff --git a/bt5/erp5_data_notebook/PortalTypeBaseCategoryTemplateItem/base_category_list.xml b/bt5/erp5_data_notebook/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
index ea12c849ad..e8b57dcaba 100644
--- a/bt5/erp5_data_notebook/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
+++ b/bt5/erp5_data_notebook/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
@@ -1,4 +1,7 @@
 <base_category_list>
+ <portal_type id="Cluster Data Notebook Module">
+  <item>business_application</item>
+ </portal_type>
  <portal_type id="Data Notebook">
   <item>source</item>
  </portal_type>
diff --git a/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module.xml b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module.xml
new file mode 100644
index 0000000000..9f1b7adf30
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook%20Module.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>folder_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addFolder</string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>module</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Cluster Data Notebook Module</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Base Type</string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>Folder</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_ui</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_ui</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook.xml b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook.xml
new file mode 100644
index 0000000000..3b6e2f7241
--- /dev/null
+++ b/bt5/erp5_data_notebook/PortalTypeTemplateItem/portal_types/Cluster%20Data%20Notebook.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Runtime execution representation of Jupyter Notebook.</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addXMLObject</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Cluster Data Notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Base Type</string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>XMLObject</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/bt5/erp5_data_notebook/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
index b98ee492d9..83c4ebe948 100644
--- a/bt5/erp5_data_notebook/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
+++ b/bt5/erp5_data_notebook/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
@@ -1,4 +1,8 @@
 <workflow_chain>
+ <chain>
+  <type>Cluster Data Notebook</type>
+  <workflow>edit_workflow</workflow>
+ </chain>
  <chain>
   <type>Data Notebook</type>
   <workflow>edit_workflow</workflow>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList.xml
new file mode 100644
index 0000000000..bc9c38aec0
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ERP5 Form" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>Base_doSelect</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>edit_order</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+                <string>right</string>
+                <string>center</string>
+                <string>bottom</string>
+                <string>hidden</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>bottom</string> </key>
+                    <value>
+                      <list>
+                        <string>listbox</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>center</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>right</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ClusterDataNotebookModule_viewClusterDataNotebookList</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>ClusterDataNotebookModule_viewClusterDataNotebookList</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_list</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Cluster Data Notebooks</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>update_action_title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList/listbox.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList/listbox.xml
new file mode 100644
index 0000000000..cf3c98d4e5
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebookModule_viewClusterDataNotebookList/listbox.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>listbox</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_list_mode_listbox</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>portal_type</string> </key>
+                    <value>
+                      <list>
+                        <tuple>
+                          <string>Cluster Data Notebook</string>
+                          <string>Cluster Data Notebook</string>
+                        </tuple>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Cluster Data Notebooks</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view.xml
new file mode 100644
index 0000000000..94a81d362f
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ERP5 Form" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>Base_edit</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>edit_order</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+                <string>right</string>
+                <string>center</string>
+                <string>bottom</string>
+                <string>hidden</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>bottom</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>center</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list>
+                        <string>my_title</string>
+                      </list>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>right</string> </key>
+                    <value>
+                      <list/>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ClusterDataNotebook_view</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>ClusterDataNotebook_view</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_view</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Cluster Data Notebook</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>update_action_title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view/my_title.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view/my_title.xml
new file mode 100644
index 0000000000..43fefb1268
--- /dev/null
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/ClusterDataNotebook_view/my_title.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_title</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_view_mode_title</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>Base_viewFieldLibrary</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_data_notebook/bt/template_action_path_list b/bt5/erp5_data_notebook/bt/template_action_path_list
index e43ea9d87c..e5d9d4fd8c 100644
--- a/bt5/erp5_data_notebook/bt/template_action_path_list
+++ b/bt5/erp5_data_notebook/bt/template_action_path_list
@@ -1,3 +1,5 @@
+Cluster Data Notebook Module | view
+Cluster Data Notebook | view
 Data Notebook Line | new_notebook_line
 Data Notebook Line | view
 Data Notebook Module | view
diff --git a/bt5/erp5_data_notebook/bt/template_module_id_list b/bt5/erp5_data_notebook/bt/template_module_id_list
index ad7b2a23bd..fe776251e7 100644
--- a/bt5/erp5_data_notebook/bt/template_module_id_list
+++ b/bt5/erp5_data_notebook/bt/template_module_id_list
@@ -1 +1,2 @@
+cluster_data_notebook_module
 data_notebook_module
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_allowed_content_type_list b/bt5/erp5_data_notebook/bt/template_portal_type_allowed_content_type_list
index 8143b7d606..c690e41a28 100644
--- a/bt5/erp5_data_notebook/bt/template_portal_type_allowed_content_type_list
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_allowed_content_type_list
@@ -1,2 +1,3 @@
+Cluster Data Notebook Module | Cluster Data Notebook
 Data Notebook Module | Data Notebook
 Data Notebook | Data Notebook Line
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_base_category_list b/bt5/erp5_data_notebook/bt/template_portal_type_base_category_list
index 5de3b435e5..a2b4a4cd99 100644
--- a/bt5/erp5_data_notebook/bt/template_portal_type_base_category_list
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_base_category_list
@@ -1,2 +1,3 @@
+Cluster Data Notebook Module | business_application
 Data Notebook Module | business_application
 Data Notebook | source
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_id_list b/bt5/erp5_data_notebook/bt/template_portal_type_id_list
index cf43d8fdee..a30b552213 100644
--- a/bt5/erp5_data_notebook/bt/template_portal_type_id_list
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_id_list
@@ -1,3 +1,5 @@
+Cluster Data Notebook
+Cluster Data Notebook Module
 Data Notebook
 Data Notebook Line
 Data Notebook Module
\ No newline at end of file
diff --git a/bt5/erp5_data_notebook/bt/template_portal_type_workflow_chain_list b/bt5/erp5_data_notebook/bt/template_portal_type_workflow_chain_list
index 0047f146fc..2ea279554f 100644
--- a/bt5/erp5_data_notebook/bt/template_portal_type_workflow_chain_list
+++ b/bt5/erp5_data_notebook/bt/template_portal_type_workflow_chain_list
@@ -1 +1,2 @@
+Cluster Data Notebook | edit_workflow
 Data Notebook | edit_workflow
\ No newline at end of file
-- 
2.30.9