update translation
[redakcja.git] / apps / catalogue / models / document.py
index d58a4d1..ef5a5cc 100755 (executable)
@@ -10,6 +10,7 @@ from django.conf import settings
 from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
 from django.db import models
 from django.template.loader import render_to_string
+from django.utils.encoding import force_unicode
 from django.utils.translation import ugettext_lazy as _
 from dvcs.models import Ref
 from organizations.models import Organization
@@ -22,10 +23,12 @@ class Document(Ref):
 
     owner_user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
     owner_organization = models.ForeignKey(Organization, null=True)
-    stage = models.CharField(_('stage'), max_length=128, blank=True, default=STAGES[0])
+    stage = models.CharField(_('stage'), max_length=128, blank=True, default=STAGES[0][0])
     assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, related_name='assignments')
     deleted = models.BooleanField(default=False)
-    tags = models.ManyToManyField(Tag)
+    tags = models.ManyToManyField(Tag, blank=True)
+    # we need to know if it were ever published (for notifications)
+    published = models.BooleanField(default=False)
 
     # Where to cache searchable stuff from metadata?
     # Probably in some kind of search index.
@@ -70,6 +73,8 @@ class Document(Ref):
         return metadata
 
     def can_edit(self, user):
+        if user.is_superuser:
+            return True
         if self.owner_user:
             return self.owner_user == user
         else:
@@ -84,6 +89,9 @@ class Document(Ref):
             self.assigned_to = None
         self.save()
 
+    def stage_name(self):
+        return force_unicode(dict(STAGES)[self.stage]) if self.stage else None
+
     def get_plan(self):
         try:
             plan = self.plan_set.get(stage=self.stage)