diff --git a/docs/api.md b/docs/api.md index 10b6799ab..bf9e88659 100644 --- a/docs/api.md +++ b/docs/api.md @@ -54,7 +54,7 @@ fields: - `archived_file_name`: Verbose filename of the archived document. Read-only. Null if no archived document is available. - `notes`: Array of notes associated with the document. -- `pages_count`: Number of pages. +- `page_count`: Number of pages. - `set_permissions`: Allows setting document permissions. Optional, write-only. See [below](#permissions). - `custom_fields`: Array of custom fields & values, specified as diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts index a7fcd19fe..ef36b0806 100644 --- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts +++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.spec.ts @@ -65,7 +65,7 @@ const savedView: SavedView = { DisplayField.CORRESPONDENT, DisplayField.DOCUMENT_TYPE, DisplayField.STORAGE_PATH, - DisplayField.PAGES_COUNT, + DisplayField.PAGE_COUNT, `${DisplayField.CUSTOM_FIELD}11` as any, `${DisplayField.CUSTOM_FIELD}15` as any, ], @@ -345,7 +345,7 @@ describe('SavedViewWidgetComponent', () => { expect(component.getColumnTitle(DisplayField.STORAGE_PATH)).toEqual( 'Storage path' ) - expect(component.getColumnTitle(DisplayField.PAGES_COUNT)).toEqual('Pages') + expect(component.getColumnTitle(DisplayField.PAGE_COUNT)).toEqual('Pages') }) it('should get correct column title for custom field', () => { diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html index 36501253f..f60056c42 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.html @@ -111,10 +111,10 @@ } } - @if (displayFields.includes(DisplayField.PAGES_COUNT) && document.pages_count) { + @if (displayFields.includes(DisplayField.PAGE_COUNT) && document.page_count) {
- {document.pages_count, plural, =1 {1 page} other {{{document.pages_count}} pages}} + {document.page_count, plural, =1 {1 page} other {{{document.page_count}} pages}}
} @if (displayFields.includes(DisplayField.OWNER) && document.owner && document.owner !== settingsService.currentUser.id) { diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.spec.ts b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.spec.ts index 841c74643..efd5076be 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.spec.ts +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.spec.ts @@ -31,7 +31,7 @@ const doc = { correspondent: 8, document_type: 10, storage_path: null, - pages_count: 8, + page_count: 8, notes: [ { id: 11, diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html index 74ded598a..26f71ee8b 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html @@ -88,11 +88,11 @@ } - @if (displayFields.includes(DisplayField.PAGES_COUNT) && document.pages_count) { + @if (displayFields.includes(DisplayField.PAGE_COUNT) && document.page_count) {
- {document.pages_count, plural, =1 {1 page} other {{{document.pages_count}} pages}} + {document.page_count, plural, =1 {1 page} other {{{document.page_count}} pages}}
} diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts index 81892cdd6..b86453a25 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.spec.ts @@ -34,7 +34,7 @@ const doc = { correspondent: 8, document_type: 10, storage_path: null, - pages_count: 12, + page_count: 12, notes: [ { id: 11, diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html index ec2728865..8ca8e111d 100644 --- a/src-ui/src/app/components/document-list/document-list.component.html +++ b/src-ui/src/app/components/document-list/document-list.component.html @@ -246,9 +246,9 @@ (sort)="onSort($event)" i18n>Added } - @if (activeDisplayFields.includes(DisplayField.PAGES_COUNT)) { + @if (activeDisplayFields.includes(DisplayField.PAGE_COUNT)) { } - @if (activeDisplayFields.includes(DisplayField.PAGES_COUNT)) { + @if (activeDisplayFields.includes(DisplayField.PAGE_COUNT)) { - {{ d.pages_count }} + {{ d.page_count }} } @if (activeDisplayFields.includes(DisplayField.SHARED)) { diff --git a/src-ui/src/app/data/document.ts b/src-ui/src/app/data/document.ts index ffa435c49..0b630b8cd 100644 --- a/src-ui/src/app/data/document.ts +++ b/src-ui/src/app/data/document.ts @@ -26,7 +26,7 @@ export enum DisplayField { OWNER = 'owner', SHARED = 'shared', ASN = 'asn', - PAGES_COUNT = 'pagescount', + PAGE_COUNT = 'pagecount', } export const DEFAULT_DISPLAY_FIELDS = [ @@ -75,7 +75,7 @@ export const DEFAULT_DISPLAY_FIELDS = [ name: $localize`ASN`, }, { - id: DisplayField.PAGES_COUNT, + id: DisplayField.PAGE_COUNT, name: $localize`Pages`, }, ] @@ -99,7 +99,7 @@ export const DOCUMENT_SORT_FIELDS = [ { field: 'modified', name: $localize`Modified` }, { field: 'num_notes', name: $localize`Notes` }, { field: 'owner', name: $localize`Owner` }, - { field: 'pages_count', name: $localize`Pages` }, + { field: 'page_count', name: $localize`Pages` }, ] export const DOCUMENT_SORT_FIELDS_FULLTEXT = [ @@ -171,5 +171,5 @@ export interface Document extends ObjectWithPermissions { // write-only field remove_inbox_tags?: boolean - pages_count?: number + page_count?: number } diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts index 2aab40ca9..c3ea3f856 100644 --- a/src-ui/src/app/services/settings.service.ts +++ b/src-ui/src/app/services/settings.service.ts @@ -345,7 +345,7 @@ export class SettingsService { DisplayField.CREATED, DisplayField.ADDED, DisplayField.ASN, - DisplayField.PAGES_COUNT, + DisplayField.PAGE_COUNT, DisplayField.SHARED, ].includes(field.id) ) { diff --git a/src/documents/bulk_edit.py b/src/documents/bulk_edit.py index ba8e565e0..4481b2b3f 100644 --- a/src/documents/bulk_edit.py +++ b/src/documents/bulk_edit.py @@ -387,8 +387,8 @@ def delete_pages(doc_ids: list[int], pages: list[int]): pdf.remove_unreferenced_resources() pdf.save() doc.checksum = hashlib.md5(doc.source_path.read_bytes()).hexdigest() - if doc.pages_count is not None: - doc.pages_count = doc.pages_count - len(pages) + if doc.page_count is not None: + doc.page_count = doc.page_count - len(pages) doc.save() update_document_archive_file.delay(document_id=doc.id) logger.info(f"Deleted pages {pages} from document {doc.id}") diff --git a/src/documents/consumer.py b/src/documents/consumer.py index c8282fdd1..57277e4a6 100644 --- a/src/documents/consumer.py +++ b/src/documents/consumer.py @@ -586,7 +586,7 @@ class ConsumerPlugin( date = None thumbnail = None archive_path = None - pages_count = None + page_count = None try: self._send_progress( @@ -622,7 +622,7 @@ class ConsumerPlugin( ) date = parse_date(self.filename, text) archive_path = document_parser.get_archive_path() - pages_count = document_parser.get_pages_count(self.working_copy, mime_type) + page_count = document_parser.get_page_count(self.working_copy, mime_type) except ParseError as e: document_parser.cleanup() @@ -667,7 +667,7 @@ class ConsumerPlugin( document = self._store( text=text, date=date, - pages_count=pages_count, + page_count=page_count, mime_type=mime_type, ) @@ -797,7 +797,7 @@ class ConsumerPlugin( self, text: str, date: Optional[datetime.datetime], - pages_count: Optional[int], + page_count: Optional[int], mime_type: str, ) -> Document: # If someone gave us the original filename, use it instead of doc. @@ -843,7 +843,7 @@ class ConsumerPlugin( created=create_date, modified=create_date, storage_type=storage_type, - pages_count=pages_count, + page_count=page_count, original_filename=self.filename, ) diff --git a/src/documents/index.py b/src/documents/index.py index c82c8bc73..03b8c4f35 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -80,7 +80,7 @@ def get_schema(): has_owner=BOOLEAN(), viewer_id=KEYWORD(commas=True), checksum=TEXT(), - pages_count=NUMERIC(sortable=True), + page_count=NUMERIC(sortable=True), original_filename=TEXT(sortable=True), is_shared=BOOLEAN(), ) @@ -182,7 +182,7 @@ def update_document(writer: AsyncWriter, doc: Document): has_owner=doc.owner is not None, viewer_id=viewer_ids if viewer_ids else None, checksum=doc.checksum, - pages_count=doc.pages_count, + page_count=doc.page_count, original_filename=doc.original_filename, is_shared=len(viewer_ids) > 0, ) @@ -249,7 +249,7 @@ class DelayedQuery: "archive_serial_number": "asn", "num_notes": "num_notes", "owner": "owner", - "pages_count": "pages_count", + "page_count": "page_count", } if field.startswith("-"): diff --git a/src/documents/migrations/1053_document_pages_count.py b/src/documents/migrations/1053_document_page_count.py similarity index 89% rename from src/documents/migrations/1053_document_pages_count.py rename to src/documents/migrations/1053_document_page_count.py index 7e5a207f1..13549e00f 100644 --- a/src/documents/migrations/1053_document_pages_count.py +++ b/src/documents/migrations/1053_document_page_count.py @@ -15,7 +15,7 @@ def source_path(self): return Path(settings.ORIGINALS_DIR / fname).resolve() -def add_number_of_pages_to_pages_count(apps, schema_editor): +def add_number_of_pages_to_page_count(apps, schema_editor): Document = apps.get_model("documents", "Document") if not Document.objects.all().exists(): @@ -33,7 +33,7 @@ def add_number_of_pages_to_pages_count(apps, schema_editor): try: with pikepdf.Pdf.open(source_path(doc)) as pdf: if pdf.pages is not None: - doc.pages_count = len(pdf.pages) + doc.page_count = len(pdf.pages) doc.save() except Exception as e: # pragma: no cover print(f"Error retrieving number of pages for {doc.filename}: {e}") @@ -47,7 +47,7 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( model_name="document", - name="pages_count", + name="page_count", field=models.PositiveIntegerField( blank=False, null=True, @@ -56,7 +56,7 @@ class Migration(migrations.Migration): ), ), migrations.RunPython( - add_number_of_pages_to_pages_count, + add_number_of_pages_to_page_count, migrations.RunPython.noop, ), ] diff --git a/src/documents/models.py b/src/documents/models.py index fcf8ce220..772e10fde 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -205,8 +205,8 @@ class Document(SoftDeleteModel, ModelWithOwner): help_text=_("The checksum of the archived document."), ) - pages_count = models.PositiveIntegerField( - _("pages count"), + page_count = models.PositiveIntegerField( + _("page count"), blank=False, null=True, unique=False, @@ -426,7 +426,7 @@ class SavedView(ModelWithOwner): OWNER = ("owner", _("Owner")) SHARED = ("shared", _("Shared")) ASN = ("asn", _("ASN")) - PAGES_COUNT = ("pagescount", _("Pages")) + PAGE_COUNT = ("pagecount", _("Pages")) CUSTOM_FIELD = ("custom_field_%d", ("Custom Field")) name = models.CharField(_("name"), max_length=128) diff --git a/src/documents/parsers.py b/src/documents/parsers.py index 8cb744b8a..63599c0c5 100644 --- a/src/documents/parsers.py +++ b/src/documents/parsers.py @@ -367,7 +367,7 @@ class DocumentParser(LoggingMixin): def extract_metadata(self, document_path, mime_type): return [] - def get_pages_count(self, document_path, mime_type): + def get_page_count(self, document_path, mime_type): return None def parse(self, document_path, mime_type, file_name=None): diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index d1da66337..737d1256f 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -750,7 +750,7 @@ class DocumentSerializer( original_file_name = SerializerMethodField() archived_file_name = SerializerMethodField() created_date = serializers.DateField(required=False) - pages_count = SerializerMethodField() + page_count = SerializerMethodField() custom_fields = CustomFieldInstanceSerializer( many=True, @@ -771,8 +771,8 @@ class DocumentSerializer( required=False, ) - def get_pages_count(self, obj): - return obj.pages_count + def get_page_count(self, obj): + return obj.page_count def get_original_file_name(self, obj): return obj.original_filename @@ -889,7 +889,7 @@ class DocumentSerializer( "notes", "custom_fields", "remove_inbox_tags", - "pages_count", + "page_count", ) list_serializer_class = OwnedObjectListSerializer diff --git a/src/documents/tests/test_bulk_edit.py b/src/documents/tests/test_bulk_edit.py index 1f91619a6..d80116a80 100644 --- a/src/documents/tests/test_bulk_edit.py +++ b/src/documents/tests/test_bulk_edit.py @@ -389,7 +389,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): title="B", filename=sample2, mime_type="application/pdf", - pages_count=8, + page_count=8, ) self.doc2.archive_filename = sample2_archive self.doc2.save() @@ -682,19 +682,19 @@ class TestPDFActions(DirectoriesMixin, TestCase): THEN: - Save should be called once - Archive file should be updated once - - The document's pages_count should be reduced by the number of deleted pages + - The document's page_count should be reduced by the number of deleted pages """ doc_ids = [self.doc2.id] - initial_pages_count = self.doc2.pages_count + initial_page_count = self.doc2.page_count pages = [1, 3] result = bulk_edit.delete_pages(doc_ids, pages) mock_pdf_save.assert_called_once() mock_update_archive_file.assert_called_once() self.assertEqual(result, "OK") - expected_pages_count = initial_pages_count - len(pages) + expected_page_count = initial_page_count - len(pages) self.doc2.refresh_from_db() - self.assertEqual(self.doc2.pages_count, expected_pages_count) + self.assertEqual(self.doc2.page_count, expected_page_count) @mock.patch("documents.tasks.update_document_archive_file.delay") @mock.patch("pikepdf.Pdf.save") diff --git a/src/documents/tests/test_migration_document_pages_count.py b/src/documents/tests/test_migration_document_pages_count.py index 2f03e013e..e656bf1b8 100644 --- a/src/documents/tests/test_migration_document_pages_count.py +++ b/src/documents/tests/test_migration_document_pages_count.py @@ -14,9 +14,9 @@ def source_path_before(self): return os.path.join(settings.ORIGINALS_DIR, fname) -class TestMigrateDocumentPagesCount(TestMigrations): +class TestMigrateDocumentPageCount(TestMigrations): migrate_from = "1052_document_transaction_id" - migrate_to = "1053_document_pages_count" + migrate_to = "1053_document_page_count" def setUpBeforeMigration(self, apps): Document = apps.get_model("documents", "Document") @@ -31,15 +31,15 @@ class TestMigrateDocumentPagesCount(TestMigrations): source_path_before(doc), ) - def testDocumentPagesCountMigrated(self): + def testDocumentPageCountMigrated(self): Document = self.apps.get_model("documents", "Document") doc = Document.objects.get(id=self.doc_id) - self.assertEqual(doc.pages_count, 1) + self.assertEqual(doc.page_count, 1) -class TestMigrateDocumentPagesCountBackwards(TestMigrations): - migrate_from = "1053_document_pages_count" +class TestMigrateDocumentPageCountBackwards(TestMigrations): + migrate_from = "1053_document_page_count" migrate_to = "1052_document_transaction_id" def setUpBeforeMigration(self, apps): @@ -48,12 +48,12 @@ class TestMigrateDocumentPagesCountBackwards(TestMigrations): title="test1", mime_type="application/pdf", filename="file1.pdf", - pages_count=8, + page_count=8, ) self.doc_id = doc.id - def test_remove_number_of_pages_to_pages_count(self): + def test_remove_number_of_pages_to_page_count(self): Document = self.apps.get_model("documents", "Document") self.assertFalse( - "pages_count" in [field.name for field in Document._meta.get_fields()], + "page_count" in [field.name for field in Document._meta.get_fields()], ) diff --git a/src/documents/views.py b/src/documents/views.py index a25bc3f28..723eddd00 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -361,7 +361,7 @@ class DocumentViewSet( "archive_serial_number", "num_notes", "owner", - "pages_count", + "page_count", ) def get_queryset(self): diff --git a/src/paperless_tesseract/parsers.py b/src/paperless_tesseract/parsers.py index 6e6964d35..5731fe037 100644 --- a/src/paperless_tesseract/parsers.py +++ b/src/paperless_tesseract/parsers.py @@ -41,14 +41,14 @@ class RasterisedDocumentParser(DocumentParser): """ return OcrConfig() - def get_pages_count(self, document_path, mime_type): - pages_count = None + def get_page_count(self, document_path, mime_type): + page_count = None if mime_type == "application/pdf": import pikepdf with pikepdf.Pdf.open(document_path) as pdf: - pages_count = len(pdf.pages) - return pages_count + page_count = len(pdf.pages) + return page_count def extract_metadata(self, document_path, mime_type): result = [] diff --git a/src/paperless_tesseract/tests/test_parser.py b/src/paperless_tesseract/tests/test_parser.py index d90b4ea8d..45a5939ab 100644 --- a/src/paperless_tesseract/tests/test_parser.py +++ b/src/paperless_tesseract/tests/test_parser.py @@ -57,7 +57,7 @@ class TestParser(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertContainsStrings(text.strip(), ["This is a test document."]) - def test_get_pages_count(self): + def test_get_page_count(self): """ GIVEN: - PDF file with a single page @@ -69,17 +69,17 @@ class TestParser(DirectoriesMixin, FileSystemAssertsMixin, TestCase): - The method returns the correct number of pages (6) """ parser = RasterisedDocumentParser(uuid.uuid4()) - pages_count = parser.get_pages_count( + page_count = parser.get_page_count( os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"), "application/pdf", ) - self.assertEqual(pages_count, 1) + self.assertEqual(page_count, 1) - pages_count = parser.get_pages_count( + page_count = parser.get_page_count( os.path.join(self.SAMPLE_FILES, "multi-page-mixed.pdf"), "application/pdf", ) - self.assertEqual(pages_count, 6) + self.assertEqual(page_count, 6) def test_thumbnail(self): parser = RasterisedDocumentParser(uuid.uuid4())