X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/b9bf77dc8f2d4b1b64bd7a29730bec3e3f885a6e..c1755a26b0576dab27d4eb72371a5b838d0c3116:/apps/catalogue/models.py?ds=inline
diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py
index afc241ddd..22cd0ea76 100644
--- a/apps/catalogue/models.py
+++ b/apps/catalogue/models.py
@@ -174,6 +174,31 @@ class Tag(TagBase):
def url_chunk(self):
return '/'.join((Tag.categories_dict[self.category], self.slug))
+ @staticmethod
+ def tags_from_info(info):
+ from slughifi import slughifi
+ from sortify import sortify
+ meta_tags = []
+ categories = (('kinds', 'kind'), ('genres', 'genre'), ('authors', 'author'), ('epochs', 'epoch'))
+ for field_name, category in categories:
+ try:
+ tag_names = getattr(info, field_name)
+ except:
+ tag_names = [getattr(info, category)]
+ for tag_name in tag_names:
+ tag_sort_key = tag_name
+ if category == 'author':
+ tag_sort_key = tag_name.last_name
+ tag_name = ' '.join(tag_name.first_names) + ' ' + tag_name.last_name
+ tag, created = Tag.objects.get_or_create(slug=slughifi(tag_name), category=category)
+ if created:
+ tag.name = tag_name
+ tag.sort_key = sortify(tag_sort_key.lower())
+ tag.save()
+ meta_tags.append(tag)
+ return meta_tags
+
+
def get_dynamic_path(media, filename, ext=None, maxlen=100):
from slughifi import slughifi
@@ -481,7 +506,7 @@ class Book(models.Model):
formats = []
# files generated during publication
if self.has_media("html"):
- formats.append(u'%s' % (reverse('book_text', [self.fileid()]), _('Read online')))
+ formats.append(u'%s' % (reverse('book_text', args=[self.fileid()]), _('Read online')))
if self.has_media("pdf"):
formats.append(u'PDF' % self.get_media('pdf').url)
if self.has_media("mobi"):
@@ -731,7 +756,6 @@ class Book(models.Model):
def from_text_and_meta(cls, raw_file, book_info, overwrite=False,
build_epub=True, build_txt=True, build_pdf=True, build_mobi=True):
import re
- from slughifi import slughifi
from sortify import sortify
# check for parts before we do anything
@@ -766,24 +790,7 @@ class Book(models.Model):
book.set_extra_info_value(book_info.to_dict())
book.save()
- meta_tags = []
- categories = (('kinds', 'kind'), ('genres', 'genre'), ('authors', 'author'), ('epochs', 'epoch'))
- for field_name, category in categories:
- try:
- tag_names = getattr(book_info, field_name)
- except:
- tag_names = [getattr(book_info, category)]
- for tag_name in tag_names:
- tag_sort_key = tag_name
- if category == 'author':
- tag_sort_key = tag_name.last_name
- tag_name = ' '.join(tag_name.first_names) + ' ' + tag_name.last_name
- tag, created = Tag.objects.get_or_create(slug=slughifi(tag_name), category=category)
- if created:
- tag.name = tag_name
- tag.sort_key = sortify(tag_sort_key.lower())
- tag.save()
- meta_tags.append(tag)
+ meta_tags = Tag.tags_from_info(book_info)
book.tags = set(meta_tags + book_shelves)