From 652696394e178e34a6aab22da4cae0a3ad5051c9 Mon Sep 17 00:00:00 2001 From: Valentin Rigal <rigal@teklia.com> Date: Mon, 23 Nov 2020 13:42:22 +0000 Subject: [PATCH] Endpoint to list group memberships --- arkindex/dataimport/tests/test_imports.py | 4 +- arkindex/documents/fixtures/data.json | 1566 +++++++++-------- .../management/commands/build_fixtures.py | 19 +- arkindex/project/api_v1.py | 2 + arkindex/project/tests/__init__.py | 1 + arkindex/users/api.py | 24 +- arkindex/users/models.py | 18 + arkindex/users/serializers.py | 22 +- arkindex/users/tests/test_membership.py | 99 +- 9 files changed, 1009 insertions(+), 746 deletions(-) diff --git a/arkindex/dataimport/tests/test_imports.py b/arkindex/dataimport/tests/test_imports.py index 33fe9ab543..67b64c2442 100644 --- a/arkindex/dataimport/tests/test_imports.py +++ b/arkindex/dataimport/tests/test_imports.py @@ -186,9 +186,9 @@ class TestImports(FixtureAPITestCase): self.assertEqual(response.json(), {'creator': "User with email or id 'blabla@blabla.fr' does not exist"}) self.client.force_login(self.user) - response = self.client.get(reverse('api:import-list'), {'creator': '5'}) + response = self.client.get(reverse('api:import-list'), {'creator': '1337'}) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(response.json(), {'creator': "User with email or id '5' does not exist"}) + self.assertEqual(response.json(), {'creator': "User with email or id '1337' does not exist"}) def test_list_filter_id(self): self.client.force_login(self.user) diff --git a/arkindex/documents/fixtures/data.json b/arkindex/documents/fixtures/data.json index 5d3b2c8d43..66ca52c088 100644 --- a/arkindex/documents/fixtures/data.json +++ b/arkindex/documents/fixtures/data.json @@ -1,33 +1,33 @@ [ { "model": "dataimport.repository", - "pk": "5e396627-e235-40d5-b726-fe108be8fb1b", + "pk": "6ebe4309-aa8d-4e40-af8f-6db4a0b086f7", "fields": { "url": "http://my_repo.fake/workers/worker", "type": "worker", "hook_token": "worker-hook-token", - "credentials": "5665e36b-ae6c-4830-84ab-c283e363c1c5", + "credentials": "9fb76b0e-6529-4c2c-acc4-02d616554102", "provider_name": "GitLabProvider" } }, { "model": "dataimport.repository", - "pk": "cdb5b204-1a2a-4cd2-be2f-18987a524946", + "pk": "7a51c052-445a-4b37-80d1-2ffa8ca293b9", "fields": { "url": "http://gitlab/repo", "type": "iiif", "hook_token": "hook-token", - "credentials": "5665e36b-ae6c-4830-84ab-c283e363c1c5", + "credentials": "9fb76b0e-6529-4c2c-acc4-02d616554102", "provider_name": "GitLabProvider" } }, { "model": "dataimport.revision", - "pk": "0f0342f5-de30-435e-82e1-ae49f8ba7531", + "pk": "7a7a1e1d-d1e3-4ea8-a2bb-60ba4af7cab9", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "repo": "cdb5b204-1a2a-4cd2-be2f-18987a524946", + "repo": "7a51c052-445a-4b37-80d1-2ffa8ca293b9", "hash": "42", "message": "a", "author": "me" @@ -35,11 +35,11 @@ }, { "model": "dataimport.revision", - "pk": "8a3312dd-2bd3-4945-b698-18665e4067ee", + "pk": "ffb8a683-836f-4e6a-a59b-17062885330f", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "repo": "5e396627-e235-40d5-b726-fe108be8fb1b", + "repo": "6ebe4309-aa8d-4e40-af8f-6db4a0b086f7", "hash": "1337", "message": "My w0rk3r", "author": "Test user" @@ -47,80 +47,80 @@ }, { "model": "dataimport.worker", - "pk": "594c0947-bc77-4789-885f-d25c3f3002d6", + "pk": "1f70863f-fe00-42e9-b8b1-905fa8d88aac", "fields": { "name": "Recognizer", "slug": "reco", "type": "recognizer", - "repository": "5e396627-e235-40d5-b726-fe108be8fb1b" + "repository": "6ebe4309-aa8d-4e40-af8f-6db4a0b086f7" } }, { "model": "dataimport.worker", - "pk": "77a92b42-6ef7-4f64-a13f-91aa428c027f", + "pk": "851c8902-ca57-42ff-9f16-06b6a8317bbd", "fields": { "name": "Document layout analyser", "slug": "dla", "type": "dla", - "repository": "5e396627-e235-40d5-b726-fe108be8fb1b" + "repository": "6ebe4309-aa8d-4e40-af8f-6db4a0b086f7" } }, { "model": "dataimport.workerversion", - "pk": "6d9e758b-fc18-4c14-b0bc-94a15163625e", + "pk": "5aeac49b-03b7-4c1c-8593-9d2e27b6a6df", "fields": { - "worker": "594c0947-bc77-4789-885f-d25c3f3002d6", - "revision": "8a3312dd-2bd3-4945-b698-18665e4067ee", + "worker": "851c8902-ca57-42ff-9f16-06b6a8317bbd", + "revision": "ffb8a683-836f-4e6a-a59b-17062885330f", "configuration": { "test": 42 }, "state": "available", - "docker_image": "462af040-499c-4b7b-85d1-25d2d1b349e8", + "docker_image": "b795d482-d08d-4599-ae82-db16ea4331e8", "docker_image_iid": null } }, { "model": "dataimport.workerversion", - "pk": "b0aa5214-ac0f-48b8-800a-e8a66545e0fd", + "pk": "db7dc219-1cc6-4f2a-a372-14a42e76cf0d", "fields": { - "worker": "77a92b42-6ef7-4f64-a13f-91aa428c027f", - "revision": "8a3312dd-2bd3-4945-b698-18665e4067ee", + "worker": "1f70863f-fe00-42e9-b8b1-905fa8d88aac", + "revision": "ffb8a683-836f-4e6a-a59b-17062885330f", "configuration": { "test": 42 }, "state": "available", - "docker_image": "462af040-499c-4b7b-85d1-25d2d1b349e8", + "docker_image": "b795d482-d08d-4599-ae82-db16ea4331e8", "docker_image_iid": null } }, { "model": "documents.corpus", - "pk": "0549780c-bce1-445e-8f07-7e32889fe71e", + "pk": "dab98946-799e-415f-abcb-869cf1bda854", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", "name": "Unit Tests", "description": "", - "repository": "cdb5b204-1a2a-4cd2-be2f-18987a524946", + "repository": "7a51c052-445a-4b37-80d1-2ffa8ca293b9", "public": true } }, { "model": "documents.elementtype", - "pk": "3536ef92-ad56-4b63-b243-d71afc4fdded", + "pk": "46ea8eee-f118-4706-a288-084bb64bcee0", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "slug": "volume", - "display_name": "Volume", - "folder": true, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "slug": "surface", + "display_name": "Surface", + "folder": false, "allowed_transcription": null } }, { "model": "documents.elementtype", - "pk": "419898d9-287c-48fb-9fce-22dc237bec14", + "pk": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", "slug": "word", "display_name": "Word", "folder": false, @@ -129,9 +129,9 @@ }, { "model": "documents.elementtype", - "pk": "433202e9-f8c1-4f76-9b65-7fff323798b2", + "pk": "729a81f4-e38e-4e79-b2dc-eafbd00b447e", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", "slug": "act", "display_name": "Act", "folder": false, @@ -140,316 +140,316 @@ }, { "model": "documents.elementtype", - "pk": "611f5a3e-1137-4984-b27c-a07d3c7ff728", + "pk": "7b5938ee-dc1e-4e37-890a-1e5988e99099", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "slug": "text_line", - "display_name": "Line", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "slug": "page", + "display_name": "Page", "folder": false, - "allowed_transcription": "line" + "allowed_transcription": null } }, { "model": "documents.elementtype", - "pk": "68ac563f-b627-4f16-b941-f3a136a0ed26", + "pk": "97ec5a9a-06fc-4d72-8a11-f107b76af6f2", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "slug": "page", - "display_name": "Page", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "slug": "text_line", + "display_name": "Line", "folder": false, - "allowed_transcription": null + "allowed_transcription": "line" } }, { "model": "documents.elementtype", - "pk": "bff5642d-b6a9-4856-bc8f-1c01cb58c0b0", + "pk": "dc3affbd-6a01-4aea-abce-c9f322698254", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "slug": "surface", - "display_name": "Surface", - "folder": false, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "slug": "volume", + "display_name": "Volume", + "folder": true, "allowed_transcription": null } }, { "model": "documents.elementpath", - "pk": "1010dfe8-1285-44d7-9c2e-f1e5f212b218", + "pk": "0aacf1f9-41d7-4dfc-9d2a-b903e63f035d", "fields": { - "element": "19dfd0e1-1517-4674-8d28-0b0d402afce6", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 4 + "element": "a1c3c97c-2240-4c00-961e-12ca69b627a0", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 1 } }, { "model": "documents.elementpath", - "pk": "1a10ea74-7d77-497f-8ecb-7cfb71711a8d", + "pk": "134b9415-c240-4d55-beb0-9adec4b138f8", "fields": { - "element": "550014fa-b5b4-46ee-b70d-7c00bb913ac7", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 1 + "element": "525de37a-190f-4760-b831-4bf9bd4909f5", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "1f1affd5-6ea3-4200-9b17-cdbce7ea367d", + "pk": "32b3ceb2-a64e-48d6-9429-8b5acdb953a5", "fields": { - "element": "ed7a03cb-199f-4b54-b659-9567703cd361", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"ad7283c3-6643-49e2-a966-2e5c55cf4638\"]", + "element": "bcfc8f66-d7a5-48bb-a17e-f08b209911c0", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"bf4d6982-d8c0-4b81-8f49-3352d2ac90ee\"]", "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "235ba787-53d5-460a-94ec-6de1db578d4b", + "pk": "50d6646e-c7e3-4c02-a843-aa66abcbc264", "fields": { - "element": "c0007432-82e1-4420-8075-173af982ba6f", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"4ad6a90c-f4ba-48e5-91ce-14d3bd3c6ba3\"]", + "element": "edb4eec4-4860-446a-977e-acf83c031df9", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"1b2a3adb-3740-49d3-95e7-ce14dfc7da93\"]", "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "29424414-5fbf-480e-b61b-1e2a109f8bf2", + "pk": "5e770ea3-3e6f-4f9c-b433-92b2c86da2c8", "fields": { - "element": "69a25981-0e8e-4cf3-93a0-9a5c17030f4f", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"e6b3aed3-c443-4df2-98c2-f7da41eaceec\"]", - "ordering": 2 + "element": "0f83e510-f4f6-4048-86a4-f314c7f88223", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 4 } }, { "model": "documents.elementpath", - "pk": "2faf7133-54c1-46fd-b4f0-3498984d4a1a", + "pk": "5e802dbb-4877-410a-b136-52c9438d03d5", "fields": { - "element": "c7295c75-b855-4b70-9475-a00e7ef9a572", - "path": "[\"3df1ce74-6f2d-473d-bd0d-b20bf6b913ef\"]", - "ordering": 2 + "element": "e9e92536-f98a-4dad-bb7e-0aa7e486b894", + "path": "[\"bb910784-dcb4-4b26-aab0-916313c3eb91\"]", + "ordering": 1 } }, { "model": "documents.elementpath", - "pk": "31640292-df9c-4101-b4c0-1179e6152a4d", + "pk": "6ec3009d-e3ec-41dd-9f27-291f2aeca87b", "fields": { - "element": "9433969b-792e-44bf-93ad-db17c6bcd3de", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"19dfd0e1-1517-4674-8d28-0b0d402afce6\"]", - "ordering": 0 + "element": "408ff192-649a-4f93-9a1a-0603641b4725", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 2 } }, { "model": "documents.elementpath", - "pk": "4a36de70-76b4-4671-819f-39f7a881a661", + "pk": "6fa0b074-35f6-44f2-bf90-585c410cf550", "fields": { - "element": "28ce8c14-2514-4fd5-bd6f-bd7fb668e36a", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"bee8c02b-98f6-4185-9897-762b62f73b3b\"]", + "element": "6e829b5f-2f51-4c93-babb-418d5f01c8b0", + "path": "[\"bb910784-dcb4-4b26-aab0-916313c3eb91\"]", "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "5275e23b-de55-4fc4-8d5f-b3a07d803aa4", + "pk": "73da7671-4e08-478a-9b89-066e5428ac58", "fields": { - "element": "816b5708-411d-4763-b03b-66ef5a3531d6", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"84013d64-a85b-47c7-b734-722de1ae0d4b\"]", - "ordering": 1 + "element": "a965eed2-b66c-41ec-b8fe-a9fab12eee9e", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"bf4d6982-d8c0-4b81-8f49-3352d2ac90ee\"]", + "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "60a579da-f473-4519-ac0a-4ca681be33d5", + "pk": "74b57d81-ebf5-4135-a82b-6aabc4e74840", "fields": { - "element": "de4cd51c-3f98-4b97-92c7-fd8b7c15feea", - "path": "[\"3df1ce74-6f2d-473d-bd0d-b20bf6b913ef\"]", + "element": "eb3bb68f-918b-4b90-90f2-27df023e4772", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"a1c3c97c-2240-4c00-961e-12ca69b627a0\"]", "ordering": 1 } }, { "model": "documents.elementpath", - "pk": "6176fe99-ca33-4fa3-aaa9-2af038475466", + "pk": "8370b7f0-be3b-4e83-937b-b7b383485536", "fields": { - "element": "bee8c02b-98f6-4185-9897-762b62f73b3b", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 2 + "element": "af5f778a-0b86-4422-8594-91de359aa795", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"525de37a-190f-4760-b831-4bf9bd4909f5\"]", + "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "6a8148b3-f9d3-4179-bd61-4e368c7afdb5", + "pk": "8c278e8f-8690-4e6f-adf2-560de42e18de", "fields": { - "element": "4721e07a-2d53-4066-85a5-1c3a99e0840a", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"4ad6a90c-f4ba-48e5-91ce-14d3bd3c6ba3\"]", - "ordering": 2 + "element": "1b2a3adb-3740-49d3-95e7-ce14dfc7da93", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 3 } }, { "model": "documents.elementpath", - "pk": "76ee2d3a-7509-4cb4-ad96-ed4ea18a174e", + "pk": "90949826-ca71-42cc-ad6e-3c3c91563f3f", "fields": { - "element": "ef787c30-b839-43f3-8a5e-cc87498cffd1", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"facee923-af23-4d71-8882-b20d621a66fd\"]", + "element": "2b33730b-a381-4a99-9463-b4faeb9bfde2", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"ce0dc249-37ee-4e2e-89a4-d1383b25ff8c\"]", "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "814eb8ab-4cef-4fd0-8fe7-8265529bc5c7", + "pk": "93a66f20-d5de-4588-b198-20aa3dfb4fc2", "fields": { - "element": "c143d67e-aed5-4404-aa76-f47605dbf919", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"550014fa-b5b4-46ee-b70d-7c00bb913ac7\"]", - "ordering": 2 + "element": "ce0dc249-37ee-4e2e-89a4-d1383b25ff8c", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 1 } }, { "model": "documents.elementpath", - "pk": "8313a9af-2c02-42c8-869e-d9de2ccaa420", + "pk": "95cafbdd-7201-41b0-aeca-76580be557c0", "fields": { - "element": "f7921f4f-be7b-4e41-9c27-37447d9f622c", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"550014fa-b5b4-46ee-b70d-7c00bb913ac7\"]", - "ordering": 1 + "element": "a22c9f39-95df-45de-98b9-59a9f358611d", + "path": "[\"bb910784-dcb4-4b26-aab0-916313c3eb91\"]", + "ordering": 2 } }, { "model": "documents.elementpath", - "pk": "92d7e7aa-b8a9-47c5-a85f-2fe4afff5eb2", + "pk": "9e3798f8-c75a-4a5e-a989-a39c1dc43213", "fields": { - "element": "2ea41a99-a805-4364-966d-60761d28dcb4", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"84013d64-a85b-47c7-b734-722de1ae0d4b\"]", - "ordering": 0 + "element": "d489659c-9c67-4fb9-8758-cf70f6750e18", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"408ff192-649a-4f93-9a1a-0603641b4725\"]", + "ordering": 1 } }, { "model": "documents.elementpath", - "pk": "9c737671-d173-4667-bf84-4d791c0e84d2", + "pk": "a0c38196-4285-452b-9956-31edf88714ea", "fields": { - "element": "0e7121f8-efdd-4ef8-b5a7-ca5b4457e83c", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"e6b3aed3-c443-4df2-98c2-f7da41eaceec\"]", + "element": "2b269b30-fda3-4630-9784-b1c3b9a0d77f", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"bf4d6982-d8c0-4b81-8f49-3352d2ac90ee\"]", "ordering": 1 } }, { "model": "documents.elementpath", - "pk": "9fce56f4-7f1a-4740-9eb7-e2875e5ca4a2", + "pk": "b1d6b0a2-b1ee-4b89-b4fb-7b93f63b6aad", "fields": { - "element": "1477b9c2-dedf-4d44-b4bd-b1162cf8a998", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"4ad6a90c-f4ba-48e5-91ce-14d3bd3c6ba3\"]", - "ordering": 1 + "element": "9c860370-6242-4ef9-87ea-351caa3a22e4", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"408ff192-649a-4f93-9a1a-0603641b4725\"]", + "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "a1448951-4d6f-4c6a-b34c-682deee5849f", + "pk": "b46d58cd-4f4b-4731-99b6-447a6373a391", "fields": { - "element": "4ad6a90c-f4ba-48e5-91ce-14d3bd3c6ba3", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 2 + "element": "651fd593-e5ef-4f9a-b5cf-75630a5a0eb3", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"1a9d2c4e-9bf8-4c14-896f-b498de08a082\"]", + "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "d0013169-fb83-437a-b77f-220cfc541b15", + "pk": "b710f950-71eb-46ac-b24e-18df836993a1", "fields": { - "element": "e6b3aed3-c443-4df2-98c2-f7da41eaceec", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 0 + "element": "adfcdb63-1bec-4b44-a855-3dd765dda5d8", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"408ff192-649a-4f93-9a1a-0603641b4725\"]", + "ordering": 2 } }, { "model": "documents.elementpath", - "pk": "d267f759-8b50-41ff-9878-b266d1883570", + "pk": "cf828aca-1205-4407-b261-87f3bf8d767e", "fields": { - "element": "facee923-af23-4d71-8882-b20d621a66fd", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 0 + "element": "03e444f2-63ca-47ae-9928-efd8c790a485", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"ce0dc249-37ee-4e2e-89a4-d1383b25ff8c\"]", + "ordering": 1 } }, { "model": "documents.elementpath", - "pk": "e965bc59-8a71-46e9-9a99-bacc9376d94a", + "pk": "d17a8748-6fbb-4d09-a2c5-ee452d854208", "fields": { - "element": "71c62984-5fec-4f8c-b821-8cd8c1349a72", - "path": "[\"3df1ce74-6f2d-473d-bd0d-b20bf6b913ef\"]", - "ordering": 0 + "element": "03d374b1-6560-438c-9fde-4e88051ab3e1", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"a1c3c97c-2240-4c00-961e-12ca69b627a0\"]", + "ordering": 2 } }, { "model": "documents.elementpath", - "pk": "edd68d22-aa3c-4ed0-b605-e6ae63aa8432", + "pk": "d1a5a6a4-7f2e-4c5a-bb16-a4909f081bb9", "fields": { - "element": "84013d64-a85b-47c7-b734-722de1ae0d4b", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 1 + "element": "e4205894-9169-4fee-9823-e0bbc61e8724", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"bf4d6982-d8c0-4b81-8f49-3352d2ac90ee\"]", + "ordering": 2 } }, { "model": "documents.elementpath", - "pk": "f116e2b6-e1b4-4afa-901e-c040e2e58595", + "pk": "e4dfe612-52d5-4828-b60d-97cb7c4572dc", "fields": { - "element": "de16de7e-79a5-42a7-94de-6a61d04ee721", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"e6b3aed3-c443-4df2-98c2-f7da41eaceec\"]", + "element": "f2be38ee-c57c-4935-bf40-c15723f4e793", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"0f83e510-f4f6-4048-86a4-f314c7f88223\"]", "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "f43a5721-6c09-428c-93dc-93ec49d0ff9c", + "pk": "ec4d9260-038d-480c-b089-10ceed6b009d", "fields": { - "element": "69b51bc9-1d7d-4c9d-9289-9fb837892cad", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"550014fa-b5b4-46ee-b70d-7c00bb913ac7\"]", + "element": "7393f32f-1bb4-4a00-a7e6-7a05659423ea", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\", \"a1c3c97c-2240-4c00-961e-12ca69b627a0\"]", "ordering": 0 } }, { "model": "documents.elementpath", - "pk": "f5053c64-2472-4edc-88b1-b0b9aff45939", + "pk": "f1834c5f-6535-490d-8922-b37ee621b325", "fields": { - "element": "506f4447-6bdc-4d29-9bd8-f82976116c0e", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\", \"e6b3aed3-c443-4df2-98c2-f7da41eaceec\"]", - "ordering": 0 + "element": "1a9d2c4e-9bf8-4c14-896f-b498de08a082", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 2 } }, { "model": "documents.elementpath", - "pk": "faf93d73-34c0-4faa-be3c-9755076033cf", + "pk": "f667cee8-8beb-4afe-98ce-924f8607a0eb", "fields": { - "element": "ad7283c3-6643-49e2-a966-2e5c55cf4638", - "path": "[\"afe50fbe-eb97-4366-8e18-1713aa711f4a\"]", - "ordering": 3 + "element": "bf4d6982-d8c0-4b81-8f49-3352d2ac90ee", + "path": "[\"5d4887e4-a9bd-4d75-aa82-0c63a40be1ee\"]", + "ordering": 0 } }, { "model": "documents.element", - "pk": "0e7121f8-efdd-4ef8-b5a7-ca5b4457e83c", + "pk": "03d374b1-6560-438c-9fde-4e88051ab3e1", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "ROY", - "zone": "0ce0b1e6-e1a2-45f4-93f1-f9986fd4eb2e", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "DATUM", + "zone": "8dc267fe-76ab-4e76-9b0a-3009b57b2ab2", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "1477b9c2-dedf-4d44-b4bd-b1162cf8a998", + "pk": "03e444f2-63ca-47ae-9928-efd8c790a485", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "ROY", - "zone": "8ef76685-65b7-435b-b6eb-c80ca6d8710a", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "46ea8eee-f118-4706-a288-084bb64bcee0", + "name": "Surface C", + "zone": "2478f4f6-5c23-43dc-99c5-422b5338f3b0", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "19dfd0e1-1517-4674-8d28-0b0d402afce6", + "pk": "0f83e510-f4f6-4048-86a4-f314c7f88223", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "433202e9-f8c1-4f76-9b65-7fff323798b2", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "729a81f4-e38e-4e79-b2dc-eafbd00b447e", "name": "Act 5", "zone": null, "source": null, @@ -458,433 +458,433 @@ }, { "model": "documents.element", - "pk": "28ce8c14-2514-4fd5-bd6f-bd7fb668e36a", + "pk": "1a9d2c4e-9bf8-4c14-896f-b498de08a082", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "bff5642d-b6a9-4856-bc8f-1c01cb58c0b0", - "name": "Surface D", - "zone": "41e685c0-9a8d-4802-8f72-d56bdb03c879", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "729a81f4-e38e-4e79-b2dc-eafbd00b447e", + "name": "Act 3", + "zone": null, "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "2ea41a99-a805-4364-966d-60761d28dcb4", + "pk": "1b2a3adb-3740-49d3-95e7-ce14dfc7da93", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "bff5642d-b6a9-4856-bc8f-1c01cb58c0b0", - "name": "Surface B", - "zone": "dd1e7d88-a7bd-4444-8643-b99360267c42", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "729a81f4-e38e-4e79-b2dc-eafbd00b447e", + "name": "Act 4", + "zone": null, "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "3df1ce74-6f2d-473d-bd0d-b20bf6b913ef", + "pk": "2b269b30-fda3-4630-9784-b1c3b9a0d77f", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "3536ef92-ad56-4b63-b243-d71afc4fdded", - "name": "Volume 2", - "zone": null, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "ROY", + "zone": "14c535d6-7b24-4366-a19c-4e56f3a7d073", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "4721e07a-2d53-4066-85a5-1c3a99e0840a", + "pk": "2b33730b-a381-4a99-9463-b4faeb9bfde2", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "DATUM", - "zone": "ecd9f9aa-ce91-4969-99a7-63e9dcbd8ca6", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "46ea8eee-f118-4706-a288-084bb64bcee0", + "name": "Surface B", + "zone": "2aedf0c1-ca2d-403a-9760-ed649271e3c3", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "4ad6a90c-f4ba-48e5-91ce-14d3bd3c6ba3", + "pk": "408ff192-649a-4f93-9a1a-0603641b4725", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "68ac563f-b627-4f16-b941-f3a136a0ed26", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "7b5938ee-dc1e-4e37-890a-1e5988e99099", "name": "Volume 1, page 2r", - "zone": "60978133-f6ad-4620-b8dc-f52053d30b97", + "zone": "ea52165e-7d7d-41af-b29f-b8774955626a", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "506f4447-6bdc-4d29-9bd8-f82976116c0e", + "pk": "525de37a-190f-4760-b831-4bf9bd4909f5", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "611f5a3e-1137-4984-b27c-a07d3c7ff728", - "name": "Text line", - "zone": "0ce0b1e6-e1a2-45f4-93f1-f9986fd4eb2e", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "729a81f4-e38e-4e79-b2dc-eafbd00b447e", + "name": "Act 1", + "zone": null, "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "550014fa-b5b4-46ee-b70d-7c00bb913ac7", + "pk": "5d4887e4-a9bd-4d75-aa82-0c63a40be1ee", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "68ac563f-b627-4f16-b941-f3a136a0ed26", - "name": "Volume 1, page 1v", - "zone": "1b7f99d7-4311-4b5a-a4e5-80e7d64f5597", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "dc3affbd-6a01-4aea-abce-c9f322698254", + "name": "Volume 1", + "zone": null, "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "69a25981-0e8e-4cf3-93a0-9a5c17030f4f", + "pk": "651fd593-e5ef-4f9a-b5cf-75630a5a0eb3", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "DATUM", - "zone": "e93d0bc9-bdd7-442f-aeee-e2454c6cf833", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "46ea8eee-f118-4706-a288-084bb64bcee0", + "name": "Surface D", + "zone": "e41a5920-3078-4772-a83d-e05f05a9678f", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "69b51bc9-1d7d-4c9d-9289-9fb837892cad", + "pk": "6e829b5f-2f51-4c93-babb-418d5f01c8b0", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "PARIS", - "zone": "e2fc38e5-f313-4b51-a364-3705a3875dfe", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "7b5938ee-dc1e-4e37-890a-1e5988e99099", + "name": "Volume 2, page 1r", + "zone": "81408598-4522-4df6-856f-293d75d3390b", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "71c62984-5fec-4f8c-b821-8cd8c1349a72", + "pk": "7393f32f-1bb4-4a00-a7e6-7a05659423ea", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "68ac563f-b627-4f16-b941-f3a136a0ed26", - "name": "Volume 2, page 1r", - "zone": "ac959187-0ff5-4c87-ae5b-ee47f1656b96", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "PARIS", + "zone": "65fc5f42-bbf9-4ff2-90f8-0ffb43a16b52", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "816b5708-411d-4763-b03b-66ef5a3531d6", + "pk": "9c860370-6242-4ef9-87ea-351caa3a22e4", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "bff5642d-b6a9-4856-bc8f-1c01cb58c0b0", - "name": "Surface C", - "zone": "1b7f99d7-4311-4b5a-a4e5-80e7d64f5597", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "PARIS", + "zone": "47677898-aafc-42b6-aec8-2767442838a7", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "84013d64-a85b-47c7-b734-722de1ae0d4b", + "pk": "a1c3c97c-2240-4c00-961e-12ca69b627a0", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "433202e9-f8c1-4f76-9b65-7fff323798b2", - "name": "Act 2", - "zone": null, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "7b5938ee-dc1e-4e37-890a-1e5988e99099", + "name": "Volume 1, page 1v", + "zone": "2478f4f6-5c23-43dc-99c5-422b5338f3b0", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "9433969b-792e-44bf-93ad-db17c6bcd3de", + "pk": "a22c9f39-95df-45de-98b9-59a9f358611d", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "bff5642d-b6a9-4856-bc8f-1c01cb58c0b0", - "name": "Surface F", - "zone": "a26f7e91-a516-4598-a6d2-d43286fcf6b7", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "7b5938ee-dc1e-4e37-890a-1e5988e99099", + "name": "Volume 2, page 2r", + "zone": "4d348752-c9c3-4c40-9924-fb0b78bde96a", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "ad7283c3-6643-49e2-a966-2e5c55cf4638", + "pk": "a965eed2-b66c-41ec-b8fe-a9fab12eee9e", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "433202e9-f8c1-4f76-9b65-7fff323798b2", - "name": "Act 4", - "zone": null, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "97ec5a9a-06fc-4d72-8a11-f107b76af6f2", + "name": "Text line", + "zone": "14c535d6-7b24-4366-a19c-4e56f3a7d073", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "afe50fbe-eb97-4366-8e18-1713aa711f4a", + "pk": "adfcdb63-1bec-4b44-a855-3dd765dda5d8", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "3536ef92-ad56-4b63-b243-d71afc4fdded", - "name": "Volume 1", - "zone": null, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "DATUM", + "zone": "ca0b6bd5-75d4-4ec2-b559-5a5919354e29", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "bee8c02b-98f6-4185-9897-762b62f73b3b", + "pk": "af5f778a-0b86-4422-8594-91de359aa795", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "433202e9-f8c1-4f76-9b65-7fff323798b2", - "name": "Act 3", - "zone": null, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "46ea8eee-f118-4706-a288-084bb64bcee0", + "name": "Surface A", + "zone": "8f507e13-1f0e-43f4-84ce-44f55fcf187f", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "c0007432-82e1-4420-8075-173af982ba6f", + "pk": "bb910784-dcb4-4b26-aab0-916313c3eb91", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "PARIS", - "zone": "7430649a-eeb2-4e9b-9639-5a773b2f24bd", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "dc3affbd-6a01-4aea-abce-c9f322698254", + "name": "Volume 2", + "zone": null, "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "c143d67e-aed5-4404-aa76-f47605dbf919", + "pk": "bcfc8f66-d7a5-48bb-a17e-f08b209911c0", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "DATUM", - "zone": "2bef6a9f-4bb6-4464-aa32-1bbcfd30e22f", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "PARIS", + "zone": "d885b67c-01fc-4254-9eea-81da4ec62102", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "c7295c75-b855-4b70-9475-a00e7ef9a572", + "pk": "bf4d6982-d8c0-4b81-8f49-3352d2ac90ee", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "68ac563f-b627-4f16-b941-f3a136a0ed26", - "name": "Volume 2, page 2r", - "zone": "5c419725-0a23-4bed-8b79-160187ea9ef0", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "7b5938ee-dc1e-4e37-890a-1e5988e99099", + "name": "Volume 1, page 1r", + "zone": "c8fc9430-cdd3-46ce-a045-957c8132b4d2", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "de16de7e-79a5-42a7-94de-6a61d04ee721", + "pk": "ce0dc249-37ee-4e2e-89a4-d1383b25ff8c", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "PARIS", - "zone": "4d7d6a74-5061-4636-ae02-eae61177f089", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "729a81f4-e38e-4e79-b2dc-eafbd00b447e", + "name": "Act 2", + "zone": null, "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "de4cd51c-3f98-4b97-92c7-fd8b7c15feea", + "pk": "d489659c-9c67-4fb9-8758-cf70f6750e18", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "68ac563f-b627-4f16-b941-f3a136a0ed26", - "name": "Volume 2, page 1v", - "zone": "168d6610-a232-4f89-8ea7-9d26068e4845", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "ROY", + "zone": "ca56ae53-3a8b-4064-bef4-482773738b29", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "e6b3aed3-c443-4df2-98c2-f7da41eaceec", + "pk": "e4205894-9169-4fee-9823-e0bbc61e8724", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "68ac563f-b627-4f16-b941-f3a136a0ed26", - "name": "Volume 1, page 1r", - "zone": "008f25e7-0068-40cd-a083-3292102b6242", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "DATUM", + "zone": "6c7a21b2-5a54-4226-9b0b-a66eaea2caf8", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "ed7a03cb-199f-4b54-b659-9567703cd361", + "pk": "e9e92536-f98a-4dad-bb7e-0aa7e486b894", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "bff5642d-b6a9-4856-bc8f-1c01cb58c0b0", - "name": "Surface E", - "zone": "1eb1ca30-1799-4b77-b3e6-51effb20f969", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "7b5938ee-dc1e-4e37-890a-1e5988e99099", + "name": "Volume 2, page 1v", + "zone": "26195a0d-1dcb-44a4-b01f-6ac80fab95f6", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "ef787c30-b839-43f3-8a5e-cc87498cffd1", + "pk": "eb3bb68f-918b-4b90-90f2-27df023e4772", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "bff5642d-b6a9-4856-bc8f-1c01cb58c0b0", - "name": "Surface A", - "zone": "b6c3f8c5-5b3d-4c6c-8e2c-6a4383bc0349", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "5f84f077-bd8f-4d7f-ab18-e8388fcf0325", + "name": "ROY", + "zone": "29d50e92-b7ef-462b-875d-3bb74506898c", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "f7921f4f-be7b-4e41-9c27-37447d9f622c", + "pk": "edb4eec4-4860-446a-977e-acf83c031df9", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "419898d9-287c-48fb-9fce-22dc237bec14", - "name": "ROY", - "zone": "3df5119c-08a6-4efe-8a1d-de7143beb38b", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "46ea8eee-f118-4706-a288-084bb64bcee0", + "name": "Surface E", + "zone": "0a23bba3-71a6-4511-8e80-e5b153e7d914", "source": null, "worker_version": null } }, { "model": "documents.element", - "pk": "facee923-af23-4d71-8882-b20d621a66fd", + "pk": "f2be38ee-c57c-4935-bf40-c15723f4e793", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "433202e9-f8c1-4f76-9b65-7fff323798b2", - "name": "Act 1", - "zone": null, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "46ea8eee-f118-4706-a288-084bb64bcee0", + "name": "Surface F", + "zone": "a45cba6e-5304-4e60-a6c3-79c1627ded89", "source": null, "worker_version": null } }, { "model": "documents.datasource", - "pk": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "pk": "210c9e45-2f4c-4b42-8596-4ddfada0e56c", "fields": { - "type": "recognizer", + "type": "classifier", "slug": "test", - "name": "Test Recognizer", - "revision": "4.2", + "name": "Test Classifier", + "revision": "5.1", "internal": false } }, { "model": "documents.datasource", - "pk": "9ca9a82b-972d-44e2-8413-c8192e6f2bda", + "pk": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "fields": { - "type": "classifier", + "type": "recognizer", "slug": "test", - "name": "Test Classifier", - "revision": "5.1", + "name": "Test Recognizer", + "revision": "4.2", "internal": false } }, { "model": "documents.transcription", - "pk": "0415d930-ce5d-4cef-b088-f69258ba0bf5", + "pk": "009949b6-12c2-4562-9a9e-16d8235e0fae", "fields": { - "element": "69b51bc9-1d7d-4c9d-9289-9fb837892cad", + "element": "03d374b1-6560-438c-9fde-4e88051ab3e1", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, - "text": "PARIS", + "text": "DATUM", "score": 1.0 } }, { "model": "documents.transcription", - "pk": "0aa4f0ca-81b8-4918-9acd-14390b203e56", + "pk": "1dab3b99-b2a9-4838-b560-492ec24c4973", "fields": { - "element": "4721e07a-2d53-4066-85a5-1c3a99e0840a", + "element": "2b269b30-fda3-4630-9784-b1c3b9a0d77f", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, - "text": "DATUM", + "text": "ROY", "score": 1.0 } }, { "model": "documents.transcription", - "pk": "7a5a1f9b-d1e8-4504-8b77-db0d181b281f", + "pk": "1e452fbf-6e4a-4e1c-9316-8cc2be2f0de0", "fields": { - "element": "c143d67e-aed5-4404-aa76-f47605dbf919", + "element": "9c860370-6242-4ef9-87ea-351caa3a22e4", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, - "text": "DATUM", + "text": "PARIS", "score": 1.0 } }, { "model": "documents.transcription", - "pk": "7eb70406-eeb6-4a29-8d20-36a01e07490e", + "pk": "2ee46985-d7d3-46ee-93ec-85563c3d8dc9", "fields": { - "element": "69a25981-0e8e-4cf3-93a0-9a5c17030f4f", + "element": "adfcdb63-1bec-4b44-a855-3dd765dda5d8", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, "text": "DATUM", "score": 1.0 @@ -892,47 +892,47 @@ }, { "model": "documents.transcription", - "pk": "82af4779-b66a-45a9-bc1d-bd42dfc22492", + "pk": "310a14c6-65e9-4f2c-baff-8a0ecce01f54", "fields": { - "element": "1477b9c2-dedf-4d44-b4bd-b1162cf8a998", - "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "element": "bf4d6982-d8c0-4b81-8f49-3352d2ac90ee", + "type": "page", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, - "text": "ROY", + "text": "Lorem ipsum dolor sit amet", "score": 1.0 } }, { "model": "documents.transcription", - "pk": "89209b02-bddd-4b84-828e-9ca5c1572f9e", + "pk": "7e7901a0-a1bc-47a2-b2ff-6465fca06490", "fields": { - "element": "0e7121f8-efdd-4ef8-b5a7-ca5b4457e83c", + "element": "bcfc8f66-d7a5-48bb-a17e-f08b209911c0", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, - "text": "ROY", + "text": "PARIS", "score": 1.0 } }, { "model": "documents.transcription", - "pk": "af40fcc2-27cc-44ba-9f50-6d9b0e151642", + "pk": "99c6d35f-5270-4d8e-8811-13dd21aa2a2a", "fields": { - "element": "de16de7e-79a5-42a7-94de-6a61d04ee721", + "element": "eb3bb68f-918b-4b90-90f2-27df023e4772", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, - "text": "PARIS", + "text": "ROY", "score": 1.0 } }, { "model": "documents.transcription", - "pk": "b191a67c-dfbf-4bcd-9ad5-800cd513e60b", + "pk": "a572e06e-ba12-4609-a797-e64b2cf39def", "fields": { - "element": "f7921f4f-be7b-4e41-9c27-37447d9f622c", + "element": "d489659c-9c67-4fb9-8758-cf70f6750e18", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, "text": "ROY", "score": 1.0 @@ -940,11 +940,11 @@ }, { "model": "documents.transcription", - "pk": "cdfd4d6b-ea3e-40d5-8c86-2d89a1319ce6", + "pk": "e47b2d65-bb81-4b32-a735-a7ffdafdf645", "fields": { - "element": "c0007432-82e1-4420-8075-173af982ba6f", + "element": "7393f32f-1bb4-4a00-a7e6-7a05659423ea", "type": "word", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, "text": "PARIS", "score": 1.0 @@ -952,51 +952,51 @@ }, { "model": "documents.transcription", - "pk": "ea7d3b33-922f-4766-9f78-bd50815f81a5", + "pk": "f0037009-83f3-4e5a-9db9-8696ea7f1c63", "fields": { - "element": "e6b3aed3-c443-4df2-98c2-f7da41eaceec", - "type": "page", - "source": "13dc1bf7-e4d4-4cd9-b537-ecdcad7bd3c2", + "element": "e4205894-9169-4fee-9823-e0bbc61e8724", + "type": "word", + "source": "92b6a695-61b8-429b-b3be-ad7ab8e6ddc1", "worker_version": null, - "text": "Lorem ipsum dolor sit amet", + "text": "DATUM", "score": 1.0 } }, { "model": "documents.allowedmetadata", - "pk": "06a9affa-d856-4b86-af15-d9bc02d123ff", + "pk": "1d07c0f3-5263-47a9-bd92-029659d7f1e0", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "date", - "name": "date" + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "location", + "name": "location" } }, { "model": "documents.allowedmetadata", - "pk": "32e4f87f-248f-4c2f-8a0e-e8635ceee11c", + "pk": "aac48c98-259a-427b-b155-766658d7beef", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "type": "location", - "name": "location" + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "type": "date", + "name": "date" } }, { "model": "documents.allowedmetadata", - "pk": "3beaea8b-7c5a-4573-9e40-dc8b4fc07216", + "pk": "c999abbe-91e1-42ec-8b32-82ed871410c3", "fields": { - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", "type": "text", "name": "folio" } }, { "model": "documents.metadata", - "pk": "332b81d9-9b21-41f8-b5ea-5ec139a1fa68", + "pk": "07ac0f0c-ccfb-4ee4-96a4-7ca36e80cc44", "fields": { - "element": "facee923-af23-4d71-8882-b20d621a66fd", + "element": "ce0dc249-37ee-4e2e-89a4-d1383b25ff8c", "name": "number", "type": "text", - "value": "1", + "value": "2", "revision": null, "index": 0, "entity": null @@ -1004,12 +1004,12 @@ }, { "model": "documents.metadata", - "pk": "3b9d1aa1-1e89-4210-8bb4-a25e1609e243", + "pk": "2d9aee95-a9f9-4332-b2e4-27010d779513", "fields": { - "element": "550014fa-b5b4-46ee-b70d-7c00bb913ac7", + "element": "6e829b5f-2f51-4c93-babb-418d5f01c8b0", "name": "folio", "type": "text", - "value": "1v", + "value": "1r", "revision": null, "index": 0, "entity": null @@ -1017,12 +1017,12 @@ }, { "model": "documents.metadata", - "pk": "46f406b1-e240-4388-810e-9472133ba584", + "pk": "31ae24de-585d-42f5-95b4-2f4ff0aee9e6", "fields": { - "element": "19dfd0e1-1517-4674-8d28-0b0d402afce6", - "name": "number", + "element": "e9e92536-f98a-4dad-bb7e-0aa7e486b894", + "name": "folio", "type": "text", - "value": "5", + "value": "1v", "revision": null, "index": 0, "entity": null @@ -1030,12 +1030,12 @@ }, { "model": "documents.metadata", - "pk": "5dcf22cf-96a8-4b7a-8ce2-4694424c9ee9", + "pk": "59864bc6-7e0b-4927-bf80-3239ee89708f", "fields": { - "element": "bee8c02b-98f6-4185-9897-762b62f73b3b", - "name": "number", + "element": "a22c9f39-95df-45de-98b9-59a9f358611d", + "name": "folio", "type": "text", - "value": "3", + "value": "2r", "revision": null, "index": 0, "entity": null @@ -1043,12 +1043,12 @@ }, { "model": "documents.metadata", - "pk": "764be013-755e-4751-9d1a-27c8218007c0", + "pk": "7177773a-3970-4ede-b4d7-df4a7930b587", "fields": { - "element": "e6b3aed3-c443-4df2-98c2-f7da41eaceec", + "element": "a1c3c97c-2240-4c00-961e-12ca69b627a0", "name": "folio", "type": "text", - "value": "1r", + "value": "1v", "revision": null, "index": 0, "entity": null @@ -1056,12 +1056,12 @@ }, { "model": "documents.metadata", - "pk": "97928b42-8b2c-4d67-b16e-51ff1e605892", + "pk": "a124d423-eed2-47e7-b945-1e77ed2ec454", "fields": { - "element": "4ad6a90c-f4ba-48e5-91ce-14d3bd3c6ba3", - "name": "folio", + "element": "1b2a3adb-3740-49d3-95e7-ce14dfc7da93", + "name": "number", "type": "text", - "value": "2r", + "value": "4", "revision": null, "index": 0, "entity": null @@ -1069,12 +1069,12 @@ }, { "model": "documents.metadata", - "pk": "bb86d930-3d04-47f8-b2a0-82f3ed1334d6", + "pk": "baf0ed90-95c6-45c6-a74e-40d5d25b846b", "fields": { - "element": "c7295c75-b855-4b70-9475-a00e7ef9a572", - "name": "folio", + "element": "525de37a-190f-4760-b831-4bf9bd4909f5", + "name": "number", "type": "text", - "value": "2r", + "value": "1", "revision": null, "index": 0, "entity": null @@ -1082,12 +1082,12 @@ }, { "model": "documents.metadata", - "pk": "be59424b-84e4-41bf-9dd0-52eac75ce1ec", + "pk": "d217b793-f069-4d41-ba09-3914a9fb5cf5", "fields": { - "element": "ad7283c3-6643-49e2-a966-2e5c55cf4638", + "element": "1a9d2c4e-9bf8-4c14-896f-b498de08a082", "name": "number", "type": "text", - "value": "4", + "value": "3", "revision": null, "index": 0, "entity": null @@ -1095,12 +1095,12 @@ }, { "model": "documents.metadata", - "pk": "d49cf820-76a2-4cd2-b085-bc09eca9586d", + "pk": "df7055ea-2464-4761-b122-ef8b758cb62a", "fields": { - "element": "71c62984-5fec-4f8c-b821-8cd8c1349a72", + "element": "408ff192-649a-4f93-9a1a-0603641b4725", "name": "folio", "type": "text", - "value": "1r", + "value": "2r", "revision": null, "index": 0, "entity": null @@ -1108,12 +1108,12 @@ }, { "model": "documents.metadata", - "pk": "d8717e0b-6b62-4d82-92dc-0c1a4410dc8e", + "pk": "e661a537-f2ab-44a6-95aa-25ac5a7a60c9", "fields": { - "element": "84013d64-a85b-47c7-b734-722de1ae0d4b", + "element": "0f83e510-f4f6-4048-86a4-f314c7f88223", "name": "number", "type": "text", - "value": "2", + "value": "5", "revision": null, "index": 0, "entity": null @@ -1121,12 +1121,12 @@ }, { "model": "documents.metadata", - "pk": "de13bd65-beea-41f7-8774-938e64084a90", + "pk": "f595d9c5-474b-42bd-b95e-a260e6f4adf8", "fields": { - "element": "de4cd51c-3f98-4b97-92c7-fd8b7c15feea", + "element": "bf4d6982-d8c0-4b81-8f49-3352d2ac90ee", "name": "folio", "type": "text", - "value": "1v", + "value": "1r", "revision": null, "index": 0, "entity": null @@ -1150,12 +1150,12 @@ }, { "model": "images.image", - "pk": "081d902d-2008-4b06-b2c4-7acf0c9b2980", + "pk": "48be6ecd-de85-4cc7-9567-b6bb89769f3c", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", "server": 1, - "path": "img2", + "path": "img5", "width": 1000, "height": 1000, "hash": null, @@ -1164,12 +1164,12 @@ }, { "model": "images.image", - "pk": "216c7280-1577-4be1-a645-52353fcf65ec", + "pk": "53eb4ee2-c43b-45cb-8cf7-dcdf5dd9fe9d", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", "server": 1, - "path": "img5", + "path": "img2", "width": 1000, "height": 1000, "hash": null, @@ -1178,7 +1178,7 @@ }, { "model": "images.image", - "pk": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", + "pk": "6538d5fb-5a86-4c34-a974-70c624bba5be", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", @@ -1192,12 +1192,12 @@ }, { "model": "images.image", - "pk": "89ea15dd-5a7d-43e4-9a03-f1c6442feece", + "pk": "bc237d40-b2bd-4e2f-b728-d6c799beeac6", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", "server": 1, - "path": "img6", + "path": "img4", "width": 1000, "height": 1000, "hash": null, @@ -1206,7 +1206,7 @@ }, { "model": "images.image", - "pk": "cba07163-4df3-4320-94fc-6d4291df610c", + "pk": "ce68e28e-8d2a-4e07-901d-791c6eb0dfca", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", @@ -1220,12 +1220,12 @@ }, { "model": "images.image", - "pk": "deac5fac-5c34-4f53-8afa-23f8a2ff313a", + "pk": "e1a2aa51-72c4-4668-a131-754da40f48d0", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", "server": 1, - "path": "img4", + "path": "img6", "width": 1000, "height": 1000, "hash": null, @@ -1234,211 +1234,212 @@ }, { "model": "images.zone", - "pk": "008f25e7-0068-40cd-a083-3292102b6242", + "pk": "0a23bba3-71a6-4511-8e80-e5b153e7d914", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "cba07163-4df3-4320-94fc-6d4291df610c", - "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" + "image": "6538d5fb-5a86-4c34-a974-70c624bba5be", + "polygon": "LINEARRING (300 300, 300 600, 600 600, 600 300, 300 300)" } }, { "model": "images.zone", - "pk": "0ce0b1e6-e1a2-45f4-93f1-f9986fd4eb2e", + "pk": "14c535d6-7b24-4366-a19c-4e56f3a7d073", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "cba07163-4df3-4320-94fc-6d4291df610c", + "image": "ce68e28e-8d2a-4e07-901d-791c6eb0dfca", "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)" } }, { "model": "images.zone", - "pk": "168d6610-a232-4f89-8ea7-9d26068e4845", + "pk": "2478f4f6-5c23-43dc-99c5-422b5338f3b0", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "216c7280-1577-4be1-a645-52353fcf65ec", + "image": "53eb4ee2-c43b-45cb-8cf7-dcdf5dd9fe9d", "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" } }, { "model": "images.zone", - "pk": "1b7f99d7-4311-4b5a-a4e5-80e7d64f5597", + "pk": "26195a0d-1dcb-44a4-b01f-6ac80fab95f6", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "081d902d-2008-4b06-b2c4-7acf0c9b2980", + "image": "48be6ecd-de85-4cc7-9567-b6bb89769f3c", "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" } }, { "model": "images.zone", - "pk": "1eb1ca30-1799-4b77-b3e6-51effb20f969", + "pk": "29d50e92-b7ef-462b-875d-3bb74506898c", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", - "polygon": "LINEARRING (300 300, 300 600, 600 600, 600 300, 300 300)" + "image": "53eb4ee2-c43b-45cb-8cf7-dcdf5dd9fe9d", + "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)" } }, { "model": "images.zone", - "pk": "2bef6a9f-4bb6-4464-aa32-1bbcfd30e22f", + "pk": "2aedf0c1-ca2d-403a-9760-ed649271e3c3", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "081d902d-2008-4b06-b2c4-7acf0c9b2980", - "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)" + "image": "ce68e28e-8d2a-4e07-901d-791c6eb0dfca", + "polygon": "LINEARRING (600 600, 600 1000, 1000 1000, 1000 600, 600 600)" } }, { "model": "images.zone", - "pk": "3df5119c-08a6-4efe-8a1d-de7143beb38b", + "pk": "47677898-aafc-42b6-aec8-2767442838a7", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "081d902d-2008-4b06-b2c4-7acf0c9b2980", - "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)" + "image": "6538d5fb-5a86-4c34-a974-70c624bba5be", + "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)" } }, { "model": "images.zone", - "pk": "41e685c0-9a8d-4802-8f72-d56bdb03c879", + "pk": "4d348752-c9c3-4c40-9924-fb0b78bde96a", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", - "polygon": "LINEARRING (0 0, 0 300, 300 300, 300 0, 0 0)" + "image": "e1a2aa51-72c4-4668-a131-754da40f48d0", + "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" } }, { "model": "images.zone", - "pk": "4d7d6a74-5061-4636-ae02-eae61177f089", + "pk": "65fc5f42-bbf9-4ff2-90f8-0ffb43a16b52", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "cba07163-4df3-4320-94fc-6d4291df610c", + "image": "53eb4ee2-c43b-45cb-8cf7-dcdf5dd9fe9d", "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)" } }, { "model": "images.zone", - "pk": "5c419725-0a23-4bed-8b79-160187ea9ef0", + "pk": "6c7a21b2-5a54-4226-9b0b-a66eaea2caf8", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "89ea15dd-5a7d-43e4-9a03-f1c6442feece", - "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" + "image": "ce68e28e-8d2a-4e07-901d-791c6eb0dfca", + "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)" } }, { "model": "images.zone", - "pk": "60978133-f6ad-4620-b8dc-f52053d30b97", + "pk": "81408598-4522-4df6-856f-293d75d3390b", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", + "image": "bc237d40-b2bd-4e2f-b728-d6c799beeac6", "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" } }, { "model": "images.zone", - "pk": "7430649a-eeb2-4e9b-9639-5a773b2f24bd", + "pk": "8dc267fe-76ab-4e76-9b0a-3009b57b2ab2", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", - "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)" + "image": "53eb4ee2-c43b-45cb-8cf7-dcdf5dd9fe9d", + "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)" } }, { "model": "images.zone", - "pk": "8ef76685-65b7-435b-b6eb-c80ca6d8710a", + "pk": "8f507e13-1f0e-43f4-84ce-44f55fcf187f", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", - "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)" + "image": "ce68e28e-8d2a-4e07-901d-791c6eb0dfca", + "polygon": "LINEARRING (0 0, 0 600, 600 600, 600 0, 0 0)" } }, { "model": "images.zone", - "pk": "a26f7e91-a516-4598-a6d2-d43286fcf6b7", + "pk": "a45cba6e-5304-4e60-a6c3-79c1627ded89", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", + "image": "6538d5fb-5a86-4c34-a974-70c624bba5be", "polygon": "LINEARRING (600 600, 600 1000, 1000 1000, 1000 600, 600 600)" } }, { "model": "images.zone", - "pk": "ac959187-0ff5-4c87-ae5b-ee47f1656b96", + "pk": "c8fc9430-cdd3-46ce-a045-957c8132b4d2", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "deac5fac-5c34-4f53-8afa-23f8a2ff313a", + "image": "ce68e28e-8d2a-4e07-901d-791c6eb0dfca", "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" } }, { "model": "images.zone", - "pk": "b6c3f8c5-5b3d-4c6c-8e2c-6a4383bc0349", + "pk": "ca0b6bd5-75d4-4ec2-b559-5a5919354e29", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "cba07163-4df3-4320-94fc-6d4291df610c", - "polygon": "LINEARRING (0 0, 0 600, 600 600, 600 0, 0 0)" + "image": "6538d5fb-5a86-4c34-a974-70c624bba5be", + "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)" } }, { "model": "images.zone", - "pk": "dd1e7d88-a7bd-4444-8643-b99360267c42", + "pk": "ca56ae53-3a8b-4064-bef4-482773738b29", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "cba07163-4df3-4320-94fc-6d4291df610c", - "polygon": "LINEARRING (600 600, 600 1000, 1000 1000, 1000 600, 600 600)" + "image": "6538d5fb-5a86-4c34-a974-70c624bba5be", + "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)" } }, { "model": "images.zone", - "pk": "e2fc38e5-f313-4b51-a364-3705a3875dfe", + "pk": "d885b67c-01fc-4254-9eea-81da4ec62102", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "081d902d-2008-4b06-b2c4-7acf0c9b2980", + "image": "ce68e28e-8d2a-4e07-901d-791c6eb0dfca", "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)" } }, { "model": "images.zone", - "pk": "e93d0bc9-bdd7-442f-aeee-e2454c6cf833", + "pk": "e41a5920-3078-4772-a83d-e05f05a9678f", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "cba07163-4df3-4320-94fc-6d4291df610c", - "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)" + "image": "6538d5fb-5a86-4c34-a974-70c624bba5be", + "polygon": "LINEARRING (0 0, 0 300, 300 300, 300 0, 0 0)" } }, { "model": "images.zone", - "pk": "ecd9f9aa-ce91-4969-99a7-63e9dcbd8ca6", + "pk": "ea52165e-7d7d-41af-b29f-b8774955626a", "fields": { "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", - "image": "7ec02e33-b678-42ad-bde7-78b94bf4c2bb", - "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)" + "image": "6538d5fb-5a86-4c34-a974-70c624bba5be", + "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)" } }, { "model": "users.user", "pk": 1, "fields": { - "password": "pbkdf2_sha256$216000$9CLrlNBjYsHu$l7PPc5KJivmcUJU2nNR4kH44tc7EeAE170B3PCSBCI4=", + "password": "pbkdf2_sha256$216000$SDRlvrKm5YOT$XxAljMHH19WWQzwUySlDiOTtKJe+TPhSITW6zo/I7xI=", "last_login": null, "email": "root@root.fr", + "display_name": "Admin", "transkribus_email": null, "is_active": true, "is_internal": false, @@ -1450,9 +1451,10 @@ "model": "users.user", "pk": 2, "fields": { - "password": "pbkdf2_sha256$216000$r3zA0HxJh8He$JHSYUpAezr7yJUsmmsZxX2S5F/qZy/iuHDoQWPkqTlQ=", + "password": "pbkdf2_sha256$216000$CYynh60McAI6$SSlHKy0tGvxBBd/zzG1hc1zNEqhaNtv5rrH2M0ATgpY=", "last_login": null, "email": "internal@internal.fr", + "display_name": "Internal user", "transkribus_email": null, "is_active": true, "is_internal": true, @@ -1464,9 +1466,10 @@ "model": "users.user", "pk": 3, "fields": { - "password": "pbkdf2_sha256$216000$HfrDffda4FCv$SEsBuKudVFpFNdyAYELIY+o/jRr8CwlfY9XaLkcX9UI=", + "password": "pbkdf2_sha256$216000$tGXE4KnOaN1S$O89hFVWrOj/YC22CvXIrTMaDBWYAfdOGpc1H1wkCSLQ=", "last_login": null, "email": "user@user.fr", + "display_name": "Test user", "transkribus_email": null, "is_active": true, "is_internal": false, @@ -1475,27 +1478,92 @@ } }, { - "model": "users.oauthcredentials", - "pk": "5665e36b-ae6c-4830-84ab-c283e363c1c5", + "model": "users.user", + "pk": 4, "fields": { - "user": 3, - "provider_name": "gitlab", - "provider_url": "https://somewhere", - "status": "created", - "token": "oauth-token", - "refresh_token": null, - "expiry": null, - "account_name": null + "password": "", + "last_login": null, + "email": "user2@user.fr", + "display_name": "Test user write", + "transkribus_email": null, + "is_active": true, + "is_internal": false, + "is_admin": false, + "verified_email": false } }, { - "model": "users.corpusright", - "pk": 1, + "model": "users.user", + "pk": 5, "fields": { - "user": 3, - "corpus": "0549780c-bce1-445e-8f07-7e32889fe71e", - "can_write": true, - "can_admin": true + "password": "", + "last_login": null, + "email": "user3@user.fr", + "display_name": "Test user read", + "transkribus_email": null, + "is_active": true, + "is_internal": false, + "is_admin": false, + "verified_email": false + } +}, +{ + "model": "users.group", + "pk": "3d43ed61-ef7e-4eaa-8e31-83bdf7083256", + "fields": { + "name": "User group", + "public": false + } +}, +{ + "model": "users.membership", + "pk": 1, + "fields": { + "user": 3, + "group": "3d43ed61-ef7e-4eaa-8e31-83bdf7083256", + "level": 100 + } +}, +{ + "model": "users.membership", + "pk": 2, + "fields": { + "user": 4, + "group": "3d43ed61-ef7e-4eaa-8e31-83bdf7083256", + "level": 50 + } +}, +{ + "model": "users.membership", + "pk": 3, + "fields": { + "user": 5, + "group": "3d43ed61-ef7e-4eaa-8e31-83bdf7083256", + "level": 10 + } +}, +{ + "model": "users.oauthcredentials", + "pk": "9fb76b0e-6529-4c2c-acc4-02d616554102", + "fields": { + "user": 3, + "provider_name": "gitlab", + "provider_url": "https://somewhere", + "status": "created", + "token": "oauth-token", + "refresh_token": null, + "expiry": null, + "account_name": null + } +}, +{ + "model": "users.corpusright", + "pk": 1, + "fields": { + "user": 3, + "corpus": "dab98946-799e-415f-abcb-869cf1bda854", + "can_write": true, + "can_admin": true } }, { @@ -1970,1193 +2038,1229 @@ "model": "auth.permission", "pk": 53, "fields": { - "name": "Can add image", + "name": "Can add gpu", "content_type": 14, - "codename": "add_image" + "codename": "add_gpu" } }, { "model": "auth.permission", "pk": 54, "fields": { - "name": "Can change image", + "name": "Can change gpu", "content_type": 14, - "codename": "change_image" + "codename": "change_gpu" } }, { "model": "auth.permission", "pk": 55, "fields": { - "name": "Can delete image", + "name": "Can delete gpu", "content_type": 14, - "codename": "delete_image" + "codename": "delete_gpu" } }, { "model": "auth.permission", "pk": 56, "fields": { - "name": "Can view image", + "name": "Can view gpu", "content_type": 14, - "codename": "view_image" + "codename": "view_gpu" } }, { "model": "auth.permission", "pk": 57, "fields": { - "name": "Can add image server", + "name": "Can add image", "content_type": 15, - "codename": "add_imageserver" + "codename": "add_image" } }, { "model": "auth.permission", "pk": 58, "fields": { - "name": "Can change image server", + "name": "Can change image", "content_type": 15, - "codename": "change_imageserver" + "codename": "change_image" } }, { "model": "auth.permission", "pk": 59, "fields": { - "name": "Can delete image server", + "name": "Can delete image", "content_type": 15, - "codename": "delete_imageserver" + "codename": "delete_image" } }, { "model": "auth.permission", "pk": 60, "fields": { - "name": "Can view image server", + "name": "Can view image", "content_type": 15, - "codename": "view_imageserver" + "codename": "view_image" } }, { "model": "auth.permission", "pk": 61, "fields": { - "name": "Can add zone", + "name": "Can add image server", "content_type": 16, - "codename": "add_zone" + "codename": "add_imageserver" } }, { "model": "auth.permission", "pk": 62, "fields": { - "name": "Can change zone", + "name": "Can change image server", "content_type": 16, - "codename": "change_zone" + "codename": "change_imageserver" } }, { "model": "auth.permission", "pk": 63, "fields": { - "name": "Can delete zone", + "name": "Can delete image server", "content_type": 16, - "codename": "delete_zone" + "codename": "delete_imageserver" } }, { "model": "auth.permission", "pk": 64, "fields": { - "name": "Can view zone", + "name": "Can view image server", "content_type": 16, - "codename": "view_zone" + "codename": "view_imageserver" } }, { "model": "auth.permission", "pk": 65, "fields": { - "name": "Can add allowed meta data", + "name": "Can add zone", "content_type": 17, - "codename": "add_allowedmetadata" + "codename": "add_zone" } }, { "model": "auth.permission", "pk": 66, "fields": { - "name": "Can change allowed meta data", + "name": "Can change zone", "content_type": 17, - "codename": "change_allowedmetadata" + "codename": "change_zone" } }, { "model": "auth.permission", "pk": 67, "fields": { - "name": "Can delete allowed meta data", + "name": "Can delete zone", "content_type": 17, - "codename": "delete_allowedmetadata" + "codename": "delete_zone" } }, { "model": "auth.permission", "pk": 68, "fields": { - "name": "Can view allowed meta data", + "name": "Can view zone", "content_type": 17, - "codename": "view_allowedmetadata" + "codename": "view_zone" } }, { "model": "auth.permission", "pk": 69, "fields": { - "name": "Can add classification", + "name": "Can add allowed meta data", "content_type": 18, - "codename": "add_classification" + "codename": "add_allowedmetadata" } }, { "model": "auth.permission", "pk": 70, "fields": { - "name": "Can change classification", + "name": "Can change allowed meta data", "content_type": 18, - "codename": "change_classification" + "codename": "change_allowedmetadata" } }, { "model": "auth.permission", "pk": 71, "fields": { - "name": "Can delete classification", + "name": "Can delete allowed meta data", "content_type": 18, - "codename": "delete_classification" + "codename": "delete_allowedmetadata" } }, { "model": "auth.permission", "pk": 72, "fields": { - "name": "Can view classification", + "name": "Can view allowed meta data", "content_type": 18, - "codename": "view_classification" + "codename": "view_allowedmetadata" } }, { "model": "auth.permission", "pk": 73, "fields": { - "name": "Can add corpus", + "name": "Can add classification", "content_type": 19, - "codename": "add_corpus" + "codename": "add_classification" } }, { "model": "auth.permission", "pk": 74, "fields": { - "name": "Can change corpus", + "name": "Can change classification", "content_type": 19, - "codename": "change_corpus" + "codename": "change_classification" } }, { "model": "auth.permission", "pk": 75, "fields": { - "name": "Can delete corpus", + "name": "Can delete classification", "content_type": 19, - "codename": "delete_corpus" + "codename": "delete_classification" } }, { "model": "auth.permission", "pk": 76, "fields": { - "name": "Can view corpus", + "name": "Can view classification", "content_type": 19, - "codename": "view_corpus" + "codename": "view_classification" } }, { "model": "auth.permission", "pk": 77, "fields": { - "name": "Can add data source", + "name": "Can add corpus", "content_type": 20, - "codename": "add_datasource" + "codename": "add_corpus" } }, { "model": "auth.permission", "pk": 78, "fields": { - "name": "Can change data source", + "name": "Can change corpus", "content_type": 20, - "codename": "change_datasource" + "codename": "change_corpus" } }, { "model": "auth.permission", "pk": 79, "fields": { - "name": "Can delete data source", + "name": "Can delete corpus", "content_type": 20, - "codename": "delete_datasource" + "codename": "delete_corpus" } }, { "model": "auth.permission", "pk": 80, "fields": { - "name": "Can view data source", + "name": "Can view corpus", "content_type": 20, - "codename": "view_datasource" + "codename": "view_corpus" } }, { "model": "auth.permission", "pk": 81, "fields": { - "name": "Can add element", + "name": "Can add data source", "content_type": 21, - "codename": "add_element" + "codename": "add_datasource" } }, { "model": "auth.permission", "pk": 82, "fields": { - "name": "Can change element", + "name": "Can change data source", "content_type": 21, - "codename": "change_element" + "codename": "change_datasource" } }, { "model": "auth.permission", "pk": 83, "fields": { - "name": "Can delete element", + "name": "Can delete data source", "content_type": 21, - "codename": "delete_element" + "codename": "delete_datasource" } }, { "model": "auth.permission", "pk": 84, "fields": { - "name": "Can view element", + "name": "Can view data source", "content_type": 21, - "codename": "view_element" + "codename": "view_datasource" } }, { "model": "auth.permission", "pk": 85, "fields": { - "name": "Can add element path", + "name": "Can add element", "content_type": 22, - "codename": "add_elementpath" + "codename": "add_element" } }, { "model": "auth.permission", "pk": 86, "fields": { - "name": "Can change element path", + "name": "Can change element", "content_type": 22, - "codename": "change_elementpath" + "codename": "change_element" } }, { "model": "auth.permission", "pk": 87, "fields": { - "name": "Can delete element path", + "name": "Can delete element", "content_type": 22, - "codename": "delete_elementpath" + "codename": "delete_element" } }, { "model": "auth.permission", "pk": 88, "fields": { - "name": "Can view element path", + "name": "Can view element", "content_type": 22, - "codename": "view_elementpath" + "codename": "view_element" } }, { "model": "auth.permission", "pk": 89, "fields": { - "name": "Can add element type", + "name": "Can add element path", "content_type": 23, - "codename": "add_elementtype" + "codename": "add_elementpath" } }, { "model": "auth.permission", "pk": 90, "fields": { - "name": "Can change element type", + "name": "Can change element path", "content_type": 23, - "codename": "change_elementtype" + "codename": "change_elementpath" } }, { "model": "auth.permission", "pk": 91, "fields": { - "name": "Can delete element type", + "name": "Can delete element path", "content_type": 23, - "codename": "delete_elementtype" + "codename": "delete_elementpath" } }, { "model": "auth.permission", "pk": 92, "fields": { - "name": "Can view element type", + "name": "Can view element path", "content_type": 23, - "codename": "view_elementtype" + "codename": "view_elementpath" } }, { "model": "auth.permission", "pk": 93, "fields": { - "name": "Can add entity", + "name": "Can add element type", "content_type": 24, - "codename": "add_entity" + "codename": "add_elementtype" } }, { "model": "auth.permission", "pk": 94, "fields": { - "name": "Can change entity", + "name": "Can change element type", "content_type": 24, - "codename": "change_entity" + "codename": "change_elementtype" } }, { "model": "auth.permission", "pk": 95, "fields": { - "name": "Can delete entity", + "name": "Can delete element type", "content_type": 24, - "codename": "delete_entity" + "codename": "delete_elementtype" } }, { "model": "auth.permission", "pk": 96, "fields": { - "name": "Can view entity", + "name": "Can view element type", "content_type": 24, - "codename": "view_entity" + "codename": "view_elementtype" } }, { "model": "auth.permission", "pk": 97, "fields": { - "name": "Can add ml class", + "name": "Can add entity", "content_type": 25, - "codename": "add_mlclass" + "codename": "add_entity" } }, { "model": "auth.permission", "pk": 98, "fields": { - "name": "Can change ml class", + "name": "Can change entity", "content_type": 25, - "codename": "change_mlclass" + "codename": "change_entity" } }, { "model": "auth.permission", "pk": 99, "fields": { - "name": "Can delete ml class", + "name": "Can delete entity", "content_type": 25, - "codename": "delete_mlclass" + "codename": "delete_entity" } }, { "model": "auth.permission", "pk": 100, "fields": { - "name": "Can view ml class", + "name": "Can view entity", "content_type": 25, - "codename": "view_mlclass" + "codename": "view_entity" } }, { "model": "auth.permission", "pk": 101, "fields": { - "name": "Can add transcription", + "name": "Can add ml class", "content_type": 26, - "codename": "add_transcription" + "codename": "add_mlclass" } }, { "model": "auth.permission", "pk": 102, "fields": { - "name": "Can change transcription", + "name": "Can change ml class", "content_type": 26, - "codename": "change_transcription" + "codename": "change_mlclass" } }, { "model": "auth.permission", "pk": 103, "fields": { - "name": "Can delete transcription", + "name": "Can delete ml class", "content_type": 26, - "codename": "delete_transcription" + "codename": "delete_mlclass" } }, { "model": "auth.permission", "pk": 104, "fields": { - "name": "Can view transcription", + "name": "Can view ml class", "content_type": 26, - "codename": "view_transcription" + "codename": "view_mlclass" } }, { "model": "auth.permission", "pk": 105, "fields": { - "name": "Can add transcription entity", + "name": "Can add transcription", "content_type": 27, - "codename": "add_transcriptionentity" + "codename": "add_transcription" } }, { "model": "auth.permission", "pk": 106, "fields": { - "name": "Can change transcription entity", + "name": "Can change transcription", "content_type": 27, - "codename": "change_transcriptionentity" + "codename": "change_transcription" } }, { "model": "auth.permission", "pk": 107, "fields": { - "name": "Can delete transcription entity", + "name": "Can delete transcription", "content_type": 27, - "codename": "delete_transcriptionentity" + "codename": "delete_transcription" } }, { "model": "auth.permission", "pk": 108, "fields": { - "name": "Can view transcription entity", + "name": "Can view transcription", "content_type": 27, - "codename": "view_transcriptionentity" + "codename": "view_transcription" } }, { "model": "auth.permission", "pk": 109, "fields": { - "name": "Can add meta data", + "name": "Can add transcription entity", "content_type": 28, - "codename": "add_metadata" + "codename": "add_transcriptionentity" } }, { "model": "auth.permission", "pk": 110, "fields": { - "name": "Can change meta data", + "name": "Can change transcription entity", "content_type": 28, - "codename": "change_metadata" + "codename": "change_transcriptionentity" } }, { "model": "auth.permission", "pk": 111, "fields": { - "name": "Can delete meta data", + "name": "Can delete transcription entity", "content_type": 28, - "codename": "delete_metadata" + "codename": "delete_transcriptionentity" } }, { "model": "auth.permission", "pk": 112, "fields": { - "name": "Can view meta data", + "name": "Can view transcription entity", "content_type": 28, - "codename": "view_metadata" + "codename": "view_transcriptionentity" } }, { "model": "auth.permission", "pk": 113, "fields": { - "name": "Can add entity role", + "name": "Can add meta data", "content_type": 29, - "codename": "add_entityrole" + "codename": "add_metadata" } }, { "model": "auth.permission", "pk": 114, "fields": { - "name": "Can change entity role", + "name": "Can change meta data", "content_type": 29, - "codename": "change_entityrole" + "codename": "change_metadata" } }, { "model": "auth.permission", "pk": 115, "fields": { - "name": "Can delete entity role", + "name": "Can delete meta data", "content_type": 29, - "codename": "delete_entityrole" + "codename": "delete_metadata" } }, { "model": "auth.permission", "pk": 116, "fields": { - "name": "Can view entity role", + "name": "Can view meta data", "content_type": 29, - "codename": "view_entityrole" + "codename": "view_metadata" } }, { "model": "auth.permission", "pk": 117, "fields": { - "name": "Can add entity link", + "name": "Can add entity role", "content_type": 30, - "codename": "add_entitylink" + "codename": "add_entityrole" } }, { "model": "auth.permission", "pk": 118, "fields": { - "name": "Can change entity link", + "name": "Can change entity role", "content_type": 30, - "codename": "change_entitylink" + "codename": "change_entityrole" } }, { "model": "auth.permission", "pk": 119, "fields": { - "name": "Can delete entity link", + "name": "Can delete entity role", "content_type": 30, - "codename": "delete_entitylink" + "codename": "delete_entityrole" } }, { "model": "auth.permission", "pk": 120, "fields": { - "name": "Can view entity link", + "name": "Can view entity role", "content_type": 30, - "codename": "view_entitylink" + "codename": "view_entityrole" } }, { "model": "auth.permission", "pk": 121, "fields": { - "name": "Can add selection", + "name": "Can add entity link", "content_type": 31, - "codename": "add_selection" + "codename": "add_entitylink" } }, { "model": "auth.permission", "pk": 122, "fields": { - "name": "Can change selection", + "name": "Can change entity link", "content_type": 31, - "codename": "change_selection" + "codename": "change_entitylink" } }, { "model": "auth.permission", "pk": 123, "fields": { - "name": "Can delete selection", + "name": "Can delete entity link", "content_type": 31, - "codename": "delete_selection" + "codename": "delete_entitylink" } }, { "model": "auth.permission", "pk": 124, "fields": { - "name": "Can view selection", + "name": "Can view entity link", "content_type": 31, - "codename": "view_selection" + "codename": "view_entitylink" } }, { "model": "auth.permission", "pk": 125, "fields": { - "name": "Can add user", + "name": "Can add selection", "content_type": 32, - "codename": "add_user" + "codename": "add_selection" } }, { "model": "auth.permission", "pk": 126, "fields": { - "name": "Can change user", + "name": "Can change selection", "content_type": 32, - "codename": "change_user" + "codename": "change_selection" } }, { "model": "auth.permission", "pk": 127, "fields": { - "name": "Can delete user", + "name": "Can delete selection", "content_type": 32, - "codename": "delete_user" + "codename": "delete_selection" } }, { "model": "auth.permission", "pk": 128, "fields": { - "name": "Can view user", + "name": "Can view selection", "content_type": 32, - "codename": "view_user" + "codename": "view_selection" } }, { "model": "auth.permission", "pk": 129, "fields": { - "name": "Can add o auth credentials", + "name": "Can add user", "content_type": 33, - "codename": "add_oauthcredentials" + "codename": "add_user" } }, { "model": "auth.permission", "pk": 130, "fields": { - "name": "Can change o auth credentials", + "name": "Can change user", "content_type": 33, - "codename": "change_oauthcredentials" + "codename": "change_user" } }, { "model": "auth.permission", "pk": 131, "fields": { - "name": "Can delete o auth credentials", + "name": "Can delete user", "content_type": 33, - "codename": "delete_oauthcredentials" + "codename": "delete_user" } }, { "model": "auth.permission", "pk": 132, "fields": { - "name": "Can view o auth credentials", + "name": "Can view user", "content_type": 33, - "codename": "view_oauthcredentials" + "codename": "view_user" } }, { "model": "auth.permission", "pk": 133, "fields": { - "name": "Can add corpus right", + "name": "Can add o auth credentials", "content_type": 34, - "codename": "add_corpusright" + "codename": "add_oauthcredentials" } }, { "model": "auth.permission", "pk": 134, "fields": { - "name": "Can change corpus right", + "name": "Can change o auth credentials", "content_type": 34, - "codename": "change_corpusright" + "codename": "change_oauthcredentials" } }, { "model": "auth.permission", "pk": 135, "fields": { - "name": "Can delete corpus right", + "name": "Can delete o auth credentials", "content_type": 34, - "codename": "delete_corpusright" + "codename": "delete_oauthcredentials" } }, { "model": "auth.permission", "pk": 136, "fields": { - "name": "Can view corpus right", + "name": "Can view o auth credentials", "content_type": 34, - "codename": "view_corpusright" + "codename": "view_oauthcredentials" } }, { "model": "auth.permission", "pk": 137, "fields": { - "name": "Can add user scope", + "name": "Can add corpus right", "content_type": 35, - "codename": "add_userscope" + "codename": "add_corpusright" } }, { "model": "auth.permission", "pk": 138, "fields": { - "name": "Can change user scope", + "name": "Can change corpus right", "content_type": 35, - "codename": "change_userscope" + "codename": "change_corpusright" } }, { "model": "auth.permission", "pk": 139, "fields": { - "name": "Can delete user scope", + "name": "Can delete corpus right", "content_type": 35, - "codename": "delete_userscope" + "codename": "delete_corpusright" } }, { "model": "auth.permission", "pk": 140, "fields": { - "name": "Can view user scope", + "name": "Can view corpus right", "content_type": 35, - "codename": "view_userscope" + "codename": "view_corpusright" } }, { "model": "auth.permission", "pk": 141, "fields": { - "name": "Can add group", + "name": "Can add user scope", "content_type": 36, - "codename": "add_group" + "codename": "add_userscope" } }, { "model": "auth.permission", "pk": 142, "fields": { - "name": "Can change group", + "name": "Can change user scope", "content_type": 36, - "codename": "change_group" + "codename": "change_userscope" } }, { "model": "auth.permission", "pk": 143, "fields": { - "name": "Can delete group", + "name": "Can delete user scope", "content_type": 36, - "codename": "delete_group" + "codename": "delete_userscope" } }, { "model": "auth.permission", "pk": 144, "fields": { - "name": "Can view group", + "name": "Can view user scope", "content_type": 36, - "codename": "view_group" + "codename": "view_userscope" } }, { "model": "auth.permission", "pk": 145, "fields": { - "name": "Can add membership", + "name": "Can add group", "content_type": 37, - "codename": "add_membership" + "codename": "add_group" } }, { "model": "auth.permission", "pk": 146, "fields": { - "name": "Can change membership", + "name": "Can change group", "content_type": 37, - "codename": "change_membership" + "codename": "change_group" } }, { "model": "auth.permission", "pk": 147, "fields": { - "name": "Can delete membership", + "name": "Can delete group", "content_type": 37, - "codename": "delete_membership" + "codename": "delete_group" } }, { "model": "auth.permission", "pk": 148, "fields": { - "name": "Can view membership", + "name": "Can view group", "content_type": 37, - "codename": "view_membership" + "codename": "view_group" } }, { "model": "auth.permission", "pk": 149, "fields": { - "name": "Can add data file", + "name": "Can add membership", "content_type": 38, - "codename": "add_datafile" + "codename": "add_membership" } }, { "model": "auth.permission", "pk": 150, "fields": { - "name": "Can change data file", + "name": "Can change membership", "content_type": 38, - "codename": "change_datafile" + "codename": "change_membership" } }, { "model": "auth.permission", "pk": 151, "fields": { - "name": "Can delete data file", + "name": "Can delete membership", "content_type": 38, - "codename": "delete_datafile" + "codename": "delete_membership" } }, { "model": "auth.permission", "pk": 152, "fields": { - "name": "Can view data file", + "name": "Can view membership", "content_type": 38, - "codename": "view_datafile" + "codename": "view_membership" } }, { "model": "auth.permission", "pk": 153, "fields": { - "name": "Can add data import", + "name": "Can add data file", "content_type": 39, - "codename": "add_dataimport" + "codename": "add_datafile" } }, { "model": "auth.permission", "pk": 154, "fields": { - "name": "Can change data import", + "name": "Can change data file", "content_type": 39, - "codename": "change_dataimport" + "codename": "change_datafile" } }, { "model": "auth.permission", "pk": 155, "fields": { - "name": "Can delete data import", + "name": "Can delete data file", "content_type": 39, - "codename": "delete_dataimport" + "codename": "delete_datafile" } }, { "model": "auth.permission", "pk": 156, "fields": { - "name": "Can view data import", + "name": "Can view data file", "content_type": 39, - "codename": "view_dataimport" + "codename": "view_datafile" } }, { "model": "auth.permission", "pk": 157, "fields": { - "name": "Can add repository", + "name": "Can add data import", "content_type": 40, - "codename": "add_repository" + "codename": "add_dataimport" } }, { "model": "auth.permission", "pk": 158, "fields": { - "name": "Can change repository", + "name": "Can change data import", "content_type": 40, - "codename": "change_repository" + "codename": "change_dataimport" } }, { "model": "auth.permission", "pk": 159, "fields": { - "name": "Can delete repository", + "name": "Can delete data import", "content_type": 40, - "codename": "delete_repository" + "codename": "delete_dataimport" } }, { "model": "auth.permission", "pk": 160, "fields": { - "name": "Can view repository", + "name": "Can view data import", "content_type": 40, - "codename": "view_repository" + "codename": "view_dataimport" } }, { "model": "auth.permission", "pk": 161, "fields": { - "name": "Can add revision", + "name": "Can add repository", "content_type": 41, - "codename": "add_revision" + "codename": "add_repository" } }, { "model": "auth.permission", "pk": 162, "fields": { - "name": "Can change revision", + "name": "Can change repository", "content_type": 41, - "codename": "change_revision" + "codename": "change_repository" } }, { "model": "auth.permission", "pk": 163, "fields": { - "name": "Can delete revision", + "name": "Can delete repository", "content_type": 41, - "codename": "delete_revision" + "codename": "delete_repository" } }, { "model": "auth.permission", "pk": 164, "fields": { - "name": "Can view revision", + "name": "Can view repository", "content_type": 41, - "codename": "view_revision" + "codename": "view_repository" } }, { "model": "auth.permission", "pk": 165, "fields": { - "name": "Can add worker", + "name": "Can add revision", "content_type": 42, - "codename": "add_worker" + "codename": "add_revision" } }, { "model": "auth.permission", "pk": 166, "fields": { - "name": "Can change worker", + "name": "Can change revision", "content_type": 42, - "codename": "change_worker" + "codename": "change_revision" } }, { "model": "auth.permission", "pk": 167, "fields": { - "name": "Can delete worker", + "name": "Can delete revision", "content_type": 42, - "codename": "delete_worker" + "codename": "delete_revision" } }, { "model": "auth.permission", "pk": 168, "fields": { - "name": "Can view worker", + "name": "Can view revision", "content_type": 42, - "codename": "view_worker" + "codename": "view_revision" } }, { "model": "auth.permission", "pk": 169, "fields": { - "name": "Can add worker version", + "name": "Can add worker", "content_type": 43, - "codename": "add_workerversion" + "codename": "add_worker" } }, { "model": "auth.permission", "pk": 170, "fields": { - "name": "Can change worker version", + "name": "Can change worker", "content_type": 43, - "codename": "change_workerversion" + "codename": "change_worker" } }, { "model": "auth.permission", "pk": 171, "fields": { - "name": "Can delete worker version", + "name": "Can delete worker", "content_type": 43, - "codename": "delete_workerversion" + "codename": "delete_worker" } }, { "model": "auth.permission", "pk": 172, "fields": { - "name": "Can view worker version", + "name": "Can view worker", "content_type": 43, - "codename": "view_workerversion" + "codename": "view_worker" } }, { "model": "auth.permission", "pk": 173, "fields": { - "name": "Can add git ref", + "name": "Can add worker version", "content_type": 44, - "codename": "add_gitref" + "codename": "add_workerversion" } }, { "model": "auth.permission", "pk": 174, "fields": { - "name": "Can change git ref", + "name": "Can change worker version", "content_type": 44, - "codename": "change_gitref" + "codename": "change_workerversion" } }, { "model": "auth.permission", "pk": 175, "fields": { - "name": "Can delete git ref", + "name": "Can delete worker version", "content_type": 44, - "codename": "delete_gitref" + "codename": "delete_workerversion" } }, { "model": "auth.permission", "pk": 176, "fields": { - "name": "Can view git ref", + "name": "Can view worker version", "content_type": 44, - "codename": "view_gitref" + "codename": "view_workerversion" } }, { "model": "auth.permission", "pk": 177, "fields": { - "name": "Can add worker run", + "name": "Can add git ref", "content_type": 45, - "codename": "add_workerrun" + "codename": "add_gitref" } }, { "model": "auth.permission", "pk": 178, "fields": { - "name": "Can change worker run", + "name": "Can change git ref", "content_type": 45, - "codename": "change_workerrun" + "codename": "change_gitref" } }, { "model": "auth.permission", "pk": 179, "fields": { - "name": "Can delete worker run", + "name": "Can delete git ref", "content_type": 45, - "codename": "delete_workerrun" + "codename": "delete_gitref" } }, { "model": "auth.permission", "pk": 180, "fields": { - "name": "Can view worker run", + "name": "Can view git ref", "content_type": 45, - "codename": "view_workerrun" + "codename": "view_gitref" } }, { "model": "auth.permission", "pk": 181, "fields": { - "name": "Can add data import element", + "name": "Can add worker run", "content_type": 46, - "codename": "add_dataimportelement" + "codename": "add_workerrun" } }, { "model": "auth.permission", "pk": 182, "fields": { - "name": "Can change data import element", + "name": "Can change worker run", "content_type": 46, - "codename": "change_dataimportelement" + "codename": "change_workerrun" } }, { "model": "auth.permission", "pk": 183, "fields": { - "name": "Can delete data import element", + "name": "Can delete worker run", "content_type": 46, - "codename": "delete_dataimportelement" + "codename": "delete_workerrun" } }, { "model": "auth.permission", "pk": 184, "fields": { - "name": "Can view data import element", + "name": "Can view worker run", "content_type": 46, + "codename": "view_workerrun" + } +}, +{ + "model": "auth.permission", + "pk": 185, + "fields": { + "name": "Can add data import element", + "content_type": 47, + "codename": "add_dataimportelement" + } +}, +{ + "model": "auth.permission", + "pk": 186, + "fields": { + "name": "Can change data import element", + "content_type": 47, + "codename": "change_dataimportelement" + } +}, +{ + "model": "auth.permission", + "pk": 187, + "fields": { + "name": "Can delete data import element", + "content_type": 47, + "codename": "delete_dataimportelement" + } +}, +{ + "model": "auth.permission", + "pk": 188, + "fields": { + "name": "Can view data import element", + "content_type": 47, "codename": "view_dataimportelement" } }, { "model": "ponos.workflow", - "pk": "c7d0fc3f-2189-494e-a124-a5179e09fe8d", + "pk": "17abc122-a22d-4788-b8ae-8a6f576e55ed", "fields": { "recipe": "tasks:\n docker_build:\n image: reco", "created": "2020-02-02T01:23:45.678Z", @@ -3165,7 +3269,7 @@ }, { "model": "ponos.task", - "pk": "4511527d-e7fb-45f1-be81-2727e81eb148", + "pk": "b579d90f-b7f1-49ff-b30d-06671078ea01", "fields": { "run": 0, "depth": 0, @@ -3178,7 +3282,7 @@ "has_docker_socket": false, "image_artifact": null, "agent": null, - "workflow": "c7d0fc3f-2189-494e-a124-a5179e09fe8d", + "workflow": "17abc122-a22d-4788-b8ae-8a6f576e55ed", "container": null, "created": "2020-02-02T01:23:45.678Z", "updated": "2020-02-02T01:23:45.678Z", @@ -3187,9 +3291,9 @@ }, { "model": "ponos.artifact", - "pk": "462af040-499c-4b7b-85d1-25d2d1b349e8", + "pk": "b795d482-d08d-4599-ae82-db16ea4331e8", "fields": { - "task": "4511527d-e7fb-45f1-be81-2727e81eb148", + "task": "b579d90f-b7f1-49ff-b30d-06671078ea01", "path": "/path/to/docker_build", "size": 42000, "content_type": "application/octet-stream", diff --git a/arkindex/documents/management/commands/build_fixtures.py b/arkindex/documents/management/commands/build_fixtures.py index 8873d20619..f9481406de 100644 --- a/arkindex/documents/management/commands/build_fixtures.py +++ b/arkindex/documents/management/commands/build_fixtures.py @@ -9,7 +9,7 @@ from django.utils import timezone as DjangoTimeZone from arkindex.dataimport.models import RepositoryType, WorkerVersion, WorkerVersionState, Workflow from arkindex.documents.models import Corpus, DataSource, Element, MetaData from arkindex.images.models import Image, ImageServer, Zone -from arkindex.users.models import CorpusRight, User +from arkindex.users.models import CorpusRight, Group, User from arkindex_common.enums import MetaType, TranscriptionType from arkindex_common.ml_tool import MLToolType from ponos.models import State @@ -61,18 +61,29 @@ class Command(BaseCommand): line_zone = makezone(img1, 400, 500) # Create an admin, an internal and a normal user - superuser = User.objects.create_superuser('root@root.fr', 'Pa$$w0rd') + superuser = User.objects.create_superuser('root@root.fr', 'Pa$$w0rd', display_name='Admin') superuser.verified_email = True superuser.save() - internal_user = User.objects.create_user('internal@internal.fr', 'Pa$$w0rd', internal=True) + internal_user = User.objects.create_user( + 'internal@internal.fr', + 'Pa$$w0rd', + display_name='Internal user', + internal=True, + ) internal_user.verified_email = True internal_user.save() - user = User.objects.create_user('user@user.fr', 'Pa$$w0rd') + user = User.objects.create_user('user@user.fr', 'Pa$$w0rd', display_name='Test user') user.verified_email = True user.save() + # Create a group owned by the user with 2 other members + group = Group.objects.create(name="User group", public=False) + group.memberships.create(user=user, level=100) + group.users.create(email='user2@user.fr', display_name='Test user write', through_defaults={'level': 50}) + group.users.create(email='user3@user.fr', display_name='Test user read', through_defaults={'level': 10}) + # Create 1 data source for transcriptions recognizer_source = DataSource.objects.create( type=MLToolType.Recognizer, diff --git a/arkindex/project/api_v1.py b/arkindex/project/api_v1.py index 1dd403b540..352d09dfbe 100644 --- a/arkindex/project/api_v1.py +++ b/arkindex/project/api_v1.py @@ -86,6 +86,7 @@ from arkindex.project.openapi import SchemaGenerator from arkindex.users.api import ( CredentialsList, CredentialsRetrieve, + GroupMembershipsList, GroupsList, JobList, JobRetrieve, @@ -248,6 +249,7 @@ api = [ # Rights management path('groups/', GroupsList.as_view(), name='groups-list'), + path('group/<uuid:pk>/members/', GroupMembershipsList.as_view(), name='group-members'), # Asynchronous jobs path('jobs/', JobList.as_view(), name='jobs-list'), diff --git a/arkindex/project/tests/__init__.py b/arkindex/project/tests/__init__.py index b42d515b72..fc941f085b 100644 --- a/arkindex/project/tests/__init__.py +++ b/arkindex/project/tests/__init__.py @@ -80,6 +80,7 @@ class FixtureMixin(object): def setUpTestData(cls): cls.corpus = Corpus.objects.get(name='Unit Tests') cls.user = User.objects.get(email='user@user.fr') + cls.group = cls.user.groups.get(name='User group') cls.superuser = User.objects.get(email='root@root.fr') cls.imgsrv = ImageServer.objects.get(url='http://server') diff --git a/arkindex/users/api.py b/arkindex/users/api.py index 18268aaf8d..9e3710be3e 100644 --- a/arkindex/users/api.py +++ b/arkindex/users/api.py @@ -8,6 +8,7 @@ from django.contrib.auth.mixins import UserPassesTestMixin from django.contrib.auth.tokens import default_token_generator from django.core.mail import send_mail from django.db.models import Count, Q +from django.shortcuts import get_object_or_404 from django.template.loader import render_to_string from django.urls import reverse from django.utils.http import urlsafe_base64_encode @@ -35,6 +36,7 @@ from arkindex.users.models import Group, OAuthStatus, Scope, User, UserScope from arkindex.users.providers import get_provider, oauth_providers from arkindex.users.serializers import ( EmailLoginSerializer, + GroupMembershipsSerializer, GroupSerializer, JobSerializer, NewUserSerializer, @@ -461,8 +463,8 @@ class GroupsList(ListCreateAPIView): def get_queryset(self): # List public groups and ones to which user belongs return Group.objects \ - .filter(Q(public=True) | Q(users__in=[self.request.user])) \ .annotate(members_count=Count('users')) \ + .filter(Q(public=True) | Q(users__in=[self.request.user])) \ .order_by('id') @@ -501,3 +503,23 @@ class JobRetrieve(RetrieveDestroyAPIView): if instance.get_status(refresh=False) == JobStatus.STARTED: raise ValidationError(['Cannot delete a running job.']) instance.delete() + + +class GroupMembershipsList(ListAPIView): + """ + List members of a group to which user belongs with their privileges + """ + serializer_class = GroupMembershipsSerializer + permission_classes = (IsVerified, ) + openapi_overrides = { + 'security': [], + 'tags': ['users'], + } + + def get_queryset(self): + group = get_object_or_404(Group.objects.filter( + # Filter groups to which user belongs + users__in=[self.request.user], + id=self.kwargs['pk'] + )) + return group.memberships.order_by('user__display_name', 'id').prefetch_related('user') diff --git a/arkindex/users/models.py b/arkindex/users/models.py index 1f47cea71e..38dca63096 100644 --- a/arkindex/users/models.py +++ b/arkindex/users/models.py @@ -10,6 +10,24 @@ from arkindex.users.managers import UserManager from arkindex.users.providers import get_provider, oauth_providers +class LevelRight(Enum): + Admin = 'admin', 100 + Write = 'write', 50 + Read = 'read', 10 + + def __new__(cls, value, level): + right = object.__new__(cls) + right._value_ = value + right.level = level + return right + + @classmethod + def from_level(cls, level): + for right in cls.__iter__(): + if right.level <= level: + return right + + class User(AbstractBaseUser): email = models.EmailField( verbose_name='email address', diff --git a/arkindex/users/serializers.py b/arkindex/users/serializers.py index 47c9ee99a2..2317e19f9b 100644 --- a/arkindex/users/serializers.py +++ b/arkindex/users/serializers.py @@ -9,7 +9,7 @@ from django.utils.http import urlsafe_base64_decode from rest_framework import serializers from arkindex.project.serializer_fields import EnumField -from arkindex.users.models import Group, Membership, OAuthCredentials, OAuthStatus, User +from arkindex.users.models import Group, LevelRight, Membership, OAuthCredentials, OAuthStatus, User from transkribus import TranskribusAPI logging.basicConfig( @@ -258,3 +258,23 @@ class JobSerializer(serializers.Serializer): but the enum is just a plain object and not an Enum for Py2 compatibility. """ return instance.get_status(refresh=False) + + +class GroupMembershipsSerializer(serializers.ModelSerializer): + id = serializers.StringRelatedField(source='user.id') + display_name = serializers.StringRelatedField(source='user.display_name') + email = serializers.StringRelatedField(source='user.email') + level = serializers.SerializerMethodField() + + class Meta: + model = Membership + fields = ( + 'id', + 'display_name', + 'email', + 'level' + ) + + def get_level(self, obj): + right = LevelRight.from_level(obj.level) + return right and right.value diff --git a/arkindex/users/tests/test_membership.py b/arkindex/users/tests/test_membership.py index 93034b210c..95adf48159 100644 --- a/arkindex/users/tests/test_membership.py +++ b/arkindex/users/tests/test_membership.py @@ -64,6 +64,15 @@ class TestMembership(FixtureAPITestCase): [(self.user.id, 100)] ) + def test_crate_group_duplicated_name(self): + """ + Assert multiple groups can have a similar name + """ + self.client.force_login(self.user) + with self.assertNumQueries(6): + response = self.client.post(reverse('api:groups-list'), {'name': self.group.name}) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + def test_list_groups(self): """ List groups which are public or for which the user is a member @@ -72,14 +81,90 @@ class TestMembership(FixtureAPITestCase): with self.assertNumQueries(4): response = self.client.get(reverse('api:groups-list')) self.assertDictEqual(response.json(), { - 'count': 1, + 'count': 2, + 'number': 1, + 'next': None, + 'previous': None, + 'results': [ + { + 'id': str(self.group.id), + 'members_count': 3, + 'name': 'User group', + 'public': False + }, { + 'id': str(self.admin_group.id), + 'members_count': 1, + 'name': 'Admin group', + 'public': True + } + ] + }) + + def test_list_members_requires_member_user(self): + """ + Only users that belong to a group have the ability to list the members + Otherwise we return a 404 as usual + """ + self.client.force_login(self.user) + with self.assertNumQueries(3): + response = self.client.get(reverse('api:group-members', kwargs={'pk': str(self.admin_group.id)})) + self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) + + def test_list_members_level_right(self): + """ + List members of a group with their right corresponding to privileges level + Members are ordered by display name + """ + self.client.force_login(self.user) + with self.assertNumQueries(6): + response = self.client.get(reverse('api:group-members', kwargs={'pk': str(self.group.id)})) + read_member, write_member, admin_member = self.group.memberships.order_by('level') + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.json(), { + 'count': 3, + 'next': None, 'number': 1, + 'previous': None, + 'results': [ + { + 'display_name': 'Test user', + 'email': admin_member.user.email, + 'id': str(admin_member.user.id), + 'level': 'admin' + }, { + 'display_name': 'Test user read', + 'email': read_member.user.email, + 'id': str(read_member.user.id), + 'level': 'read' + }, { + 'display_name': 'Test user write', + 'email': write_member.user.email, + 'id': str(write_member.user.id), + 'level': 'write' + } + ] + }) + + def test_list_members_null_right(self): + """ + Non defined right level should return None + """ + self.client.force_login(self.user) + group = self.user.groups.create(name='Another group', through_defaults={'level': 1}) + with self.assertNumQueries(6): + response = self.client.get(reverse('api:group-members', kwargs={'pk': str(group.id)})) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.json(), { + 'count': 1, 'next': None, + 'number': 1, 'previous': None, - 'results': [{ - 'id': str(self.admin_group.id), - 'members_count': 1, - 'name': 'Admin group', - 'public': True - }] + 'results': [ + { + 'display_name': self.user.display_name, + 'email': self.user.email, + 'id': str(self.user.id), + 'level': None + } + ] }) -- GitLab