-# -*- 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.
+# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
#
from django.db import models, transaction
-from celery.task import task
+from celery import shared_task
from sortify import sortify
from celery.utils.log import get_task_logger
class NoteSource(models.Model):
"""Represents a single annotation from a book."""
- note = models.ForeignKey(Note)
- book = models.ForeignKey(Book)
+ note = models.ForeignKey(Note, models.CASCADE)
+ book = models.ForeignKey(Book, models.CASCADE)
anchor = models.CharField(max_length=64)
class Meta:
ordering = ['book']
-@task(ignore_result=True)
+@shared_task(ignore_result=True)
def build_notes(book):
+ if not book.findable:
+ return
task_logger.info(book.slug)
with transaction.atomic():
book.notesource_set.all().delete()
fn_type=fn_type,
language=language
)
-
qualifier_objects = []
for qualifier in qualifiers:
obj, created = Qualifier.objects.get_or_create(
'name': FN_QUALIFIERS.get(qualifier, '')
})
qualifier_objects.append(obj)
- note.qualifiers = qualifier_objects
+ note.qualifiers.set(qualifier_objects)
note.notesource_set.create(book=book, anchor=anchor)
Note.objects.filter(notesource=None).delete()
def notes_from_book(sender, instance, **kwargs):
- build_notes.delay(instance)
+ if instance.findable:
+ build_notes.delay(instance)
Book.html_built.connect(notes_from_book)