Projet

Général

Profil

0001-plone_restapi-split-adapt_payload-function-62943.patch

Nicolas Roche, 18 mars 2022 16:22

Télécharger (3,22 ko)

Voir les différences:

Subject: [PATCH 1/2] plone_restapi: split adapt_payload function (#62943)

 passerelle/apps/plone_restapi/models.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
passerelle/apps/plone_restapi/models.py
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
-