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
Léo-Paul Géneau
erp5
Commits
3cb2f783
Commit
3cb2f783
authored
Oct 29, 2021
by
Cédric Le Ninivin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_json_type: Add IJSONConvertable interface
parent
7d85b622
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
219 additions
and
5 deletions
+219
-5
bt5/erp5_json_type/DocumentTemplateItem/portal_components/document.erp5.JSONType.py
...tTemplateItem/portal_components/document.erp5.JSONType.py
+32
-5
bt5/erp5_json_type/InterfaceTemplateItem/portal_components/interface.erp5.IJSONConvertable.py
...Item/portal_components/interface.erp5.IJSONConvertable.py
+53
-0
bt5/erp5_json_type/InterfaceTemplateItem/portal_components/interface.erp5.IJSONConvertable.xml
...tem/portal_components/interface.erp5.IJSONConvertable.xml
+133
-0
bt5/erp5_json_type/bt/template_interface_id_list
bt5/erp5_json_type/bt/template_interface_id_list
+1
-0
No files found.
bt5/erp5_json_type/DocumentTemplateItem/portal_components/document.erp5.JSONType.py
View file @
3cb2f783
...
...
@@ -27,13 +27,22 @@
##############################################################################
import
json
import
jsonschema
import
zope.interface
from
AccessControl
import
ClassSecurityInfo
from
Products.ERP5Type.XMLObject
import
XMLObject
from
Products.ERP5Type
import
PropertySheet
from
Products.ERP5Type
import
Permissions
,
PropertySheet
from
erp5.component.interface.IJSONConvertable
import
IJSONConvertable
class
JSONType
(
XMLObject
):
"""
Represents a portal type with JSON Schema
"""
zope
.
interface
.
implements
(
IJSONConvertable
,
)
# Default Properties
property_sheets
=
(
PropertySheet
.
Base
,
PropertySheet
.
XMLObject
...
...
@@ -42,13 +51,17 @@ class JSONType(XMLObject):
,
PropertySheet
.
TextDocument
)
def
validateLocalJsonSchema
(
self
,
list_error
=
False
):
security
=
ClassSecurityInfo
()
security
.
declareObjectProtected
(
Permissions
.
AccessContentsInformation
)
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'validateLocalJSONSchema'
)
def
validateLocalJSONSchema
(
self
,
list_error
=
False
):
"""
Validate contained JSON with the Schema defined in the Portal Type.
"""
portal
=
self
.
getPortalObject
()
defined_schema
=
json
.
loads
(
portal
.
portal_types
[
self
.
getPortalType
()].
getTextConten
t
())
text_content
=
self
.
getTextConten
t
()
defined_schema
=
json
.
loads
(
portal
.
portal_types
[
self
.
getPortalType
()].
asJSONTex
t
())
text_content
=
self
.
asJSONTex
t
()
if
text_content
is
None
:
return
False
...
...
@@ -62,5 +75,19 @@ class JSONType(XMLObject):
return
err
return
True
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'validateJSONSchema'
)
def
validateJSONSchema
(
self
,
list_error
=
False
):
return
self
.
validateLocalJSONSchema
(
list_error
=
list_error
)
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'validateJsonSchema'
)
def
validateJsonSchema
(
self
,
list_error
=
False
):
return
self
.
validateLocalJsonSchema
(
list_error
=
list_error
)
\ No newline at end of file
# Deprecated, please use validateJSONSchema
return
self
.
validateJSONSchema
(
list_error
=
list_error
)
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'asJSONText'
)
def
asJSONText
(
self
):
return
self
.
getTextContent
()
security
.
declareProtected
(
Permissions
.
ModifyPortalContent
,
'fromJSONText'
)
def
fromJSONText
(
self
,
json_text
):
return
self
.
setTextContent
(
json_text
)
\ No newline at end of file
bt5/erp5_json_type/InterfaceTemplateItem/portal_components/interface.erp5.IJSONConvertable.py
0 → 100644
View file @
3cb2f783
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2021 Nexedi SA and Contributors. All Rights Reserved.
# Jean-Paul Smets-Solanes <jp@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
zope.interface
import
Interface
class
IJSONConvertable
(
Interface
):
"""
JSON Convertable interface specification
Documents which implement the IJSONConvertable interface
can be converted to json.
"""
def
asJSONText
(
**
kw
):
"""
Converts the current document to json
kw -- optional parameters which can be passed to the
conversion engine
"""
def
fromJSONText
(
json_text
):
"""
Update the current document from json
json_text -- json text to be used to update document
"""
bt5/erp5_json_type/InterfaceTemplateItem/portal_components/interface.erp5.IJSONConvertable.xml
0 → 100644
View file @
3cb2f783
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Interface 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>
IJSONConvertable
</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>
interface.erp5.IJSONConvertable
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Interface 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>
bt5/erp5_json_type/bt/template_interface_id_list
0 → 100644
View file @
3cb2f783
interface.erp5.IJSONConvertable
\ 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