X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/18aa8ca52202003e5628a882f3469a04d905cc05..b09ddc60e118508d96906f26ecb0e1709ca89f1b:/src/lesmianator/models.py diff --git a/src/lesmianator/models.py b/src/lesmianator/models.py index fbcee049c..f4c8e3b44 100644 --- a/src/lesmianator/models.py +++ b/src/lesmianator/models.py @@ -9,14 +9,15 @@ from random import randint from django.core.files.base import ContentFile from django.db import models -from django.utils.timezone import utc +from django.utils.timezone import now from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey from django.conf import settings from django.urls import reverse -from catalogue.models import Book, Tag +from catalogue.models import Book +from social.models import UserList class Poem(models.Model): @@ -37,7 +38,7 @@ class Poem(models.Model): def visit(self): self.view_count += 1 - self.seen_at = datetime.utcnow().replace(tzinfo=utc) + self.seen_at = now() self.save() def __str__(self): @@ -138,17 +139,17 @@ class Continuations(models.Model): conts) @classmethod - def for_set(cls, tag): - books = Book.tagged_top_level([tag]) - cont_tabs = (cls.get(b) for b in books.iterator()) + def for_userlist(cls, ul): + cont_tabs = [cls.get(b) for b in ul.get_books()] + if not cont_tabs: return {} return reduce(cls.join_conts, cont_tabs) @classmethod def get(cls, sth): object_type = ContentType.objects.get_for_model(sth) should_keys = {sth.id} - if isinstance(sth, Tag): - should_keys = set(b.pk for b in Book.tagged.with_any((sth,)).iterator()) + if isinstance(sth, UserList): + should_keys = set(b.pk for b in sth.get_books()) try: obj = cls.objects.get(content_type=object_type, object_id=sth.id) if not obj.pickle: @@ -162,8 +163,8 @@ class Continuations(models.Model): except cls.DoesNotExist: if isinstance(sth, Book): conts = cls.for_book(sth) - elif isinstance(sth, Tag): - conts = cls.for_set(sth) + elif isinstance(sth, UserList): + conts = cls.for_userlist(sth) else: raise NotImplementedError('Lesmianator continuations: only Book and Tag supported')