Projet

Général

Profil

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

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

Télécharger (2,62 ko)

Voir les différences:

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

 combo/apps/assets/urls.py  |  1 +
 combo/apps/assets/views.py | 10 ++++++++++
 tests/test_assets.py       | 10 ++++++++++
 3 files changed, 21 insertions(+)
combo/apps/assets/urls.py
34 34
]
35 35

  
36 36
urlpatterns = [
37
    url(r'^assets/media-lookup/(?P<filename>[^/+$()]+)$', views.serve_media_asset),
37 38
    url(r'^assets/(?P<key>[\w_:-]+)$', views.serve_asset),
38 39
    url(r'^manage/assets/', decorated_includes(manager_required,
39 40
        include(assets_manager_urls))),
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(
......
379 382
    return redirect(get_thumbnail(asset.asset, geometry_string, **thumb_options).url)
380 383

  
381 384

  
385
def serve_media_asset(request, filename):
386
    for asset in CkEditorAsset.get_assets(request):
387
        if asset.name == filename or os.path.splitext(asset.name)[0] == filename:
388
            return redirect(asset.url())
389
    raise Http404()
390

  
391

  
382 392
class AssetsExportSize(TemplateView):
383 393
    template_name = 'combo/manager_assets_export_size.html'
384 394

  
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
    resp = app.get('/assets/media-lookup/test', status=404)
150
    default_storage.save('uploads/test.png', BytesIO(b'test'))
151
    resp = app.get('/assets/media-lookup/test', status=302)
152
    assert resp.location == '/media/uploads/test.png'
153

  
154
    resp = app.get('/assets/media-lookup/test.png', status=302)
155
    assert resp.location == '/media/uploads/test.png'
146
-