From 1fe01629fa369258a56b39f863bd1f003fd53a9d Mon Sep 17 00:00:00 2001
From: Georgios Dagkakis <georgios.dagkakis@nexedi.com>
Date: Thu, 28 Jan 2021 08:07:37 +0000
Subject: [PATCH] erp5_web_service: Migrate DocumentConnection to components

This was removed from products in previous commits
---
 .../module.erp5.DocumentConnection.py         |  71 ++++++++++
 .../module.erp5.DocumentConnection.xml        | 133 ++++++++++++++++++
 .../tool.erp5.WebServiceTool.py               |   1 +
 .../bt/template_module_component_id_list      |   3 +-
 4 files changed, 207 insertions(+), 1 deletion(-)
 create mode 100644 bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.py
 create mode 100644 bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.xml

diff --git a/bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.py b/bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.py
new file mode 100644
index 0000000000..86a1e965ca
--- /dev/null
+++ b/bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.py
@@ -0,0 +1,71 @@
+##############################################################################
+#
+# Copyright (c) 2010 Nexedi SARL and Contributors. All Rights Reserved.
+#                    Aurelien Calonne <aurel@nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+
+from erp5.component.tool.WebServiceTool import ConnectionError
+from Products.ERP5.ERP5Site import getSite
+
+class MethodWrapper(object):
+
+  def __init__(self, method, conn):
+    self._method = method
+    self._conn = conn
+
+  def __call__(self, *args, **kw):
+    portal = getSite()
+    method_name = "DocumentConnector_%s" %(self._method)
+    method = getattr(portal, method_name, None)
+    kw["reference"] = self._conn.reference
+    if method:
+      response = method(*args, **kw)
+      return method.absolute_url(), response
+##       try:
+##       except ValueError, msg:
+##         raise ConnectionError(msg)
+##       except Exception, msg:
+##         raise ConnectionError(msg)
+    else:
+      raise ConnectionError("Method %s does not exist" %(method_name))
+
+class DocumentConnection:
+  """
+    Holds a connection to the document module.
+  """
+  __allow_access_to_unprotected_subobjects__ = 1
+
+  def __init__(self, url, *args, **kw):
+    """
+    """
+    self.reference=url
+
+  def connect(self):
+    """Get a handle to a remote connection."""
+    return self
+
+  def __getattr__(self, name):
+    if not name.startswith("_"):
+      return MethodWrapper(name, self)
diff --git a/bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.xml b/bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.xml
new file mode 100644
index 0000000000..07afa6032f
--- /dev/null
+++ b/bt5/erp5_web_service/ModuleComponentTemplateItem/portal_components/module.erp5.DocumentConnection.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Module Component" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>DocumentConnection</string> </value>
+        </item>
+        <item>
+            <key> <string>default_source_reference</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>module.erp5.DocumentConnection</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Module Component</string> </value>
+        </item>
+        <item>
+            <key> <string>sid</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_error_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_warning_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>erp5</string> </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </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/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>component_validation_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>validate</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>validated</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_service/ToolComponentTemplateItem/portal_components/tool.erp5.WebServiceTool.py b/bt5/erp5_web_service/ToolComponentTemplateItem/portal_components/tool.erp5.WebServiceTool.py
index 55e9bac87c..cd5cb58ee0 100644
--- a/bt5/erp5_web_service/ToolComponentTemplateItem/portal_components/tool.erp5.WebServiceTool.py
+++ b/bt5/erp5_web_service/ToolComponentTemplateItem/portal_components/tool.erp5.WebServiceTool.py
@@ -53,6 +53,7 @@ handler_module_dict = {
   'soap_wsdl': 'SOAPWSDLConnection',
   'sftp' : "SFTPConnection",
   'sql' : "SQLConnection",
+  'document' : "DocumentConnection",
 }
 for handler_id, module_id in handler_module_dict.iteritems():
   # Ignore non-functionnal plugins.
diff --git a/bt5/erp5_web_service/bt/template_module_component_id_list b/bt5/erp5_web_service/bt/template_module_component_id_list
index 302beb6c32..a697f3a2e3 100644
--- a/bt5/erp5_web_service/bt/template_module_component_id_list
+++ b/bt5/erp5_web_service/bt/template_module_component_id_list
@@ -2,4 +2,5 @@ module.erp5.SFTPConnection
 module.erp5.SOAPConnection
 module.erp5.SOAPWSDLConnection
 module.erp5.SQLConnection
-module.erp5.XMLRPCConnection
\ No newline at end of file
+module.erp5.XMLRPCConnection
+module.erp5.DocumentConnection
\ No newline at end of file
-- 
2.30.9