1 from datetime import datetime, timedelta
3 import sorl.thumbnail.base
4 from sorl.thumbnail import default
5 from sorl.thumbnail.images import ImageFile
6 from sorl.thumbnail.parsers import parse_geometry
9 def tofirstdayinisoweek(year, week):
10 # from http://stackoverflow.com/questions/5882405/get-date-from-iso-week-number-in-python
11 ret = datetime.strptime('%04d-%02d-1' % (year, week), '%Y-%W-%w')
12 if datetime(year, 1, 4).isoweekday() > 4:
13 ret -= timedelta(days=7)
17 class ThumbnailBackend(sorl.thumbnail.base.ThumbnailBackend):
18 def _create_alternative_resolutions(self, source_image, geometry_string, options, name):
19 super()._create_alternative_resolutions(source_image, geometry_string, options, name)
20 # create .webp alternative, to be served to appropriate browsers
21 ratio = default.engine.get_image_ratio(source_image, options)
22 geometry = parse_geometry(geometry_string, ratio)
23 options = options.copy()
24 options['format'] = 'WEBP'
25 image = default.engine.create(source_image, geometry, options)
26 thumbnail_name = '%(file_name)s.webp' % {'file_name': name}
27 thumbnail = ImageFile(thumbnail_name, default.storage)
28 default.engine.write(image, options, thumbnail)
29 size = default.engine.get_image_size(image)
30 thumbnail.set_size(size)