X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/41e79f5deff58b34f185c8c7426f505793c1d9c7..847fe6bcff6dc95e389656d78ba02372b5686b86:/apps/catalogue/models.py diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index 2008f0970..cf270f297 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -55,7 +55,7 @@ class Tag(TagBase): death = models.IntegerField(_(u'year of death'), blank=True, null=True) gazeta_link = models.CharField(blank=True, max_length=240) wiki_link = models.CharField(blank=True, max_length=240) - + categories_rev = { 'autor': 'author', 'epoka': 'epoch', @@ -117,7 +117,7 @@ class Tag(TagBase): real_tags.append(Tag.objects.exclude(category='book').get(slug=name)) except Tag.MultipleObjectsReturned, e: ambiguous_slugs.append(name) - + if category: # something strange left off raise Tag.DoesNotExist() @@ -131,13 +131,13 @@ class Tag(TagBase): return real_tags else: return TagBase.get_tag_list(tags) - + @property def url_chunk(self): return '/'.join((Tag.categories_dict[self.category], self.slug)) -# TODO: why is this hard-coded ? +# TODO: why is this hard-coded ? def book_upload_path(ext): def get_dynamic_path(book, filename): return 'lektura/%s.%s' % (book.slug, ext) @@ -171,7 +171,7 @@ class Book(models.Model): objects = models.Manager() tagged = managers.ModelTaggedItemManager(Tag) tags = managers.TagDescriptor(Tag) - + _tag_counter = JSONField(null=True, editable=False) _theme_counter = JSONField(null=True, editable=False) @@ -189,8 +189,12 @@ class Book(models.Model): def save(self, force_insert=False, force_update=False, reset_short_html=True, refresh_mp3=True): if reset_short_html: # Reset _short_html during save + update = {} for key in filter(lambda x: x.startswith('_short_html'), self.__dict__): + update[key] = '' self.__setattr__(key, '') + # Fragment.short_html relies on book's tags, so reset it here too + self.fragments.all().update(**update) book = super(Book, self).save(force_insert, force_update) @@ -210,7 +214,7 @@ class Book(models.Model): @property def name(self): return self.title - + def book_tag(self): slug = ('l-' + self.slug)[:120] book_tag, created = Tag.objects.get_or_create(slug=slug, category='book') @@ -399,8 +403,8 @@ class Book(models.Model): book.save() return book - - + + def refresh_tag_counter(self): tags = {} for child in self.children.all().order_by(): @@ -411,7 +415,7 @@ class Book(models.Model): self.set__tag_counter_value(tags) self.save(reset_short_html=False, refresh_mp3=False) return tags - + @property def tag_counter(self): if self._tag_counter is None: @@ -426,13 +430,13 @@ class Book(models.Model): self.set__theme_counter_value(tags) self.save(reset_short_html=False, refresh_mp3=False) return tags - + @property def theme_counter(self): if self._theme_counter is None: return self.refresh_theme_counter() return dict((int(k), v) for k, v in self.get__theme_counter_value().iteritems()) - + class Fragment(models.Model): @@ -460,11 +464,8 @@ class Fragment(models.Model): if short_html and len(short_html): return mark_safe(short_html) else: - book_authors = [mark_safe(u'%s' % (tag.get_absolute_url(), tag.name)) - for tag in self.book.tags if tag.category == 'author'] - setattr(self, key, unicode(render_to_string('catalogue/fragment_short.html', - {'fragment': self, 'book': self.book, 'book_authors': book_authors}))) + {'fragment': self}))) self.save() return mark_safe(getattr(self, key))