#
from django.apps import apps
from django.contrib.sites.models import Site
-from django.db import models, transaction
+from django.db import connection, models, transaction
from django.template.loader import render_to_string
from django.urls import reverse
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
from django.conf import settings
from slugify import slugify
_on_track = models.IntegerField(null=True, blank=True, db_index=True, editable=False)
dc_cover_image = models.ForeignKey(Image, blank=True, null=True,
db_index=True, on_delete=models.SET_NULL, editable=False)
+ dc = models.JSONField(null=True, editable=False)
catalogue_book = models.ForeignKey(
'catalogue.Book',
models.DO_NOTHING,
related_name='document_books',
related_query_name='document_book',
)
+ legimi_id = models.CharField(max_length=255, blank=True)
class NoTextError(BaseException):
pass
qs = qs.filter(public=True)
return qs
+ @staticmethod
+ def q_dc(field, field_plural, value, prefix=''):
+ if connection.features.supports_json_field_contains:
+ return models.Q(**{f'{prefix}dc__{field_plural}__contains': value})
+ else:
+ return models.Q(**{f'{prefix}dc__{field}': value})
+
+
# Representing
# ============
except IndexError:
return None
+ def last_legimi_publish(self):
+ return self.legimibookpublish_set.order_by('-created_at').first()
+
def assert_publishable(self):
assert self.chunk_set.exists(), _('No chunks in the book.')
try:
else:
if info.cover_source == image.get_full_url():
update['dc_cover_image'] = image
+ update['dc'] = info.to_dict()
Book.objects.filter(pk=self.pk).update(**update)
def touch(self):