Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Laurent S
erp5
Commits
25dcd0f5
Commit
25dcd0f5
authored
May 22, 2013
by
Tristan Cavelier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Erp5-jIO connector updated
parent
6ac76144
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
95 additions
and
68 deletions
+95
-68
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_allDocs.xml
...io/SkinTemplateItem/portal_skins/erp5_jio/JIO_allDocs.xml
+13
-8
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_class.xml
..._jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_class.xml
+65
-30
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_post.xml
...5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_post.xml
+1
-3
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_put.xml
...p5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_put.xml
+1
-3
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_remove.xml
...jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_remove.xml
+3
-3
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_removeAttachment.xml
...mplateItem/portal_skins/erp5_jio/JIO_removeAttachment.xml
+11
-20
bt5/erp5_jio/bt/revision
bt5/erp5_jio/bt/revision
+1
-1
No files found.
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_allDocs.xml
View file @
25dcd0f5
...
@@ -56,19 +56,24 @@ from Products.ERP5Type.Log import log\n
...
@@ -56,19 +56,24 @@ from Products.ERP5Type.Log import log\n
\n
\n
context.REQUEST.response.setHeader("Access-Control-Allow-Origin", "*")\n
context.REQUEST.response.setHeader("Access-Control-Allow-Origin", "*")\n
\n
\n
try: option = json.loads(context.REQUEST.form["option"])\n
jio = context.JIO_class()\n
\n
log(context.REQUEST.form["option"])\n
try: option = jio.jsonUtf8Loads(context.REQUEST.form["option"])\n
except KeyError:\n
except KeyError:\n
option = {}\n
option = {}\n
try:\n
mode = str(context.REQUEST.form["mode"])\n
except KeyError:\n
mode = "normal"\n
\n
\n
jio = context.JIO_class(mode=mode)\n
try: mode = str(context.REQUEST.form["mode"])\n
except KeyError: mode = "generic"\n
jio.setMode(mode)\n
\n
metadata_json = jio.getAllDocuments(option)\n
\n
return jio.sendSuccess(metadata_json)\n
\n
\n
document_list = context.portal_catalog(portal_type="Web Page")\n
#
document_list = context.portal_catalog(portal_type="Web Page")\n
\n
\n
return jio.sendSuccess(jio.getAllDocsFromDocumentList(document_list, include_docs=option.get("include_docs")))\n
#
return jio.sendSuccess(jio.getAllDocsFromDocumentList(document_list, include_docs=option.get("include_docs")))\n
</string>
</value>
</string>
</value>
</item>
</item>
<item>
<item>
...
...
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_class.xml
View file @
25dcd0f5
...
@@ -59,6 +59,7 @@ class FakeDocument():\n
...
@@ -59,6 +59,7 @@ class FakeDocument():\n
def getObject(self): return self\n
def getObject(self): return self\n
def hasProperty(self, property_id): return False\n
def hasProperty(self, property_id): return False\n
\n
\n
\n
class JioErp5Only():\n
class JioErp5Only():\n
def getDocumentAttachment(self, metadata_json):\n
def getDocumentAttachment(self, metadata_json):\n
tool.checkMetadata(metadata_json)\n
tool.checkMetadata(metadata_json)\n
...
@@ -77,6 +78,7 @@ class JioErp5Only():\n
...
@@ -77,6 +78,7 @@ class JioErp5Only():\n
document_dict["workflow_history"] = [v for v in document.workflow_history]\n
document_dict["workflow_history"] = [v for v in document.workflow_history]\n
return document_dict\n
return document_dict\n
\n
\n
\n
class JioGeneric():\n
class JioGeneric():\n
"Processes generic jIO requests"\n
"Processes generic jIO requests"\n
def __init__(self):\n
def __init__(self):\n
...
@@ -93,7 +95,9 @@ class JioGeneric():\n
...
@@ -93,7 +95,9 @@ class JioGeneric():\n
self.allowed_property_id_dict = ["title", "short_title", "description",\n
self.allowed_property_id_dict = ["title", "short_title", "description",\n
"language", "reference", "version",\n
"language", "reference", "version",\n
"format", "posted_date", "type",\n
"format", "posted_date", "type",\n
"expiration_date",\n
"contributor", "subject", "category"]\n
"contributor", "subject", "category"]\n
self.allowed_portal_type_list = ["Web Page", "Image"]\n
self.local_attachment_key = "local_attachment_dict"\n
self.local_attachment_key = "local_attachment_dict"\n
\n
\n
def getDocumentAttachment(self, metadata_json):\n
def getDocumentAttachment(self, metadata_json):\n
...
@@ -106,11 +110,11 @@ class JioGeneric():\n
...
@@ -106,11 +110,11 @@ class JioGeneric():\n
if metadata_json.get("_attachment") == "body" and \\\n
if metadata_json.get("_attachment") == "body" and \\\n
"text_content" in document_dict:\n
"text_content" in document_dict:\n
return document_dict["text_content"]\n
return document_dict["text_content"]\n
elif document_dict.get(self.local_attachment_key) is not None and \\\n
#
elif document_dict.get(self.local_attachment_key) is not None and \\\n
metadata_json.get("_attachment") in \\\n
#
metadata_json.get("_attachment") in \\\n
document_dict.get(self.local_attachment_key):\n
#
document_dict.get(self.local_attachment_key):\n
return document_dict[self.local_attachment_key][\n
#
return document_dict[self.local_attachment_key][\n
metadata_json["_attachment"]]["data"]\n
#
metadata_json["_attachment"]]["data"]\n
raise KeyError("Missing attachment")\n
raise KeyError("Missing attachment")\n
\n
\n
def getDocumentMetadata(self, metadata_json):\n
def getDocumentMetadata(self, metadata_json):\n
...
@@ -131,16 +135,16 @@ class JioGeneric():\n
...
@@ -131,16 +135,16 @@ class JioGeneric():\n
}\n
}\n
}\n
}\n
)\n
)\n
if document_dict.get(self.local_attachment_key) is not None:\n
#
if document_dict.get(self.local_attachment_key) is not None:\n
tmp = {}\n
#
tmp = {}\n
for k, v in document_dict[self.local_attachment_key].items():\n
#
for k, v in document_dict[self.local_attachment_key].items():\n
tmp[k] = {\n
#
tmp[k] = {\n
"length": len(document_dict[self.local_attachment_key][k]["data"]),\n
#
"length": len(document_dict[self.local_attachment_key][k]["data"]),\n
"content_type": document_dict[self.local_attachment_key][k][\n
#
"content_type": document_dict[self.local_attachment_key][k][\n
"content_type"]\n
#
"content_type"]\n
}\n
#
}\n
real_document_dict["_attachments"] = tool.dictFusion(\n
#
real_document_dict["_attachments"] = tool.dictFusion(\n
real_document_dict.get("_attachments"), tmp);\n
#
real_document_dict.get("_attachments"), tmp);\n
while True:\n
while True:\n
try: k, v = document_dict.popitem()\n
try: k, v = document_dict.popitem()\n
except KeyError: break\n
except KeyError: break\n
...
@@ -170,6 +174,7 @@ class JioGeneric():\n
...
@@ -170,6 +174,7 @@ class JioGeneric():\n
real_document_dict[k] = v\n
real_document_dict[k] = v\n
real_document_dict["_id"] = metadata_json["_id"]\n
real_document_dict["_id"] = metadata_json["_id"]\n
real_document_dict["type"] = document.getPortalType()\n
real_document_dict["type"] = document.getPortalType()\n
#tool.stringifyDictDateValue(real_document_dict)\n
return real_document_dict\n
return real_document_dict\n
\n
\n
def updateDocumentMetadataEditKw(self, metadata_json,\n
def updateDocumentMetadataEditKw(self, metadata_json,\n
...
@@ -200,14 +205,15 @@ class JioGeneric():\n
...
@@ -200,14 +205,15 @@ class JioGeneric():\n
if metadata_json.get("_attachment") == "body":\n
if metadata_json.get("_attachment") == "body":\n
document.edit(text_content=metadata_json.get("_data"))\n
document.edit(text_content=metadata_json.get("_data"))\n
else:\n
else:\n
edit_kw = {self.local_attachment_key:\n
raise ValueError("Unauthorized attachment id")\n
document.getProperty(self.local_attachment_key)}\n
# edit_kw = {self.local_attachment_key:\n
if edit_kw.get(self.local_attachment_key) is None:\n
# document.getProperty(self.local_attachment_key)}\n
edit_kw[self.local_attachment_key] = {}\n
# if edit_kw.get(self.local_attachment_key) is None:\n
edit_kw[self.local_attachment_key][metadata_json.get("_attachment")] = {\n
# edit_kw[self.local_attachment_key] = {}\n
"content_type": metadata_json.get("_mimetype"),\n
# edit_kw[self.local_attachment_key][metadata_json.get("_attachment")] = {\n
"data": metadata_json.get("_data")}\n
# "content_type": metadata_json.get("_mimetype"),\n
document.edit(**edit_kw)\n
# "data": metadata_json.get("_data")}\n
# document.edit(**edit_kw)\n
return {"ok": True, "id": metadata_json["_id"],\n
return {"ok": True, "id": metadata_json["_id"],\n
"attachment": metadata_json.get("_attachment")}\n
"attachment": metadata_json.get("_attachment")}\n
\n
\n
...
@@ -248,15 +254,36 @@ class JioGeneric():\n
...
@@ -248,15 +254,36 @@ class JioGeneric():\n
except ValueError: raise LookupError("Missing document")\n
except ValueError: raise LookupError("Missing document")\n
except KeyError: raise LookupError("Missing document")\n
except KeyError: raise LookupError("Missing document")\n
document_id = document.getId()\n
document_id = document.getId()\n
document.getParentValue.manage_delObjects(ids=[document_id])\n
document.getParentValue
()
.manage_delObjects(ids=[document_id])\n
return {"ok": True, "id":
document_id
}\n
return {"ok": True, "id":
metadata_json["_id"]
}\n
\n
\n
def removeAttachment(self, document, data_dict):\n
def removeAttachment(self, metadata_json):\n
document = document.getObject()\n
tool.checkMetadata(metadata_json)\n
try: document = tool.getDocumentFromUrl(metadata_json["_id"])\n
except AttributeError: raise ValueError("Bad document id")\n
except ValueError: raise LookupError("Missing document")\n
except KeyError: raise LookupError("Missing document")\n
edit_kw = {}\n
edit_kw = {}\n
if data_dict.get("_attachment") == "body.html":\n
if metadata_json.get("_attachment") == "body":\n
edit_kw[self.mode["attachment_data_key"]] = None\n
if document.getTextContent() == None:\n
document.edit(**edit_kw)\n
raise LookupError("Missing attachment")\n
document.edit(text_content = None)\n
else:\n
raise ValueError("Unauthorized attachment id")\n
return {"ok": True, "id": metadata_json["_id"],\n
"attachment": metadata_json.get("_attachment")}\n
\n
def getAllDocuments(self, option_json):\n
response = {"rows":[]}\n
for portal_type in self.allowed_portal_type_list:\n
for document in context.portal_catalog(portal_type=portal_type):\n
url = tool.getUrlFromDocument(document)\n
row = {"id": url, "key": url, "values": {}}\n
if option_json.get(\'include_docs\') is True:\n
row["doc"] = self.getDocumentMetadata({"_id": url})\n
response["rows"].append(row)\n
response["total_rows"] = len(response["rows"])\n
return response\n
\n
\n
class JioTool():\n
class JioTool():\n
# TODO doc strings\n
# TODO doc strings\n
...
@@ -341,6 +368,8 @@ class JioTool():\n
...
@@ -341,6 +368,8 @@ class JioTool():\n
elif
isinstance(obj,
dict):\n
elif
isinstance(obj,
dict):\n
return
dict(((k.encode("utf-8"),
self.recursiveEncodeToUtf8(v))
\\\n
return
dict(((k.encode("utf-8"),
self.recursiveEncodeToUtf8(v))
\\\n
for
k,
v
in
obj.iteritems()))\n
for
k,
v
in
obj.iteritems()))\n
else:\n
return
obj\n
\n
\n
def
jsonUtf8Loads(self,
json_str):\n
def
jsonUtf8Loads(self,
json_str):\n
return
self.recursiveEncodeToUtf8(json.loads(json_str))\n
return
self.recursiveEncodeToUtf8(json.loads(json_str))\n
...
@@ -392,6 +421,12 @@ class JioTool():\n
...
@@ -392,6 +421,12 @@ class JioTool():\n
\n
\n
def
removeDocument(self,
metadata_json):\n
def
removeDocument(self,
metadata_json):\n
return
self.jio.removeDocument(metadata_json)\n
return
self.jio.removeDocument(metadata_json)\n
\n
def
removeAttachment(self,
metadata_json):\n
return
self.jio.removeAttachment(metadata_json)\n
\n
def
getAllDocuments(self,
option_json):\n
return
self.jio.getAllDocuments(option_json)\n
\n
\n
def
sendSuccess(self,
param):\n
def
sendSuccess(self,
param):\n
return
json.dumps({"err":
None,
"response":
param})\n
return
json.dumps({"err":
None,
"response":
param})\n
...
...
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_post.xml
View file @
25dcd0f5
...
@@ -68,9 +68,7 @@ jio.setMode(mode)\n
...
@@ -68,9 +68,7 @@ jio.setMode(mode)\n
\n
\n
try:\n
try:\n
response_json = jio.putDocumentMetadata(doc, overwrite=False)\n
response_json = jio.putDocumentMetadata(doc, overwrite=False)\n
except ValueError as e:\n
except (ValueError, TypeError) as e:\n
return jio.sendError(jio.createBadRequestDict("Cannot post document", str(e)))\n
except TypeError as e:\n
return jio.sendError(jio.createBadRequestDict("Cannot post document", str(e)))\n
return jio.sendError(jio.createBadRequestDict("Cannot post document", str(e)))\n
except LookupError as e:\n
except LookupError as e:\n
return jio.sendError(jio.createConflictDict("Cannot post document", str(e)))\n
return jio.sendError(jio.createConflictDict("Cannot post document", str(e)))\n
...
...
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_put.xml
View file @
25dcd0f5
...
@@ -68,9 +68,7 @@ jio.setMode(mode)\n
...
@@ -68,9 +68,7 @@ jio.setMode(mode)\n
\n
\n
try:\n
try:\n
response_json = jio.putDocumentMetadata(doc)\n
response_json = jio.putDocumentMetadata(doc)\n
except ValueError as e:\n
except (ValueError, TypeError) as e:\n
return jio.sendError(jio.createBadRequestDict("Cannot put document", str(e)))\n
except TypeError as e:\n
return jio.sendError(jio.createBadRequestDict("Cannot put document", str(e)))\n
return jio.sendError(jio.createBadRequestDict("Cannot put document", str(e)))\n
\n
\n
return jio.sendSuccess(response_json)\n
return jio.sendSuccess(response_json)\n
...
...
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_remove.xml
View file @
25dcd0f5
...
@@ -68,10 +68,10 @@ jio.setMode(mode)\n
...
@@ -68,10 +68,10 @@ jio.setMode(mode)\n
\n
\n
try:\n
try:\n
response_json = jio.removeDocument(doc)\n
response_json = jio.removeDocument(doc)\n
except ValueError as e:\n
except (ValueError, TypeError) as e:\n
return jio.sendError(jio.createBadRequestDict("Cannot remove document", str(e)))\n
except TypeError as e:\n
return jio.sendError(jio.createBadRequestDict("Cannot remove document", str(e)))\n
return jio.sendError(jio.createBadRequestDict("Cannot remove document", str(e)))\n
except LookupError as e:\n
return jio.sendError(jio.createNotFoundDict("Cannot remove document", str(e)))\n
\n
\n
return jio.sendSuccess(response_json)\n
return jio.sendSuccess(response_json)\n
</string>
</value>
</string>
</value>
...
...
bt5/erp5_jio/SkinTemplateItem/portal_skins/erp5_jio/JIO_removeAttachment.xml
View file @
25dcd0f5
...
@@ -58,31 +58,22 @@ context.REQUEST.response.setHeader("Access-Control-Allow-Origin", "*")\n
...
@@ -58,31 +58,22 @@ context.REQUEST.response.setHeader("Access-Control-Allow-Origin", "*")\n
\n
\n
jio = context.JIO_class()\n
jio = context.JIO_class()\n
\n
\n
try:\n
try: doc = jio.jsonUtf8Loads(context.REQUEST.form["doc"])\n
doc = json.loads(context.REQUEST.form["doc"])\n
except IndexError:\n
return jio.sendError(jio.createBadRequestErrorObject("Unable to operate put request", "No document received"))\n
try:\n
mode = str(context.REQUEST.form["mode"])\n
except KeyError:\n
except KeyError:\n
mode = "normal"
\n
return jio.sendError(jio.createBadRequestDict("Cannot get document", "No document information received"))
\n
\n
\n
try: mode = str(context.REQUEST.form["mode"])\n
except KeyError: mode = "generic"\n
jio.setMode(mode)\n
jio.setMode(mode)\n
\n
\n
doc = jio.recursiveEncodeToUtf8(doc)\n
try:\n
\n
response_json = jio.removeAttachment(doc)\n
if not isinstance(doc.get("_id"), str) or doc.get("_id") == "":\n
except (ValueError, TypeError) as e:\n
return jio.sendError(jio.createBadRequestErrorObject("Unable to operate put request", "Document id is missing"))\n
return jio.sendError(jio.createBadRequestDict("Cannot remove attachment", str(e)))\n
\n
except LookupError as e:\n
document_list = jio.getDocumentListFromId(doc.get("_id"))\n
return jio.sendError(jio.createNotFoundDict("Cannot remove attachment", str(e)))\n
\n
if len(document_list) == 0:\n
return jio.sendError(jio.createNotFoundErrorObject("Unable to find \\"" + doc.get("_id") + "\\"", "Document not found"))\n
else:\n
# TODO manage several documents\n
jio.removeAttachment(document_list[0], doc)\n
\n
\n
return jio.sendSuccess({"ok": True, "id": doc["_id"], "attachment": doc["_attachment"]}
)\n
return jio.sendSuccess(response_json
)\n
</string>
</value>
</string>
</value>
</item>
</item>
<item>
<item>
...
...
bt5/erp5_jio/bt/revision
View file @
25dcd0f5
3
4
\ No newline at end of file
\ 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