from newtagging.models import TagBase
from newtagging import managers
-import djangosphinx
+from catalogue.fields import JSONField
from librarian import html, dcparser
('genre', _('genre')),
('theme', _('theme')),
('set', _('set')),
+ ('book', _('book')),
)
db_index=True, choices=TAG_CATEGORIES)
description = models.TextField(_('description'), blank=True)
main_page = models.BooleanField(_('main page'), default=False, db_index=True, help_text=_('Show tag on main page'))
-
+
user = models.ForeignKey(User, blank=True, null=True)
book_count = models.IntegerField(_('book count'), default=0, blank=False, null=False)
- search = djangosphinx.SphinxSearch()
-
def has_description(self):
return len(self.description) > 0
has_description.short_description = _('description')
created_at = models.DateTimeField(_('creation date'), auto_now=True)
_short_html = models.TextField(_('short HTML'), editable=False)
parent_number = models.IntegerField(_('parent number'), default=0)
+ extra_info = JSONField(_('extra information'))
# Formats
xml_file = models.FileField(_('XML file'), upload_to=book_upload_path('xml'), blank=True)
tagged = managers.ModelTaggedItemManager(Tag)
tags = managers.TagDescriptor(Tag)
- search = djangosphinx.SphinxSearch()
@property
def name(self):
if len(self._short_html):
return mark_safe(self._short_html)
else:
- tags = self.tags.filter(~Q(category__in=('set', 'theme')))
+ tags = self.tags.filter(~Q(category__in=('set', 'theme', 'book')))
tags = [u'<a href="%s">%s</a>' % (tag.get_absolute_url(), tag.name) for tag in tags]
formats = []
book_shelves = list(book.tags.filter(category='set'))
book.title = book_info.title
+ book.extra_info = book_info.to_dict()
book._short_html = ''
book.save()
tag.category = category
tag.save()
book_tags.append(tag)
+
+ book_tag, created = Tag.objects.get_or_create(slug=('l-' + book.slug)[:120])
+ if created:
+ book_tag.name = book.title[:50]
+ book_tag.sort_key = ('l-' + book.slug)[:120]
+ book_tag.category = 'book'
+ book_tag.save()
+ book_tags.append(book_tag)
+
book.tags = book_tags
if hasattr(book_info, 'parts'):
child_book.parent = book
child_book.parent_number = n
child_book.save()
-
+
+ book_descendants = list(book.children.all())
+ while len(book_descendants) > 0:
+ child_book = book_descendants.pop(0)
+ for fragment in child_book.fragments.all():
+ fragment.tags = set(list(fragment.tags) + [book_tag])
+ book_descendants += list(child_book.children.all())
+
# Save XML and HTML files
book.xml_file.save('%s.xml' % book.slug, File(file(xml_file)), save=False)
tag.save()
themes.append(tag)
new_fragment.save()
- new_fragment.tags = list(book.tags) + themes
+ new_fragment.tags = set(list(book.tags) + themes + [book_tag])
book_themes += themes
book_themes = set(book_themes)
tagged = managers.ModelTaggedItemManager(Tag)
tags = managers.TagDescriptor(Tag)
- search = djangosphinx.SphinxSearch()
-
def short_html(self):
if len(self._short_html):
return mark_safe(self._short_html)