Projet

Général

Profil

0001-assets-give-asset_url-templatetag-sorl.thumbnail-opt.patch

Frédéric Péters, 02 juillet 2018 20:18

Télécharger (2,66 ko)

Voir les différences:

Subject: [PATCH] assets: give asset_url templatetag sorl.thumbnail options
 (#24943)

 combo/apps/assets/templatetags/assets.py | 34 ++++++++++++++++++------
 tests/test_public_templatetags.py        |  4 +++
 2 files changed, 30 insertions(+), 8 deletions(-)
combo/apps/assets/templatetags/assets.py
17 17
from django import template
18 18
from django.db.models.fields.files import ImageFieldFile
19 19

  
20
from sorl.thumbnail.shortcuts import get_thumbnail
21

  
20 22
from ..models import Asset
21 23

  
22 24
register = template.Library()
23 25

  
24 26

  
25 27
@register.simple_tag
26
def asset_url(*args):
27
    for asset in args:
28
        if isinstance(asset, ImageFieldFile):
28
def asset_url(*args, **kwargs):
29
    asset = None
30
    for asset_object in args:
31
        if isinstance(asset_object, ImageFieldFile):
29 32
            try:
30
                return asset.url
33
                asset_object.url
31 34
            except ValueError:  # no associated file
32 35
                continue
33
        if isinstance(asset, basestring):
36
            asset = asset_object
37
            break
38

  
39
        if isinstance(asset_object, basestring):
34 40
            try:
35
                asset = Asset.objects.get(key=asset)
41
                asset = Asset.objects.get(key=asset_object).asset
42
                break
36 43
            except Asset.DoesNotExist:
37 44
                continue
38
        return asset.asset.url
39
    return ''
45

  
46
        if isinstance(asset_object, Asset):
47
            asset = asset_object.asset
48
            break
49

  
50
    if not asset:
51
        return ''
52

  
53
    geometry_string = kwargs.pop('size', None)
54
    if not geometry_string:
55
        return asset.url
56

  
57
    return get_thumbnail(asset, geometry_string, **kwargs).url
40 58

  
41 59

  
42 60
@register.assignment_tag
tests/test_public_templatetags.py
157 157
        page.picture = File(StringIO('test'), 'test2.png')
158 158
        page.save()
159 159
        assert t.render(Context({'page': page})) == '/media/page-pictures/test2.png'
160

  
161
        # pass image to sorl.thumbnail
162
        t = Template('''{% load assets %}{% asset_url page.picture "collectivity:banner" size="200x200" %}''')
163
        assert t.render(Context()).startswith('/media/cache/')
160
-