from catalogue.fields import EbookField
from catalogue.models import Tag, Fragment, BookMedia
from catalogue.utils import create_zip, gallery_url, gallery_path
+from catalogue.models.tag import prefetched_relations
from catalogue import app_settings
from catalogue import tasks
from wolnelektury.utils import makedirs
def authors(self):
return self.tags.filter(category='author')
+ def tag_unicode(self, category):
+ relations = prefetched_relations(self, category)
+ if relations:
+ return ', '.join(rel.tag.name for rel in relations)
+ else:
+ return ', '.join(self.tags.filter(category=category).values_list('name', flat=True))
+
def author_unicode(self):
- return ", ".join(self.authors().values_list('name', flat=True))
+ return self.tag_unicode('author')
def save(self, force_insert=False, force_update=False, **kwargs):
from sortify import sortify
for child in notify_cover_changed:
child.parent_cover_changed()
+ book.save() # update sort_key_author
cls.published.send(sender=cls, instance=book)
return book
names = [tag[0] for tag in names]
return ', '.join(names)
+ def publisher(self):
+ publisher = self.extra_info['publisher']
+ if isinstance(publisher, basestring):
+ return publisher
+ elif isinstance(publisher, list):
+ return ', '.join(publisher)
+
@classmethod
def tagged_top_level(cls, tags):
""" Returns top-level books tagged with `tags`.