X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/967eed676fc83d15b26149047f353ac61faa8217..beb5154606f790915bc56b9cb8af824537cc7d7a:/src/catalogue/views.py?ds=sidebyside diff --git a/src/catalogue/views.py b/src/catalogue/views.py index 5beb6dc01..632eff868 100644 --- a/src/catalogue/views.py +++ b/src/catalogue/views.py @@ -1,4 +1,3 @@ -# -*- 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. # @@ -16,10 +15,11 @@ from django.contrib.auth.decorators import login_required, user_passes_test from django.utils.http import urlquote_plus from django.utils import translation from django.utils.translation import ugettext as _, ugettext_lazy +from django.views.decorators.cache import never_cache from ajaxable.utils import AjaxableFormView +from club.models import Membership from pdcounter import views as pdcounter_views -from paypal.rest import user_is_subscribed from picture.models import Picture, PictureArea from ssify import ssi_included, ssi_expect, SsiVariable as Var from catalogue import constants @@ -307,7 +307,7 @@ def player(request, slug): def book_text(request, slug): book = get_object_or_404(Book, slug=slug) - if book.preview and not user_is_subscribed(request.user): + if book.preview and not Membership.is_active_for(request.user): return HttpResponseRedirect(book.get_absolute_url()) if not book.has_html_file(): @@ -355,15 +355,16 @@ def tag_info(request, tag_id): return HttpResponse(tag.description) -def embargo_link(request, format_, slug): +@never_cache +def embargo_link(request, key, format_, slug): book = get_object_or_404(Book, slug=slug) if format_ not in Book.formats: raise Http404 + if key != book.preview_key: + raise Http404 media_file = book.get_media(format_) if not book.preview: return HttpResponseRedirect(media_file.url) - if not user_is_subscribed(request.user): - return HttpResponseRedirect(book.get_absolute_url()) return HttpResponse(media_file, content_type=constants.EBOOK_CONTENT_TYPES[format_]) @@ -396,7 +397,7 @@ class CustomPDFFormView(AjaxableFormView): def validate_object(self, obj, request): book = obj - if book.preview and not user_is_subscribed(request.user): + if book.preview and not Membership_is_active_for(request.user): return HttpResponseRedirect(book.get_absolute_url()) return super(CustomPDFFormView, self).validate_object(obj, request) @@ -512,7 +513,7 @@ def collections(request): objects = Collection.objects.all() if len(objects) > 3: - best = random.sample(objects, 3) + best = random.sample(list(objects), 3) else: best = objects