diff --git a/.github/workflows/dev-test.yml b/.github/workflows/dev-test.yml index 0528d799..247a6e06 100644 --- a/.github/workflows/dev-test.yml +++ b/.github/workflows/dev-test.yml @@ -86,11 +86,10 @@ jobs: DATABASE_URL: postgres://user:password@localhost:5432/readux DJANGO_ENV: test run: | - pytest apps/iiif/ --cov-report html --cov-report term --cov=./apps/iiif - pytest apps/export/ --cov-report html --cov-report term --cov=./apps/export - pytest apps/ingest/ --cov-report html --cov-report term --cov=./apps/ingest - pytest apps/readux/ --cov-report html --cov-report term --cov=./apps/readux - pytest apps/users/ --cov-report html --cov-report term --cov=./apps/users + pytest apps/iiif/ + pytest apps/ingest/ + pytest apps/readux/ + pytest apps/users/ - name: Test Webpack build run: | diff --git a/apps/ingest/models.py b/apps/ingest/models.py index 584a1796..bf4d0384 100644 --- a/apps/ingest/models.py +++ b/apps/ingest/models.py @@ -293,7 +293,8 @@ def create_canvases(self): task_id=ocr_task_id, task_result=ocr_task_result, task_creator=self.creator, - filename=canvas.ocr_file_path + filename=canvas.ocr_file_path, + associated_manifest=self.manifest ) # Request the thumbnail so a cached version is created on IIIF server. @@ -624,7 +625,8 @@ def create_canvases_for(self, pid): task_id=ocr_task_id, task_result=ocr_task_result, task_creator=self.creator, - filename=canvas.ocr_file_path + filename=canvas.ocr_file_path, + associated_manifest=manifest ) # Request the thumbnail so a cached version is created on IIIF server. diff --git a/apps/ingest/services.py b/apps/ingest/services.py index d22833cc..3af4ab6e 100644 --- a/apps/ingest/services.py +++ b/apps/ingest/services.py @@ -10,6 +10,7 @@ def clean_metadata(metadata): + print(metadata) """Remove keys that do not align with Manifest fields. :param metadata: @@ -17,17 +18,26 @@ def clean_metadata(metadata): :return: Dictionary with keys matching Manifest fields :rtype: dict """ - metadata = {k.casefold().replace(' ', '_'): v for k, v in metadata.items()} + metadata = {key.casefold().replace(' ', '_'): value for key, value in metadata.items()} fields = [f.name for f in Manifest._meta.get_fields()] invalid_keys = [] for key in metadata.keys(): + if key != 'metadata' and isinstance(metadata[key], list): + if isinstance(metadata[key][0], dict): + for meta_key in metadata[key][0].keys(): + if 'value' in meta_key: + metadata[key] = metadata[key][0][meta_key] + else: + metadata[key] = ', '.join(metadata[key]) if key not in fields: invalid_keys.append(key) for invalid_key in invalid_keys: metadata.pop(invalid_key) + + return metadata def create_manifest(ingest): diff --git a/apps/ingest/tests/test_remote.py b/apps/ingest/tests/test_remote.py index c6a7e8e4..630d8071 100644 --- a/apps/ingest/tests/test_remote.py +++ b/apps/ingest/tests/test_remote.py @@ -96,6 +96,7 @@ def test_heidelberg_manifest(self): assert remote.metadata['summary'] == "Nvovi Disegni Dell' Architettvre, E Piante De Palazzi Di Roma De Piv Celebri Architetti; Universitätsbibliothek Heidelberg, C 6426-2-10 GROSS RES" assert remote.metadata['viewingdirection'] == 'left-to-right' assert remote.metadata['logo_url'] == 'https://www.ub.uni-heidelberg.de/nav4/grafik/layout/ub_logo2.gif' + assert remote.metadata['author'] == 'Ferrerio, Pietro; Rossi, Giovanni Giacomo de [Editor]' assert isinstance(remote.metadata['metadata'], list) remote.create_canvases()