Skip to content

Commit

Permalink
AQ wrap the fake DX object to fix request-based object access
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffersonBledsoe committed Jan 29, 2025
1 parent ad5c178 commit 9accdba
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions src/plone/restapi/deserializer/controlpanels/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,11 @@
from zope.schema.interfaces import ValidationError

from plone.restapi.behaviors import IBlocks
from zope.globalrequest import getRequest
from Acquisition import ImplicitAcquisitionWrapper


@implementer(IDexterityContent, IBlocks)
class FakeDXContext:
def __init__(self, request):
self.request = request
self.REQUEST = getRequest()
"""Fake DX content class, so we can re-use the DX field deserializers"""


Expand All @@ -49,7 +46,9 @@ def __call__(self, mask_validation_errors=True):
errors = []

# Make a fake context
fake_context = FakeDXContext(self.request)
fake_context = FakeDXContext()
wrapped_context = ImplicitAcquisitionWrapper(fake_context, self.context)


for name, field in getFields(self.schema).items():
field_data = schema_data.setdefault(self.schema, {})
Expand All @@ -59,7 +58,7 @@ def __call__(self, mask_validation_errors=True):

if name in data:
deserializer = queryMultiAdapter(
(field, fake_context, self.request), IFieldDeserializer
(field, wrapped_context, self.request), IFieldDeserializer
)

try:
Expand Down

0 comments on commit 9accdba

Please sign in to comment.