assets: give asset_url templatetag sorl.thumbnail options (#24943)
This commit is contained in:
parent
3c7c7e4aab
commit
a26e3b57f5
|
@ -17,26 +17,44 @@
|
|||
from django import template
|
||||
from django.db.models.fields.files import ImageFieldFile
|
||||
|
||||
from sorl.thumbnail.shortcuts import get_thumbnail
|
||||
|
||||
from ..models import Asset
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def asset_url(*args):
|
||||
for asset in args:
|
||||
if isinstance(asset, ImageFieldFile):
|
||||
def asset_url(*args, **kwargs):
|
||||
asset = None
|
||||
for asset_object in args:
|
||||
if isinstance(asset_object, ImageFieldFile):
|
||||
try:
|
||||
return asset.url
|
||||
asset_object.url
|
||||
except ValueError: # no associated file
|
||||
continue
|
||||
if isinstance(asset, basestring):
|
||||
asset = asset_object
|
||||
break
|
||||
|
||||
if isinstance(asset_object, basestring):
|
||||
try:
|
||||
asset = Asset.objects.get(key=asset)
|
||||
asset = Asset.objects.get(key=asset_object).asset
|
||||
break
|
||||
except Asset.DoesNotExist:
|
||||
continue
|
||||
return asset.asset.url
|
||||
return ''
|
||||
|
||||
if isinstance(asset_object, Asset):
|
||||
asset = asset_object.asset
|
||||
break
|
||||
|
||||
if not asset:
|
||||
return ''
|
||||
|
||||
geometry_string = kwargs.pop('size', None)
|
||||
if not geometry_string:
|
||||
return asset.url
|
||||
|
||||
return get_thumbnail(asset, geometry_string, **kwargs).url
|
||||
|
||||
|
||||
@register.assignment_tag
|
||||
|
|
|
@ -157,3 +157,7 @@ def test_asset_template_tags():
|
|||
page.picture = File(StringIO('test'), 'test2.png')
|
||||
page.save()
|
||||
assert t.render(Context({'page': page})) == '/media/page-pictures/test2.png'
|
||||
|
||||
# pass image to sorl.thumbnail
|
||||
t = Template('''{% load assets %}{% asset_url page.picture "collectivity:banner" size="200x200" %}''')
|
||||
assert t.render(Context()).startswith('/media/cache/')
|
||||
|
|
Loading…
Reference in New Issue