0001-assets-allow-ckeditor-s-media-files-serving-46262.patch
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 |
- |