98 |
98 |
self.adapt_id_and_type_plone_attributes(value)
|
99 |
99 |
elif isinstance(data, dict):
|
100 |
100 |
for key, value in list(data.items()):
|
101 |
101 |
self.adapt_id_and_type_plone_attributes(value)
|
102 |
102 |
if key in self.plone_keys_to_rename and key[0] == '@':
|
103 |
103 |
data['PLONE_%s' % key[1:]] = value
|
104 |
104 |
del data[key]
|
105 |
105 |
|
106 |
|
def adapt_payload(self, payload):
|
107 |
|
# convert image format
|
|
106 |
def convert_image_format(self, payload):
|
108 |
107 |
for file_field in payload.values():
|
109 |
108 |
if isinstance(file_field, dict) and file_field.get('filename'):
|
110 |
109 |
file_field['encoding'] = 'base64'
|
111 |
110 |
file_field['data'] = file_field['content']
|
112 |
111 |
file_field['content-type'] = file_field['content_type']
|
113 |
112 |
del file_field['content']
|
114 |
113 |
|
|
114 |
def adapt_payload(self, payload):
|
|
115 |
self.convert_image_format(payload)
|
|
116 |
return payload
|
|
117 |
|
115 |
118 |
def adapt_record(
|
116 |
119 |
self,
|
117 |
120 |
record,
|
118 |
121 |
text_template='{{ id }}',
|
119 |
122 |
id_key='UID',
|
120 |
123 |
):
|
121 |
124 |
self.adapt_id_and_type_plone_attributes(record)
|
122 |
125 |
for key, value in list(record.items()):
|
... | ... | |
280 |
283 |
display_order=5,
|
281 |
284 |
)
|
282 |
285 |
def create(self, request, uri, publish=False):
|
283 |
286 |
try:
|
284 |
287 |
post_data = json_loads(request.body)
|
285 |
288 |
except ValueError as e:
|
286 |
289 |
raise ParameterTypeError(str(e))
|
287 |
290 |
post_data = unflatten(post_data)
|
288 |
|
self.adapt_payload(post_data)
|
|
291 |
post_data = self.adapt_payload(post_data)
|
289 |
292 |
response = self.request(path=uri, method='POST', json=post_data)
|
290 |
293 |
uid = response.get('UID')
|
291 |
294 |
|
292 |
295 |
review_state = None
|
293 |
296 |
if uid and bool(publish):
|
294 |
297 |
response = self.request(path='%s/%s/@workflow/publish' % (uri, uid), method='POST')
|
295 |
298 |
review_state = response.get('review_state')
|
296 |
299 |
|
... | ... | |
307 |
310 |
display_order=6,
|
308 |
311 |
)
|
309 |
312 |
def update(self, request, uid, uri=''):
|
310 |
313 |
try:
|
311 |
314 |
post_data = json_loads(request.body)
|
312 |
315 |
except ValueError as e:
|
313 |
316 |
raise ParameterTypeError(str(e))
|
314 |
317 |
post_data = unflatten(post_data)
|
315 |
|
self.adapt_payload(post_data)
|
|
318 |
post_data = self.adapt_payload(post_data)
|
316 |
319 |
self.request(path='%s/%s' % (uri, uid), method='PATCH', json=post_data)
|
317 |
320 |
return {'data': {'uid': uid, 'updated': True}}
|
318 |
321 |
|
319 |
322 |
@endpoint(
|
320 |
323 |
perm='can_access',
|
321 |
324 |
description=_('Remove'),
|
322 |
325 |
parameters={
|
323 |
326 |
'uri': {'description': _('Uri')},
|
324 |
|
-
|