X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/132fdfbebe2016a8539792ab977e4d6eee1632f4..5e983f642ea537225bf3a20e97fca281c8fdc915:/apps/dictionary/models.py?ds=sidebyside diff --git a/apps/dictionary/models.py b/apps/dictionary/models.py new file mode 100644 index 000000000..260617927 --- /dev/null +++ b/apps/dictionary/models.py @@ -0,0 +1,30 @@ +# -*- 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. +# +from django.db import models + +from librarian import html +from sortify import sortify + +from catalogue.models import Book + + +class Note(models.Model): + book = models.ForeignKey(Book) + anchor = models.CharField(max_length=64) + html = models.TextField() + sort_key = models.CharField(max_length=128, db_index=True) + + class Meta: + ordering = ['sort_key'] + + +def notes_from_book(sender, **kwargs): + Note.objects.filter(book=sender).delete() + if sender.has_html_file: + for anchor, text_str, html_str in html.extract_annotations(sender.html_file.path): + Note.objects.create(book=sender, anchor=anchor, + html=html_str, sort_key=sortify(text_str)) + +Book.html_built.connect(notes_from_book)