0001-general-give-assets-a-stable-URI-24676.patch
combo/apps/assets/urls.py | ||
---|---|---|
30 | 30 |
] |
31 | 31 | |
32 | 32 |
urlpatterns = [ |
33 |
url(r'^assets/(?P<key>[\w_:-]+)$', views.serve_asset), |
|
33 | 34 |
url(r'^manage/assets/', decorated_includes(manager_required, |
34 | 35 |
include(assets_manager_urls))), |
35 | 36 |
] |
combo/apps/assets/views.py | ||
---|---|---|
20 | 20 |
from django.core.exceptions import PermissionDenied |
21 | 21 |
from django.core.files.storage import default_storage |
22 | 22 |
from django.core.urlresolvers import reverse, reverse_lazy |
23 |
from django.http import Http404 |
|
23 | 24 |
from django.shortcuts import redirect |
24 | 25 |
from django.views.generic import TemplateView, ListView, FormView |
25 | 26 | |
... | ... | |
202 | 203 |
return redirect(reverse('combo-manager-assets')) |
203 | 204 | |
204 | 205 |
slot_asset_delete = SlotAssetDelete.as_view() |
206 | ||
207 | ||
208 |
def serve_asset(request, key): |
|
209 |
try: |
|
210 |
asset = Asset.objects.get(key=key) |
|
211 |
return redirect(asset.asset.url) |
|
212 |
except (Asset.DoesNotExist, AttributeError): |
|
213 |
raise Http404() |
tests/test_manager.py | ||
---|---|---|
676 | 676 |
assert '>Delete<' in resp.body |
677 | 677 |
assert Asset.objects.filter(key='collectivity:banner').count() == 1 |
678 | 678 | |
679 |
assert app.get('/assets/collectivity:banner', status=302)['location'].endswith('test.png') |
|
680 | ||
679 | 681 |
# upload a new version of image |
680 | 682 |
resp = resp.click('Overwrite') |
681 | 683 |
resp.form['upload'] = Upload('test2.png', |
... | ... | |
692 | 694 |
assert '>Delete<' not in resp.body |
693 | 695 |
assert Asset.objects.filter(key='collectivity:banner').count() == 0 |
694 | 696 | |
697 |
resp = app.get('/assets/collectivity:banner', status=404) |
|
695 | 698 | |
696 | 699 |
def test_menu_json(app, admin_user): |
697 | 700 |
app.get('/manage/menu.json', status=302) |
698 |
- |