general: give assets a stable URI (#24676)
This commit is contained in:
parent
111a5116ab
commit
8fdd36ee31
|
@ -30,6 +30,7 @@ assets_manager_urls = [
|
|||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^assets/(?P<key>[\w_:-]+)$', views.serve_asset),
|
||||
url(r'^manage/assets/', decorated_includes(manager_required,
|
||||
include(assets_manager_urls))),
|
||||
]
|
||||
|
|
|
@ -20,6 +20,7 @@ from django.conf import settings
|
|||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.files.storage import default_storage
|
||||
from django.core.urlresolvers import reverse, reverse_lazy
|
||||
from django.http import Http404
|
||||
from django.shortcuts import redirect
|
||||
from django.views.generic import TemplateView, ListView, FormView
|
||||
|
||||
|
@ -202,3 +203,11 @@ class SlotAssetDelete(TemplateView):
|
|||
return redirect(reverse('combo-manager-assets'))
|
||||
|
||||
slot_asset_delete = SlotAssetDelete.as_view()
|
||||
|
||||
|
||||
def serve_asset(request, key):
|
||||
try:
|
||||
asset = Asset.objects.get(key=key)
|
||||
return redirect(asset.asset.url)
|
||||
except (Asset.DoesNotExist, AttributeError):
|
||||
raise Http404()
|
||||
|
|
|
@ -676,6 +676,8 @@ def test_asset_slots_management(app, admin_user):
|
|||
assert '>Delete<' in resp.body
|
||||
assert Asset.objects.filter(key='collectivity:banner').count() == 1
|
||||
|
||||
assert app.get('/assets/collectivity:banner', status=302)['location'].endswith('test.png')
|
||||
|
||||
# upload a new version of image
|
||||
resp = resp.click('Overwrite')
|
||||
resp.form['upload'] = Upload('test2.png',
|
||||
|
@ -692,6 +694,7 @@ def test_asset_slots_management(app, admin_user):
|
|||
assert '>Delete<' not in resp.body
|
||||
assert Asset.objects.filter(key='collectivity:banner').count() == 0
|
||||
|
||||
resp = app.get('/assets/collectivity:banner', status=404)
|
||||
|
||||
def test_menu_json(app, admin_user):
|
||||
app.get('/manage/menu.json', status=302)
|
||||
|
|
Loading…
Reference in New Issue