-# -*- coding: utf-8 -*-
# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
import logging
from random import randint
from django import template
-from django.core.urlresolvers import reverse
+from django.urls import reverse
from django.utils.cache import add_never_cache_headers
import sorl.thumbnail.default
-from ssify import ssi_variable
from catalogue.utils import split_tags
from ..engine import CustomCroppingEngine
from ..models import Picture
cropper = CustomCroppingEngine()
+
@register.inclusion_tag('picture/picture_wide.html', takes_context=True)
def picture_wide(context, picture):
context.update({
# what to do about this?
_engine = sorl.thumbnail.default.engine
sorl.thumbnail.default.engine = cropper
- coords = to_square(area.area)
+ coords = to_square(area.get_area_json())
try:
th = sorl.thumbnail.default.backend.get_thumbnail(
area.picture.image_file,
geometry,
crop="%dpx %dpx %dpx %dpx" % tuple(map(lambda d: max(0, d), tuple(coords[0] + coords[1]))))
- except Exception, e:
+ except ZeroDivisionError:
+ return ''
+ except Exception as e:
logging.exception("Error creating a thumbnail for PictureArea")
return ''
return th.url
-@ssi_variable(register, patch_response=[add_never_cache_headers])
-def picture_random_picture(request, exclude_ids, unless=None):
- if unless:
- return None
+@register.simple_tag
+def picture_random_picture(exclude_ids):
queryset = Picture.objects.exclude(pk__in=exclude_ids).exclude(image_file='')
count = queryset.count()
if count:
- return queryset[randint(0, count - 1)].pk
+ return queryset[randint(0, count - 1)]
else:
return None