def isbn_mobi(self):
return self.get_extra_info_json().get('isbn_mobi')
+ def is_accessible_to(self, user):
+ if not self.preview:
+ return True
+ if not user.is_authenticated:
+ return False
+ Membership = apps.get_model('club', 'Membership')
+ if Membership.is_active_for(user):
+ return True
+ Funding = apps.get_model('funding', 'Funding')
+ if Funding.objects.filter(user=user, offer__book=self):
+ return True
+ return False
def save(self, force_insert=False, force_update=False, **kwargs):
from sortify import sortify
def update_references(self):
from references.models import Entity, Reference
master = self.get_master()
+ if master is None:
+ master = []
found = set()
for i, sec in enumerate(master):
for ref in sec.findall('.//ref'):
def related_themes(self):
return Tag.objects.usage_for_queryset(
Fragment.objects.filter(models.Q(book=self) | models.Q(book__ancestor=self)),
- counts=True).filter(category='theme')
+ counts=True).filter(category='theme').order_by('-count')
def parent_cover_changed(self):
"""Called when parent book's cover image is changed."""