# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
+from django.apps import apps
from django.contrib.sites.models import Site
from django.db import models, transaction
from django.template.loader import render_to_string
gallery = models.CharField(_('scan gallery name'), max_length=255, blank=True)
project = models.ForeignKey(Project, models.SET_NULL, null=True, blank=True)
- #wl_slug = models.CharField(_('title'), max_length=255, null=True, db_index=True, editable=False)
parent = models.ForeignKey('self', models.SET_NULL, null=True, blank=True, verbose_name=_('parent'), related_name="children", editable=False)
parent_number = models.IntegerField(_('parent number'), null=True, blank=True, db_index=True, editable=False)
# Cache
- _single = models.NullBooleanField(editable=False, db_index=True)
- _new_publishable = models.NullBooleanField(editable=False)
- _published = models.NullBooleanField(editable=False)
+ _single = models.BooleanField(editable=False, null=True, db_index=True)
+ _new_publishable = models.BooleanField(editable=False, null=True)
+ _published = models.BooleanField(editable=False, null=True)
_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_slug = models.CharField(max_length=128, null=True, blank=True,
- editable=False, db_index=True)
+ catalogue_book = models.ForeignKey(
+ 'catalogue.Book',
+ models.DO_NOTHING,
+ to_field='slug',
+ null=True, blank=True,
+ db_constraint=False,
+ editable=False, db_index=True,
+ related_name='document_books',
+ related_query_name='document_book',
+ )
class NoTextError(BaseException):
pass
verbose_name = _('book')
verbose_name_plural = _('books')
+ @classmethod
+ def get_visible_for(cls, user):
+ qs = cls.objects.all()
+ if not user.is_authenticated:
+ qs = qs.filter(public=True)
+ return qs
# Representing
# ============
def refresh_dc_cache(self):
update = {
- 'dc_slug': None,
+ 'catalogue_book_id': None,
'dc_cover_image': None,
}
info = self.book_info()
if info is not None:
- update['dc_slug'] = info.url.slug
+ update['catalogue_book_id'] = info.url.slug
if info.cover_source:
try:
image = Image.objects.get(pk=int(info.cover_source.rstrip('/').rsplit('/', 1)[-1]))