Skip to content
This repository has been archived by the owner on Apr 9, 2023. It is now read-only.

Commit

Permalink
Merge pull request #54 from plone/no-zcml-json-serialize
Browse files Browse the repository at this point in the history
remove zcml from json de?serialize module
  • Loading branch information
vangheem committed Jan 20, 2017
2 parents 79c22de + 70fdbb3 commit 9a22cba
Show file tree
Hide file tree
Showing 25 changed files with 477 additions and 346 deletions.
2 changes: 1 addition & 1 deletion src/plone.server/plone/server/api/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from plone.server import app_settings
from plone.server import configure
from plone.server.interfaces import IApplication
from plone.server.json.interfaces import IResourceSerializeToJson
from plone.server.interfaces import IResourceSerializeToJson
from zope.component import getMultiAdapter


Expand Down
2 changes: 1 addition & 1 deletion src/plone.server/plone/server/api/behaviors.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from plone.server import configure
from plone.server.content import get_cached_factory
from plone.server.interfaces import IResource
from plone.server.json.interfaces import ISchemaSerializeToJson
from plone.server.interfaces import ISchemaSerializeToJson
from zope.component import getMultiAdapter
from zope.component import getUtilitiesFor
from zope.component import queryAdapter
Expand Down
4 changes: 2 additions & 2 deletions src/plone.server/plone/server/api/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
from plone.server.interfaces import IAbsoluteURL
from plone.server.interfaces import IResource
from plone.server.json.exceptions import DeserializationError
from plone.server.json.interfaces import IResourceDeserializeFromJson
from plone.server.json.interfaces import IResourceSerializeToJson
from plone.server.interfaces import IResourceDeserializeFromJson
from plone.server.interfaces import IResourceSerializeToJson
from plone.server.utils import get_authenticated_user_id
from plone.server.utils import iter_parents
from zope.component import getMultiAdapter
Expand Down
2 changes: 1 addition & 1 deletion src/plone.server/plone/server/api/portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from plone.server.interfaces import IApplication
from plone.server.interfaces import IDatabase
from plone.server.interfaces import ISite
from plone.server.json.interfaces import IResourceSerializeToJson
from plone.server.interfaces import IResourceSerializeToJson
from plone.server.utils import get_authenticated_user_id
from zope.component import getMultiAdapter
from zope.securitypolicy.interfaces import IPrincipalRoleManager
Expand Down
4 changes: 2 additions & 2 deletions src/plone.server/plone/server/api/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
from plone.server.interfaces import IRegistry
from plone.server.interfaces import ISite
from plone.server.json.exceptions import DeserializationError
from plone.server.json.interfaces import IJSONToValue
from plone.server.json.interfaces import IValueToJson
from plone.server.interfaces import IJSONToValue
from plone.server.interfaces import IValueToJson
from plone.server.utils import import_class
from zope.component import getMultiAdapter
from zope.dottedname.resolve import resolve
Expand Down
2 changes: 1 addition & 1 deletion src/plone.server/plone/server/api/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from plone.server import configure
from plone.server.interfaces import IResourceFactory
from plone.server.interfaces import ISite
from plone.server.json.interfaces import IFactorySerializeToJson
from plone.server.interfaces import IFactorySerializeToJson
from zope.component import getMultiAdapter
from zope.component import getUtilitiesFor
from zope.component import queryUtility
Expand Down
1 change: 0 additions & 1 deletion src/plone.server/plone/server/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

<include file="meta.zcml" />

<include package=".json" />
<include package=".auth" />
<include package=".catalog" />
<include package=".framing" />
Expand Down
4 changes: 2 additions & 2 deletions src/plone.server/plone/server/content.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
for="plone.server.interfaces.IDatabase
plone.server.interfaces.IRequest"
factory="plone.server.factory.DatabaseToJson"
provides="plone.server.json.interfaces.IResourceSerializeToJson"
provides="plone.server.interfaces.IResourceSerializeToJson"
/>

<adapter
for="plone.server.interfaces.IApplication
plone.server.interfaces.IRequest"
factory="plone.server.factory.ApplicationToJson"
provides="plone.server.json.interfaces.IResourceSerializeToJson"
provides="plone.server.interfaces.IResourceSerializeToJson"
/>

</configure>
1 change: 1 addition & 0 deletions src/plone.server/plone/server/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,7 @@ def make_app(config_file=None, settings=None):
configure.scan('..api')
configure.scan('..content')
configure.scan('..security')
configure.scan('..json')
configure.scan('..behaviors')
configure.scan('..languages')
configure.scan('..permissions')
Expand Down
2 changes: 1 addition & 1 deletion src/plone.server/plone/server/framing/schema.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from plone.server.interfaces import IRequest
from plone.server.json.interfaces import IResourceSerializeToJson
from plone.server.interfaces import IResourceSerializeToJson
from plone.server.renderers import IFrameFormatsJson
from zope.component import adapter
from zope.component import getMultiAdapter
Expand Down
10 changes: 10 additions & 0 deletions src/plone.server/plone/server/interfaces/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,17 @@
from .files import IStorage # noqa
from .files import NotStorable # noqa
from .json import IBeforeJSONAssignedEvent # noqa
from .json import IFactorySerializeToJson # noqa
from .json import IJSONField # noqa
from .json import IJSONToValue # noqa
from .json import IResourceDeserializeFromJson # noqa
from .json import IResourceFieldDeserializer # noqa
from .json import IResourceFieldSerializer # noqa
from .json import IResourceSerializeToJson # noqa
from .json import IResourceSerializeToJsonSummary # noqa
from .json import ISchemaFieldSerializeToJson # noqa
from .json import ISchemaSerializeToJson # noqa
from .json import IValueToJson # noqa
from .layer import IDefaultLayer # noqa
from .renderers import IRendererFormatHtml # noqa
from .renderers import IRendererFormatJson # noqa
Expand Down
104 changes: 104 additions & 0 deletions src/plone.server/plone/server/interfaces/json.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,107 @@ class IBeforeJSONAssignedEvent(Interface):

context = Attribute("The context object where the object will be "
"assigned to.")


class IResourceSerializeToJson(Interface):
"""Adapter to serialize a Resource into a JSON object."""

def __init__(self, context, request):
"""Adapt context and request."""

def __call__(self):
"""Return the json."""


class IResourceSerializeToJsonSummary(Interface):
"""Do a summary in JSON of the object.
Adapter to serialize an object into a JSON compatible summary that
contains only the most basic information.
"""

def __init__(self, context, request):
"""Adapt context and request."""

def __call__(self):
"""Return the json."""


class IResourceFieldSerializer(Interface):
"""Convert the field content in JSON.
The resource field serializer multi adapter serializes the field value into
JSON compatible python data.
"""

def __init__(self, field, context, request):
"""Adapt field, context and request."""

def __call__(self):
"""Return JSON compatible python data."""


class IValueToJson(Interface):
"""Convert a value to a JSON compatible data structure."""

def __init__(self, field, context, request):
"""Adapt field, context and request."""

def __call__(self):
"""Return JSON compatible python data."""


class IFactorySerializeToJson(Interface):
"""Serialize Factory in JSON.
The fieldset serializer multi adapter serializes the factory
into JSON compatible python data.
"""

def __init__(self, factory, request):
"""Adapt field, factory and request."""

def __call__(self):
"""Return JSON compatible python data."""


class ISchemaSerializeToJson(Interface):
"""Serialize Schema in JSON.
The fieldset serializer multi adapter serializes the schema
into JSON compatible python data.
"""

def __init__(self, schema, request):
"""Adapt field, schema and request."""

def __call__(self):
"""Return JSON compatible python data."""


class ISchemaFieldSerializeToJson(Interface):
"""Serialize a schema field in JSON."""

def __init__(self, field, schema, request):
"""Adapt field, schema and request."""

def __call__(self):
"""Return JSON compatible python data."""


class IResourceDeserializeFromJson(Interface):
"""An adapter to deserialize a JSON object into an object in Plone."""


class IResourceFieldDeserializer(Interface):
"""Adapter to deserialize a JSON value into a field value."""

def __init__(self, field, context, request):
"""Adapt a field, it's context and the request."""

def __call__(self, value):
"""Convert the provided JSON value to a field value."""


class IJSONToValue(Interface):
"""Adapter to transform JSON value to zope.schema value."""
9 changes: 0 additions & 9 deletions src/plone.server/plone/server/json/configure.zcml

This file was deleted.

12 changes: 6 additions & 6 deletions src/plone.server/plone/server/json/deserialize_content.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# -*- coding: utf-8 -*-
from plone.server import BEHAVIOR_CACHE
from plone.server import configure
from plone.server.content import get_cached_factory
from plone.server.directives import merged_tagged_value_dict
from plone.server.directives import write_permission
from plone.server.events import notify
from plone.server.interfaces import IResource
from plone.server.interfaces import IResourceDeserializeFromJson
from plone.server.interfaces import IResourceFieldDeserializer
from plone.server.json.exceptions import DeserializationError
from plone.server.json.interfaces import IResourceDeserializeFromJson
from plone.server.json.interfaces import IResourceFieldDeserializer
from zope.component import adapter
from zope.component import queryMultiAdapter
from zope.component import queryUtility
from zope.interface import implementer
from zope.interface import Interface
from zope.interface.exceptions import Invalid
from zope.lifecycleevent import ObjectModifiedEvent
Expand All @@ -22,8 +21,9 @@
from zope.security.interfaces import NoInteraction


@implementer(IResourceDeserializeFromJson)
@adapter(IResource, Interface)
@configure.adapter(
for_=(IResource, Interface),
provides=IResourceDeserializeFromJson)
class DeserializeFromJson(object):
def __init__(self, context, request):
self.context = context
Expand Down
10 changes: 5 additions & 5 deletions src/plone.server/plone/server/json/deserialize_content_fields.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# -*- coding: utf-8 -*-
from plone.server import configure
from plone.server.interfaces import IResourceFieldDeserializer
from plone.server.json.deserialize_value import schema_compatible
from plone.server.json.interfaces import IResourceFieldDeserializer
from zope.component import adapter
from zope.interface import implementer
from zope.interface import Interface
from zope.schema.interfaces import IField


@implementer(IResourceFieldDeserializer)
@adapter(IField, Interface, Interface)
@configure.adapter(
for_=(IField, Interface, Interface),
provides=IResourceFieldDeserializer)
class DefaultResourceFieldDeserializer(object):

def __init__(self, field, context, request):
Expand Down

0 comments on commit 9a22cba

Please sign in to comment.