Projet

Général

Profil

0001-general-give-assets-a-stable-URI-24676.patch

Frédéric Péters, 25 juin 2018 10:03

Télécharger (2,55 ko)

Voir les différences:

Subject: [PATCH] general: give assets a stable URI (#24676)

 combo/apps/assets/urls.py  | 1 +
 combo/apps/assets/views.py | 9 +++++++++
 tests/test_manager.py      | 3 +++
 3 files changed, 13 insertions(+)
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
-