]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
fix conditional in separate_pages 532/head
authorFlorian Brandes <florian.brandes@posteo.de>
Fri, 8 Apr 2022 06:07:23 +0000 (08:07 +0200)
committerFlorian Brandes <florian.brandes@posteo.de>
Fri, 8 Apr 2022 06:09:48 +0000 (08:09 +0200)
add additional test for separate_pages

Signed-off-by: Florian Brandes <florian.brandes@posteo.de>
src/documents/tasks.py
src/documents/tests/test_tasks.py

index 42d50549d903c10b0904575e99cf81688b25fdec..e9a015d67d1e3135c8e025e59901f2e4eb128787 100644 (file)
@@ -137,23 +137,26 @@ def separate_pages(filepath: str, pages_to_split_on: List[int]) -> List[str]:
             dst.save(out)
         document_paths = [savepath]
 
-    for count, page_number in enumerate(pages_to_split_on):
-        logger.debug(f"Count: {str(count)} page_number: {str(page_number)}")
-        dst = Pdf.new()
-        try:
-            next_page = pages_to_split_on[count + 1]
-        except IndexError:
-            next_page = len(pdf.pages)
-        # skip the first page_number. This contains the barcode page
-        for page in range(page_number + 1, next_page):
-            logger.debug(f"page_number: {str(page_number)} next_page: {str(next_page)}")
-            dst.pages.append(pdf.pages[page])
-        output_filename = "{}_document_{}.pdf".format(fname, str(count + 1))
-        logger.debug(f"pdf no:{str(count)} has {str(len(dst.pages))} pages")
-        savepath = os.path.join(tempdir, output_filename)
-        with open(savepath, "wb") as out:
-            dst.save(out)
-        document_paths.append(savepath)
+        # iterate through the rest of the document
+        for count, page_number in enumerate(pages_to_split_on):
+            logger.debug(f"Count: {str(count)} page_number: {str(page_number)}")
+            dst = Pdf.new()
+            try:
+                next_page = pages_to_split_on[count + 1]
+            except IndexError:
+                next_page = len(pdf.pages)
+            # skip the first page_number. This contains the barcode page
+            for page in range(page_number + 1, next_page):
+                logger.debug(
+                    f"page_number: {str(page_number)} next_page: {str(next_page)}",
+                )
+                dst.pages.append(pdf.pages[page])
+            output_filename = "{}_document_{}.pdf".format(fname, str(count + 1))
+            logger.debug(f"pdf no:{str(count)} has {str(len(dst.pages))} pages")
+            savepath = os.path.join(tempdir, output_filename)
+            with open(savepath, "wb") as out:
+                dst.save(out)
+            document_paths.append(savepath)
     logger.debug(f"Temp files are {str(document_paths)}")
     return document_paths
 
index 8160dd3f3332f0d949468d1fb7d996d556417ef9..c78fa16c2f3b188f3a9166151ff3fbbebee3b4e8 100644 (file)
@@ -312,6 +312,23 @@ class TestTasks(DirectoriesMixin, TestCase):
         pages = tasks.separate_pages(test_file, [1])
         self.assertEqual(len(pages), 2)
 
+    def test_separate_pages_no_list(self):
+        test_file = os.path.join(
+            os.path.dirname(__file__),
+            "samples",
+            "barcodes",
+            "patch-code-t-middle.pdf",
+        )
+        with self.assertLogs("paperless.tasks", level="WARNING") as cm:
+            pages = tasks.separate_pages(test_file, [])
+            self.assertEqual(pages, [])
+            self.assertEqual(
+                cm.output,
+                [
+                    f"WARNING:paperless.tasks:No pages to split on!",
+                ],
+            )
+
     def test_save_to_dir(self):
         test_file = os.path.join(
             os.path.dirname(__file__),