+ def fragment_data(self):
+ fragment = self.choose_fragment()
+ if fragment:
+ return {
+ 'title': fragment.book.pretty_title(),
+ 'html': re.sub('</?blockquote[^>]*>', '', fragment.get_short_text()),
+ }
+ else:
+ return None
+
+ def update_popularity(self):
+ count = self.tags.filter(category='set').values('user').order_by('user').distinct().count()
+ try:
+ pop = self.popularity
+ pop.count = count
+ pop.save()
+ except BookPopularity.DoesNotExist:
+ BookPopularity.objects.create(book=self, count=count)
+
+ def ridero_link(self):
+ return 'https://ridero.eu/%s/books/wl_%s/' % (get_language(), self.slug.replace('-', '_'))
+
+ def like(self, user):
+ from social.utils import likes, get_set, set_sets
+ if not likes(user, self):
+ tag = get_set(user, '')
+ set_sets(user, self, [tag])
+
+ def unlike(self, user):
+ from social.utils import likes, set_sets
+ if likes(user, self):
+ set_sets(user, self, [])
+
+ def full_sort_key(self):
+ return self.SORT_KEY_SEP.join((self.sort_key_author, self.sort_key, str(self.id)))
+
+ def cover_color(self):
+ return WLCover.epoch_colors.get(self.get_extra_info_json().get('epoch'), '#000000')
+
+ @cached_render('catalogue/book_mini_box.html')
+ def mini_box(self):
+ return {
+ 'book': self
+ }
+
+ @cached_render('catalogue/book_mini_box.html')
+ def mini_box_nolink(self):
+ return {
+ 'book': self,
+ 'no_link': True,
+ }