Projet

Général

Profil

0001-assets-allow-ckeditor-s-media-files-serving-46262.patch

Serghei Mihai (congés, retour 15/05), 09 novembre 2020 17:52

Télécharger (2,15 ko)

Voir les différences:

Subject: [PATCH] assets: allow ckeditor's media files serving (#46262)

 combo/apps/assets/views.py | 14 ++++++++++++++
 tests/test_assets.py       |  8 ++++++++
 2 files changed, 22 insertions(+)
combo/apps/assets/views.py
59 59
    def size(self):
60 60
        return os.stat(default_storage.path(self.filepath)).st_size
61 61

  
62
    def url(self):
63
        return ckeditor.utils.get_media_url(self.filepath)
64

  
62 65
    def thumb(self):
63 66
        if getattr(settings, 'CKEDITOR_IMAGE_BACKEND', None):
64 67
            thumb = ckeditor.utils.get_media_url(
......
355 358

  
356 359

  
357 360
def serve_asset(request, key):
361

  
362
    if key.startswith('media:'):
363
        # search for file in CKEditor media
364
        for asset in CkEditorAsset.get_assets(request):
365
            if not asset.is_image():
366
                continue
367
            root, ext = os.path.splitext(asset.name)
368
            if root == key.replace('media:', ''):
369
                return redirect(asset.url())
370
        raise Http404()
371

  
358 372
    asset = get_object_or_404(Asset, key=key)
359 373

  
360 374
    if not os.path.exists(asset.asset.path):
tests/test_assets.py
143 143
def test_assets_export_size_view(app, some_assets):
144 144
    resp = app.get(reverse('combo-manager-assets-export-size'))
145 145
    assert resp.text.split() == ['(9', 'bytes)']
146

  
147

  
148
def test_serve_media_assets(app, settings):
149
    Asset(key='media:test', asset=File(BytesIO(b'test'), 'test.png')).save()
150
    resp = app.get('/assets/media:test', status=404)
151
    default_storage.save('uploads/test.png', BytesIO(b'test'))
152
    resp = app.get('/assets/media:test', status=302)
153
    assert resp.location == '/media/uploads/test.png'
146
-