Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • arkindex/backend
1 result
Show changes
Commits on Source (10)
Showing
with 138 additions and 77 deletions
......@@ -11,7 +11,7 @@ include:
# For jobs that run backend scripts directly
.backend-setup:
image: registry.gitlab.com/arkindex/backend/base:python-3.8
image: registry.gitlab.com/arkindex/backend/base:django-4
cache:
paths:
......
FROM registry.gitlab.com/arkindex/backend/base:python-3.8 as build
FROM registry.gitlab.com/arkindex/backend/base:django-4 as build
RUN mkdir build
ADD . build
RUN cd build && python3 setup.py sdist
FROM registry.gitlab.com/arkindex/backend/base:python-3.8
FROM registry.gitlab.com/arkindex/backend/base:django-4
ARG PONOS_BRANCH=master
ARG PONOS_ID=10017043
ARG TRANSKRIBUS_BRANCH=master
......
......@@ -61,7 +61,7 @@ RUN python -m nuitka \
arkindex/manage.py
# Start over from a clean setup
FROM registry.gitlab.com/arkindex/backend/base:python-3.8 as build
FROM registry.gitlab.com/arkindex/backend/base:django-4 as build
# Import files from compilation
RUN mkdir /usr/share/arkindex
......
1.2.0-beta1
1.2.0-beta3
......@@ -153,10 +153,6 @@ class DataImportsList(ProcessACLMixin, ListAPIView):
def get_queryset(self):
filters = Q()
if 'with_workflow' in self.request.query_params:
with_workflow = self.request.query_params['with_workflow']
filters &= Q(workflow__isnull=bool(with_workflow and with_workflow.lower() in ('false', '0')))
if 'corpus' in self.request.query_params:
corpus_id = self.request.query_params['corpus']
try:
......@@ -166,14 +162,23 @@ class DataImportsList(ProcessACLMixin, ListAPIView):
# No supplementary validation is required on the corpus ID filter
filters &= Q(corpus=corpus_id)
# Default import_mode variable for compatibility later
import_mode = None
if 'mode' in self.request.query_params:
try:
filters &= Q(mode=DataImportMode(self.request.query_params['mode']))
import_mode = DataImportMode(self.request.query_params['mode'])
filters &= Q(mode=import_mode)
except ValueError:
raise ValidationError({
'mode': ["Mode '{}' does not exist".format(self.request.query_params['mode'])]
})
# When listing template processes, the configuration filters makes no sense
if import_mode != DataImportMode.Template:
if 'with_workflow' in self.request.query_params:
with_workflow = self.request.query_params['with_workflow']
filters &= Q(workflow__isnull=bool(with_workflow and with_workflow.lower() in ('false', '0')))
if 'created' in self.request.query_params:
created = self.request.query_params['created']
creator_filter = Q(creator_id=self.request.user.id)
......@@ -184,6 +189,9 @@ class DataImportsList(ProcessACLMixin, ListAPIView):
if 'id' in self.request.query_params:
filters &= Q(id__startswith=self.request.query_params['id'])
if 'name' in self.request.query_params:
filters &= Q(name__icontains=self.request.query_params['name'])
qs = self.readable_processes \
.filter(filters) \
.prefetch_related('workflow__tasks')
......
......@@ -259,6 +259,31 @@ class TestImports(FixtureAPITestCase):
self.assertEqual(len(data['results']), 1)
self.assertEqual(data['results'][0]['id'], str(dataimport2.id))
def test_list_filter_name(self):
self.client.force_login(self.user)
dataimport_id_1 = str(uuid.uuid4())
dataimport1 = self.corpus.imports.create(
id=dataimport_id_1,
creator=self.user,
mode=DataImportMode.Workers,
name='Number One'
)
dataimport_id_2 = str(uuid.uuid4())
self.corpus.imports.create(
id=dataimport_id_2,
creator=self.user,
mode=DataImportMode.Workers,
name='Numero Duo'
)
response = self.client.get(reverse('api:import-list'), {'name': 'Numb', 'with_workflow': False})
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(len(data['results']), 1)
self.assertEqual(data['results'][0]['id'], str(dataimport1.id))
def test_list_no_tasks(self):
"""
Ensure the DataImport reports an Unscheduled state when there are no tasks in its workflow
......
......@@ -299,3 +299,16 @@ class TestTemplates(FixtureAPITestCase):
# Check that every new worker_run is the same as one of the template's
self.assertTrue(self.template.worker_runs.filter(version=parent_run.version).exists())
self.assertTrue(self.template.worker_runs.filter(version=child_run.version).exists())
def test_list_templates_ignores_configuration_filter(self):
self.client.force_login(self.user)
with self.assertNumQueries(7):
response = self.client.get(
reverse('api:import-list'),
data={"mode": 'template', "with_workflow": True},
content_type='application/json',
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
# The 'with_workflow' filter should be ignored and some templates should be returned
# If it wasn't, no template are returned because none are configured
self.assertTrue(len(response.json()) > 0)
......@@ -9,7 +9,6 @@ from arkindex.documents.models import Corpus, EntityType, MetaType
from arkindex.project.tests import FixtureTestCase
@override_settings(ARKINDEX_FEATURES={'search': True})
class TestReindexCommand(FixtureTestCase):
@classmethod
......@@ -32,6 +31,7 @@ class TestReindexCommand(FixtureTestCase):
cls.page.add_parent(vol)
cls.line.add_parent(cls.page)
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch("arkindex.documents.indexer.solr")
def test_run_setup(self, mock_solr):
"""
......@@ -48,6 +48,7 @@ class TestReindexCommand(FixtureTestCase):
self.assertEqual(mock_solr.delete_doc_by_query.call_count, 0)
self.assertEqual(mock_solr.index.call_count, 0)
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch("arkindex.documents.indexer.solr")
def test_run_empty_element(self, mock_solr):
"""
......@@ -60,6 +61,7 @@ class TestReindexCommand(FixtureTestCase):
self.assertEqual(mock_solr.delete_doc_by_query.call_count, 0)
self.assertEqual(mock_solr.index.call_count, 0)
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_run_multiple_elements(self, mock_solr):
"""
......@@ -110,6 +112,7 @@ class TestReindexCommand(FixtureTestCase):
)
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_run_transcriptions(self, mock_solr):
"""
......@@ -186,6 +189,7 @@ class TestReindexCommand(FixtureTestCase):
)
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_run_classifications(self, mock_solr):
"""
......@@ -262,6 +266,7 @@ class TestReindexCommand(FixtureTestCase):
])
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_run_metadatas(self, mock_solr):
"""
......@@ -344,6 +349,7 @@ class TestReindexCommand(FixtureTestCase):
])
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_run_entities(self, mock_solr):
"""
......@@ -457,6 +463,7 @@ class TestReindexCommand(FixtureTestCase):
])
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_run_element_worker(self, mock_solr):
"""
......@@ -497,6 +504,7 @@ class TestReindexCommand(FixtureTestCase):
])
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_run_mutiple_parents(self, mock_solr):
"""
......@@ -558,6 +566,7 @@ class TestReindexCommand(FixtureTestCase):
])
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.indexer.solr')
def test_drop(self, mock_solr):
"""
......@@ -573,6 +582,7 @@ class TestReindexCommand(FixtureTestCase):
self.assertEqual(query, '*:*')
self.assertDictEqual(kwargs, {'commit': True})
@override_settings(ARKINDEX_FEATURES={'search': True})
def test_corpus_not_found(self):
corpus_id = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
with self.assertRaises(CommandError) as context:
......@@ -582,6 +592,7 @@ class TestReindexCommand(FixtureTestCase):
f'Corpus {corpus_id} does not exist'
)
@override_settings(ARKINDEX_FEATURES={'search': True})
def test_corpus_not_indexable(self):
self.private_corpus.indexable = False
self.private_corpus.save()
......
......@@ -10,7 +10,6 @@ from arkindex.documents.models import Corpus
from arkindex.project.tests import FixtureAPITestCase
@override_settings(ARKINDEX_FEATURES={'search': True})
class TestSearchApi(FixtureAPITestCase):
@classmethod
......@@ -61,16 +60,19 @@ class TestSearchApi(FixtureAPITestCase):
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.json(), ['Search features are not available on this instance.'])
@override_settings(ARKINDEX_FEATURES={'search': True})
def test_corpus_not_found(self):
response = self.client.get(reverse('api:corpus-search', kwargs={'pk': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(response.json(), {'detail': 'Not found.'})
@override_settings(ARKINDEX_FEATURES={'search': True})
def test_corpus_no_permission(self):
private_corpus = Corpus.objects.create(name='private', public=False)
response = self.client.get(reverse('api:corpus-search', kwargs={'pk': private_corpus.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
@override_settings(ARKINDEX_FEATURES={'search': True})
def test_corpus_not_indexable(self):
self.corpus.indexable = False
self.corpus.save()
......@@ -78,6 +80,7 @@ class TestSearchApi(FixtureAPITestCase):
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.json(), [f'Corpus {self.corpus.id} is not indexable.'])
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.api.search.solr')
def test_index_not_found(self, mock_solr):
mock_solr.collections.exists.return_value = False
......@@ -85,6 +88,7 @@ class TestSearchApi(FixtureAPITestCase):
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(response.json(), {'detail': f'Corpus index project-{self.corpus.id} not found.'})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.api.search.solr')
def test_search_empty_query(self, mock_solr):
mock_solr.collections.exists.return_value = True
......@@ -92,6 +96,7 @@ class TestSearchApi(FixtureAPITestCase):
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.json(), {'query': ['This field is required.']})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.api.search.solr')
def test_search_wrong_query(self, mock_solr):
# Mock SolrClient
......@@ -106,6 +111,7 @@ class TestSearchApi(FixtureAPITestCase):
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.json(), ['Query "*)" is not valid.'])
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.api.search.solr')
def test_search(self, mock_solr):
collection_name = f'project-{self.corpus.id}'
......@@ -188,6 +194,7 @@ class TestSearchApi(FixtureAPITestCase):
]
})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.api.search.solr')
def test_search_only_facets(self, mock_solr):
docs = [{
......@@ -236,6 +243,7 @@ class TestSearchApi(FixtureAPITestCase):
'facets': solr_response.get_facets()
})
@override_settings(ARKINDEX_FEATURES={'search': True})
@patch('arkindex.documents.api.search.solr')
def test_search_pagination(self, mock_solr):
# Mock SolrClient
......
......@@ -321,11 +321,8 @@ if conf['cache']['type'] is None:
if conf['cache']['type'] == CacheType.Redis:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': conf['cache']['url'],
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
elif conf['cache']['type'] == CacheType.Memcached:
......
......@@ -58,4 +58,4 @@ WHERE element.id = children_ids.id ;
DELETE
FROM "documents_element"
WHERE "documents_element"."id" = '{id}'::uuid
\ No newline at end of file
WHERE "documents_element"."id" = '{id}'::uuid
......@@ -28,8 +28,8 @@ WHERE ("documents_elementpath"."element_id" IN
(SELECT DISTINCT U0."id"
FROM "documents_element" U0
INNER JOIN "documents_elementpath" U1 ON (U0."id" = U1."element_id")
WHERE U1."path" @ > ARRAY['{source_id}'::uuid]::uuid[])
AND "documents_elementpath"."path" @ > ARRAY['{parent_id}'::uuid]::uuid[]);
WHERE U1."path" @ > (ARRAY['{source_id}'::uuid])::uuid[])
AND "documents_elementpath"."path" @ > (ARRAY['{parent_id}'::uuid])::uuid[]);
DELETE
FROM "documents_elementpath"
......@@ -37,13 +37,13 @@ WHERE ("documents_elementpath"."element_id" IN
(SELECT DISTINCT U0."id"
FROM "documents_element" U0
INNER JOIN "documents_elementpath" U1 ON (U0."id" = U1."element_id")
WHERE U1."path" @ > ARRAY['{source_id}'::uuid]::uuid[])
AND "documents_elementpath"."path" @ > ARRAY['{parent_id}'::uuid]::uuid[]);
WHERE U1."path" @ > (ARRAY['{source_id}'::uuid])::uuid[])
AND "documents_elementpath"."path" @ > (ARRAY['{parent_id}'::uuid])::uuid[]);
DELETE
FROM "documents_elementpath"
WHERE ("documents_elementpath"."element_id" = '{source_id}'::uuid
AND "documents_elementpath"."path" @ > ARRAY['{parent_id}'::uuid]::uuid[]);
AND "documents_elementpath"."path" @ > (ARRAY['{parent_id}'::uuid])::uuid[]);
INSERT INTO "documents_elementpath" ("id",
......@@ -70,14 +70,14 @@ FROM "documents_elementpath"
INNER JOIN "documents_element" ON ("documents_elementpath"."element_id" = "documents_element"."id")
WHERE ("documents_element"."type_id" = '{page_type_id}'::uuid
AND "documents_elementpath"."path"[array_length("documents_elementpath"."path", 1)] = '{destination_id}'::uuid
AND "documents_elementpath"."path" && ARRAY['{destination_id}'::uuid]::uuid[]);
AND "documents_elementpath"."path" && (ARRAY['{destination_id}'::uuid])::uuid[]);
SELECT "documents_elementpath"."id",
"documents_elementpath"."element_id",
"documents_elementpath"."path",
"documents_elementpath"."ordering"
FROM "documents_elementpath"
WHERE "documents_elementpath"."path" @ > ARRAY['{source_id}'::uuid]::uuid[];
WHERE "documents_elementpath"."path" @ > (ARRAY['{source_id}'::uuid])::uuid[];
DELETE
FROM "documents_elementpath"
......
......@@ -28,8 +28,8 @@ WHERE ("documents_elementpath"."element_id" IN
(SELECT DISTINCT U0."id"
FROM "documents_element" U0
INNER JOIN "documents_elementpath" U1 ON (U0."id" = U1."element_id")
WHERE U1."path" @ > ARRAY['{source_id}'::uuid]::uuid[])
AND "documents_elementpath"."path" @ > ARRAY['{parent_id}'::uuid]::uuid[]);
WHERE U1."path" @ > (ARRAY['{source_id}'::uuid])::uuid[])
AND "documents_elementpath"."path" @ > (ARRAY['{parent_id}'::uuid])::uuid[]);
DELETE
FROM "documents_elementpath"
......@@ -37,14 +37,14 @@ WHERE ("documents_elementpath"."element_id" IN
(SELECT DISTINCT U0."id"
FROM "documents_element" U0
INNER JOIN "documents_elementpath" U1 ON (U0."id" = U1."element_id")
WHERE U1."path" @ > ARRAY['{source_id}'::uuid]::uuid[])
AND "documents_elementpath"."path" @ > ARRAY['{parent_id}'::uuid]::uuid[]);
WHERE U1."path" @ > (ARRAY['{source_id}'::uuid])::uuid[])
AND "documents_elementpath"."path" @ > (ARRAY['{parent_id}'::uuid])::uuid[]);
DELETE
FROM "documents_elementpath"
WHERE ("documents_elementpath"."element_id" = '{source_id}'::uuid
AND "documents_elementpath"."path" @ > ARRAY['{parent_id}'::uuid]::uuid[]);
AND "documents_elementpath"."path" @ > (ARRAY['{parent_id}'::uuid])::uuid[]);
RELEASE SAVEPOINT "{savepoints[0]}";
......@@ -61,14 +61,14 @@ FROM "documents_elementpath"
INNER JOIN "documents_element" ON ("documents_elementpath"."element_id" = "documents_element"."id")
WHERE ("documents_element"."type_id" = '{page_type_id}'::uuid
AND "documents_elementpath"."path"[array_length("documents_elementpath"."path", 1)] = '{destination_id}'::uuid
AND "documents_elementpath"."path" && ARRAY['{destination_id}'::uuid]::uuid[]);
AND "documents_elementpath"."path" && (ARRAY['{destination_id}'::uuid])::uuid[]);
SELECT "documents_elementpath"."id",
"documents_elementpath"."element_id",
"documents_elementpath"."path",
"documents_elementpath"."ordering"
FROM "documents_elementpath"
WHERE "documents_elementpath"."path" @ > ARRAY['{source_id}'::uuid]::uuid[];
WHERE "documents_elementpath"."path" @ > (ARRAY['{source_id}'::uuid])::uuid[];
INSERT INTO "documents_elementpath" ("id",
"element_id",
......
......@@ -10,7 +10,7 @@ FROM
WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
AND "documents_element"."worker_version_id" = '{version_id}'::uuid
AND ("documents_element"."id" = '{parent_id}'::uuid
OR "documents_elementpath"."path" && ARRAY['{parent_id}'::uuid]::uuid[]))) as input on (array[input.id] && p.path)) as lengths ;
OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) as input on (array[input.id] && p.path)) as lengths ;
DELETE
FROM "documents_transcriptionentity"
......@@ -25,7 +25,7 @@ WHERE "documents_transcriptionentity"."id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
DELETE
FROM "documents_transcription"
......@@ -36,7 +36,7 @@ WHERE "documents_transcription"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "dataimport_workeractivity"
......@@ -47,7 +47,7 @@ WHERE "dataimport_workeractivity"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_metadata"
......@@ -58,7 +58,7 @@ WHERE "documents_metadata"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_classification"
......@@ -69,7 +69,7 @@ WHERE "documents_classification"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_selection"
......@@ -80,7 +80,7 @@ WHERE "documents_selection"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "dataimport_dataimportelement"
......@@ -91,7 +91,7 @@ WHERE "dataimport_dataimportelement"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
UPDATE "dataimport_dataimport"
SET "element_id" = NULL
......@@ -102,7 +102,7 @@ WHERE "dataimport_dataimport"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
WITH element_ids (id) AS
(DELETE
......@@ -114,7 +114,7 @@ WITH element_ids (id) AS
WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
AND "documents_element"."worker_version_id" = '{version_id}'::uuid
AND ("documents_element"."id" = '{parent_id}'::uuid
OR "documents_elementpath"."path" && ARRAY['{parent_id}'::uuid]::uuid[]))) RETURNING element_id)
OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) RETURNING element_id)
DELETE
FROM documents_element element USING element_ids
WHERE element.id = element_ids.id ;
......@@ -125,7 +125,7 @@ LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "document
WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
AND "documents_element"."worker_version_id" = '{version_id}'::uuid
AND ("documents_element"."id" = '{parent_id}'::uuid
OR "documents_elementpath"."path" && ARRAY['{parent_id}'::uuid]::uuid[]));
OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]));
DELETE
FROM "documents_classification"
......@@ -137,7 +137,7 @@ WHERE "documents_classification"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_transcriptionentity"
......@@ -150,7 +150,7 @@ WHERE "documents_transcriptionentity"."id" IN
WHERE (U2."corpus_id" = '{corpus_id}'::uuid
AND U1."worker_version_id" = '{version_id}'::uuid
AND (U1."element_id" = '{parent_id}'::uuid
OR U5."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U5."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_transcriptionentity"
......@@ -165,7 +165,7 @@ WHERE "documents_transcriptionentity"."id" IN
OR U4."corpus_id" = '{corpus_id}'::uuid)
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U1."element_id" = '{parent_id}'::uuid
OR U7."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U7."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_transcription"
......@@ -177,7 +177,7 @@ WHERE "documents_transcription"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_metadata"
......@@ -189,7 +189,7 @@ WHERE "documents_metadata"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "dataimport_workeractivity"
......@@ -201,4 +201,4 @@ WHERE "dataimport_workeractivity"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])))
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))
......@@ -10,7 +10,7 @@ FROM
WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
AND "documents_element"."worker_version_id" = '{version_id}'::uuid
AND ("documents_element"."id" = '{parent_id}'::uuid
OR "documents_elementpath"."path" && ARRAY['{parent_id}'::uuid]::uuid[]))) as input on (array[input.id] && p.path)) as lengths ;
OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) as input on (array[input.id] && p.path)) as lengths ;
DELETE
FROM "documents_transcriptionentity"
......@@ -29,7 +29,7 @@ WHERE "documents_transcriptionentity"."id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))));
DELETE
FROM "documents_transcription"
......@@ -44,7 +44,7 @@ WHERE "documents_transcription"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
DELETE
FROM "dataimport_workeractivity"
......@@ -59,7 +59,7 @@ WHERE "dataimport_workeractivity"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
DELETE
FROM "documents_metadata"
......@@ -74,7 +74,7 @@ WHERE "documents_metadata"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
DELETE
FROM "documents_classification"
......@@ -89,7 +89,7 @@ WHERE "documents_classification"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
DELETE
FROM "documents_selection"
......@@ -104,7 +104,7 @@ WHERE "documents_selection"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
DELETE
FROM "dataimport_dataimportelement"
......@@ -119,7 +119,7 @@ WHERE "dataimport_dataimportelement"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
UPDATE "dataimport_dataimport"
SET "element_id" = NULL
......@@ -134,7 +134,7 @@ WHERE "dataimport_dataimport"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
WITH element_ids (id) AS
(DELETE
......@@ -150,7 +150,7 @@ WITH element_ids (id) AS
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])))) RETURNING element_id)
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))) RETURNING element_id)
DELETE
FROM documents_element element USING element_ids
WHERE element.id = element_ids.id ;
......@@ -165,7 +165,7 @@ WHERE "documents_elementpath"."path"[2] IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_transcriptionentity"
......@@ -180,7 +180,7 @@ WHERE "documents_transcriptionentity"."id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[]))));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
DELETE
FROM "documents_transcription"
......@@ -191,7 +191,7 @@ WHERE "documents_transcription"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "dataimport_workeractivity"
......@@ -202,7 +202,7 @@ WHERE "dataimport_workeractivity"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_metadata"
......@@ -213,7 +213,7 @@ WHERE "documents_metadata"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_classification"
......@@ -224,7 +224,7 @@ WHERE "documents_classification"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_selection"
......@@ -235,7 +235,7 @@ WHERE "documents_selection"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "dataimport_dataimportelement"
......@@ -246,7 +246,7 @@ WHERE "dataimport_dataimportelement"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
UPDATE "dataimport_dataimport"
SET "element_id" = NULL
......@@ -257,7 +257,7 @@ WHERE "dataimport_dataimport"."element_id" IN
WHERE (U0."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."id" = '{parent_id}'::uuid
OR U3."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
WITH element_ids (id) AS
(DELETE
......@@ -269,7 +269,7 @@ WITH element_ids (id) AS
WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
AND "documents_element"."worker_version_id" = '{version_id}'::uuid
AND ("documents_element"."id" = '{parent_id}'::uuid
OR "documents_elementpath"."path" && ARRAY['{parent_id}'::uuid]::uuid[]))) RETURNING element_id)
OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) RETURNING element_id)
DELETE
FROM documents_element element USING element_ids
WHERE element.id = element_ids.id ;
......@@ -280,7 +280,7 @@ LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "document
WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
AND "documents_element"."worker_version_id" = '{version_id}'::uuid
AND ("documents_element"."id" = '{parent_id}'::uuid
OR "documents_elementpath"."path" && ARRAY['{parent_id}'::uuid]::uuid[]));
OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]));
DELETE
FROM "documents_classification"
......@@ -292,7 +292,7 @@ WHERE "documents_classification"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_transcriptionentity"
......@@ -305,7 +305,7 @@ WHERE "documents_transcriptionentity"."id" IN
WHERE (U2."corpus_id" = '{corpus_id}'::uuid
AND U1."worker_version_id" = '{version_id}'::uuid
AND (U1."element_id" = '{parent_id}'::uuid
OR U5."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U5."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_transcriptionentity"
......@@ -320,7 +320,7 @@ WHERE "documents_transcriptionentity"."id" IN
OR U4."corpus_id" = '{corpus_id}'::uuid)
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U1."element_id" = '{parent_id}'::uuid
OR U7."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U7."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_transcription"
......@@ -332,7 +332,7 @@ WHERE "documents_transcription"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "documents_metadata"
......@@ -344,7 +344,7 @@ WHERE "documents_metadata"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
DELETE
FROM "dataimport_workeractivity"
......@@ -356,4 +356,4 @@ WHERE "dataimport_workeractivity"."id" IN
WHERE (U1."corpus_id" = '{corpus_id}'::uuid
AND U0."worker_version_id" = '{version_id}'::uuid
AND (U0."element_id" = '{parent_id}'::uuid
OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])))
OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))
boto3==1.18.13
cryptography==3.4.7
Django==3.2.6
Django==4.0.1
lxml==4.6.3
psycopg2-binary==2.9.1
......@@ -6,7 +6,6 @@ bleach==4.1.0
django-admin-hstore-widget==1.1.0
django-cors-headers==3.10.0
django-enumfields==2.1.1
django-redis==5.0.0
django-rq==2.4.1
djangorestframework==3.12.4
drf-spectacular==0.18.2
......