Allow multiple sources.
[redakcja.git] / src / catalogue / models.py
index 04bbf85..be7c37f 100644 (file)
@@ -384,11 +384,8 @@ class Book(WikidataModel):
             for work_type in WorkType.objects.all()
         }
 
             for work_type in WorkType.objects.all()
         }
 
-    def scans_gallery(self):
-        bs = self.booksource_set.first()
-        if bs is None:
-            return ''
-        return bs.pk
+    def scans_galleries(self):
+        return [bs.pk for bs in self.booksource_set.all()]
 
     def is_published(self):
         return any(b.is_published() for b in self.document_books.all())
 
     def is_published(self):
         return any(b.is_published() for b in self.document_books.all())
@@ -429,6 +426,15 @@ class Book(WikidataModel):
         self._content_stats = stats
         return stats
 
         self._content_stats = stats
         return stats
 
+    @property
+    def are_sources_ready(self):
+        if not self.booksource_set.exists():
+            return False
+        for bs in self.booksource_set.all():
+            if not bs.source.has_view_files() or not bs.source.has_ocr_files() or bs.source.modified_at > bs.source.processed_at:
+                return False
+        return True
+
     chars = lambda self: self.content_stats.get('chars', '')
     chars_with_fn = lambda self: self.content_stats.get('chars_with_fn', '')
     words = lambda self: self.content_stats.get('words', '')
     chars = lambda self: self.content_stats.get('chars', '')
     chars_with_fn = lambda self: self.content_stats.get('chars_with_fn', '')
     words = lambda self: self.content_stats.get('words', '')
@@ -597,7 +603,12 @@ class BookMonthlyStats(models.Model):
 
 
 class Thema(models.Model):
 
 
 class Thema(models.Model):
-    code = models.CharField(max_length=128, unique=True)
+    code = models.CharField(
+        max_length=128, unique=True,
+        help_text='Używamy rozszerzenia <code>.WL-</code> do oznaczania własnych kodów.<br> '
+        'Przykładowo, w przypadku potrzeby stworzenia nowej kategorii „insurekcja kościuszkowska”, '
+        'można by ją utworzyć jako 3MLQ‑PL‑A.WL-A, czyli w ramach już istniejącej wyższej kategorii 3MLQ‑PL‑A „rozbiory Polski”.',
+    )
     name = models.CharField(max_length=1024)
     slug = models.SlugField(
         max_length=255, null=True, blank=True, unique=True,
     name = models.CharField(max_length=1024)
     slug = models.SlugField(
         max_length=255, null=True, blank=True, unique=True,