X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/e0f595e44766e352edfce0aaf5d32be57f448882..refs/heads/master:/src/sources/models.py?ds=inline diff --git a/src/sources/models.py b/src/sources/models.py index 0b55c890..ed2775ef 100644 --- a/src/sources/models.py +++ b/src/sources/models.py @@ -38,6 +38,10 @@ class Source(models.Model): def get_ocr_directory(self): return f'sources/ocr/{self.pk}/' + def has_upload_files(self): + d = os.path.join(settings.MEDIA_ROOT, self.get_upload_directory()) + return os.path.isdir(d) and os.listdir(d) + def get_view_files(self): d = self.get_view_directory() return [ @@ -47,6 +51,10 @@ class Source(models.Model): )) ] + def has_view_files(self): + d = os.path.join(settings.MEDIA_ROOT, self.get_view_directory()) + return os.path.isdir(d) and os.listdir(d) + def get_ocr_files(self): d = os.path.join(settings.MEDIA_ROOT, self.get_ocr_directory()) return [ @@ -54,7 +62,12 @@ class Source(models.Model): for name in sorted(os.listdir(d)) ] + def has_ocr_files(self): + d = os.path.join(settings.MEDIA_ROOT, self.get_ocr_directory()) + return os.path.isdir(d) and os.listdir(d) + def process(self): + processed_at = now() updir = os.path.join( settings.MEDIA_ROOT, self.get_upload_directory() @@ -71,7 +84,7 @@ class Source(models.Model): self.build_view_directory(updir, d) with utils.replace_dir(ocr_dir) as d: self.build_ocr_directory(updir, d) - self.processed_at = now() + self.processed_at = processed_at self.save(update_fields=['processed_at']) def build_view_directory(self, srcpath, targetpath): @@ -106,17 +119,18 @@ class Source(models.Model): class BookSource(models.Model): book = models.ForeignKey('catalogue.Book', models.CASCADE) source = models.ForeignKey(Source, models.CASCADE) + ordering = models.IntegerField(default=1) page_start = models.IntegerField(null=True, blank=True) page_end = models.IntegerField(null=True, blank=True) class Meta: - ordering = ('page_start',) + ordering = ('ordering', 'page_start',) def __str__(self): return f'{self.source} -> {self.book}' def get_absolute_url(self): - return reverse('source_book_prepare', args=[self.pk]) + return reverse('source_book_prepare', args=[self.book.pk]) def get_view_files(self): # TODO: won't work for PDFs. @@ -138,16 +152,18 @@ class BookSource(models.Model): def get_document(self): return self.book.document_books.first() - - def prepare_document(self, user=None): + + @classmethod + def prepare_document(cls, book, user=None): DBook = apps.get_model('documents', 'Book') - texts = document.build_document_texts(self) + texts = document.build_document_texts(book) - dbook = self.get_document() + dbook = book.document_books.first() if dbook is None: dbook = DBook.create( user, texts[0], - title=self.book.title, + catalogue_book=book, + title=book.title, slug=str(uuid.uuid4()), ) else: