From 4ac9918f152cc49badd4a359bfed41e723161cdf Mon Sep 17 00:00:00 2001
From: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Date: Wed, 5 Oct 2011 13:29:12 +0200
Subject: [PATCH] publishable setting fix

---
 apps/catalogue/models/book.py      | 1 -
 apps/catalogue/models/chunk.py     | 1 +
 apps/catalogue/models/listeners.py | 7 ++++++-
 apps/dvcs/models.py                | 4 ++--
 apps/wiki/views.py                 | 6 +++---
 5 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py
index db52128d..fb593889 100755
--- a/apps/catalogue/models/book.py
+++ b/apps/catalogue/models/book.py
@@ -42,7 +42,6 @@ class Book(models.Model):
         ordering = ['parent_number', 'title']
         verbose_name = _('book')
         verbose_name_plural = _('books')
-        permissions = [('can_pubmark', 'Can mark for publishing')]
 
 
     # Representing
diff --git a/apps/catalogue/models/chunk.py b/apps/catalogue/models/chunk.py
index 3ce20504..00e18d98 100755
--- a/apps/catalogue/models/chunk.py
+++ b/apps/catalogue/models/chunk.py
@@ -38,6 +38,7 @@ class Chunk(dvcs_models.Document):
         ordering = ['number']
         verbose_name = _('chunk')
         verbose_name_plural = _('chunks')
+        permissions = [('can_pubmark', 'Can mark for publishing')]
 
     # Representing
     # ============
diff --git a/apps/catalogue/models/listeners.py b/apps/catalogue/models/listeners.py
index 7848974f..532f1e79 100755
--- a/apps/catalogue/models/listeners.py
+++ b/apps/catalogue/models/listeners.py
@@ -40,9 +40,14 @@ def publish_listener(sender, *args, **kwargs):
 post_publish.connect(publish_listener)
 
 
+def publishable_listener(sender, *args, **kwargs):
+    sender.tree.touch()
+    sender.tree.book.touch()
+post_publishable.connect(publishable_listener)
+
+
 def listener_create(sender, instance, created, **kwargs):
     if created:
         instance.chunk_set.create(number=1, slug='1')
 models.signals.post_save.connect(listener_create, sender=Book)
 
-
diff --git a/apps/dvcs/models.py b/apps/dvcs/models.py
index 0ba8fe50..6cfda911 100644
--- a/apps/dvcs/models.py
+++ b/apps/dvcs/models.py
@@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
 from mercurial import mdiff, simplemerge
 
 from django.conf import settings
-from dvcs.signals import post_commit
+from dvcs.signals import post_commit, post_publishable
 from dvcs.storage import GzipFileSystemStorage
 
 
@@ -167,7 +167,7 @@ class Change(models.Model):
     def set_publishable(self, publishable):
         self.publishable = publishable
         self.save()
-        post_publishable(sender=self, publishable=publishable).send()
+        post_publishable.send(sender=self, publishable=publishable)
 
 
 def create_tag_model(model):
diff --git a/apps/wiki/views.py b/apps/wiki/views.py
index 2a317f25..dc2ec6f1 100644
--- a/apps/wiki/views.py
+++ b/apps/wiki/views.py
@@ -9,7 +9,7 @@ from django.http import Http404
 from django.middleware.gzip import GZipMiddleware
 from django.utils.decorators import decorator_from_middleware
 from django.utils.encoding import smart_unicode
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ugettext as _
 from django.views.decorators.http import require_POST, require_GET
 from django.views.generic.simple import direct_to_template
 
@@ -264,14 +264,14 @@ def history(request, slug, chunk=None):
                 "description": change.description,
                 "author": change.author_str(),
                 "date": change.created_at,
-                "publishable": "Publishable\n" if change.publishable else "",
+                "publishable": _("Publishable") + "\n" if change.publishable else "",
                 "tag": ',\n'.join(unicode(tag) for tag in change.tags.all()),
             })
     return JSONResponse(changes)
 
 
 @require_POST
-@ajax_require_permission('wiki.can_pubmark')
+@ajax_require_permission('catalogue.can_pubmark')
 def pubmark(request, slug, chunk=None):
     form = forms.DocumentPubmarkForm(request.POST, prefix="pubmark")
     if form.is_valid():
-- 
2.20.1