X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..9716339d642d2784590d3df26aa7d8161c6c9f57:/src/dictionary/models.py diff --git a/src/dictionary/models.py b/src/dictionary/models.py index cc2b0ac51..d395b231f 100644 --- a/src/dictionary/models.py +++ b/src/dictionary/models.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. # @@ -7,10 +6,10 @@ from celery.task import task from sortify import sortify from celery.utils.log import get_task_logger -task_logger = get_task_logger(__name__) - from catalogue.models import Book +task_logger = get_task_logger(__name__) + class Qualifier(models.Model): qualifier = models.CharField(max_length=128, db_index=True, unique=True) @@ -19,7 +18,7 @@ class Qualifier(models.Model): class Meta: ordering = ['qualifier'] - def __unicode__(self): + def __str__(self): return self.name or self.qualifier @@ -37,8 +36,8 @@ class Note(models.Model): 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: @@ -47,6 +46,8 @@ class NoteSource(models.Model): @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() @@ -59,10 +60,7 @@ def build_notes(book): sort_key = sortify(text_str).strip()[:128] language = book.language - note = None - notes = Note.objects.filter(sort_key=sort_key, - fn_type=fn_type, - language=language, html=html_str) + notes = Note.objects.filter(sort_key=sort_key, fn_type=fn_type, language=language, html=html_str) if notes: note = notes[0] else: @@ -72,7 +70,6 @@ def build_notes(book): fn_type=fn_type, language=language ) - qualifier_objects = [] for qualifier in qualifiers: obj, created = Qualifier.objects.get_or_create( @@ -80,12 +77,13 @@ def build_notes(book): '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)