from django.db.utils import IntegrityError
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 documents.helpers import cached_in_field
from documents.managers import VisibleManager
from dvcs import models as dvcs_models
gallery_start = models.IntegerField(_('gallery start'), null=True, blank=True, default=1)
# cache
- _hidden = models.NullBooleanField(editable=False)
- _changed = models.NullBooleanField(editable=False)
- _new_publishable = models.NullBooleanField(editable=False)
+ _hidden = models.BooleanField(editable=False, null=True)
+ _changed = models.BooleanField(editable=False, null=True)
+ _new_publishable = models.BooleanField(editable=False, null=True)
# managers
objects = models.Manager()
verbose_name_plural = _('chunks')
permissions = [('can_pubmark', 'Can mark for publishing')]
+ @classmethod
+ def get_visible_for(cls, user):
+ qs = cls.objects.all()
+ if not user.is_authenticated:
+ qs = qs.filter(book__public=True)
+ return qs
+
+ @classmethod
+ def get_revisions_visible_for(cls, user):
+ qs = cls.change_model.objects.all()
+ if not user.is_authenticated:
+ qs = qs.filter(tree__book__public=True)
+ return qs
+
# Representing
# ============
def split(self, slug, title='', **kwargs):
""" Create an empty chunk after this one """
- self.book.chunk_set.filter(number__gt=self.number).update(
- number=models.F('number')+1)
+ # Single update makes unique constr choke on postgres.
+ for chunk in self.book.chunk_set.filter(number__gt=self.number).order_by('-number'):
+ chunk.number += 1
+ chunk.save()
new_chunk = None
while not new_chunk:
new_slug = self.book.make_chunk_slug(slug)