From 87253d5ab95f3dd627d3b7cbfb8b0e60e8251e57 Mon Sep 17 00:00:00 2001 From: Bastien Abadie <bastien@nextcairn.com> Date: Thu, 29 Oct 2020 09:41:54 +0000 Subject: [PATCH] Apply isort through pre-commit --- .isort.cfg | 11 ++ .pre-commit-config.yaml | 8 ++ arkindex/dataimport/admin.py | 3 +- arkindex/dataimport/api.py | 76 +++++++----- arkindex/dataimport/apps.py | 2 +- .../management/commands/import_s3.py | 10 +- .../commands/update_repositories_hooks.py | 4 +- .../dataimport/migrations/0001_initial.py | 13 +- .../dataimport/migrations/0002_initial.py | 2 +- .../dataimport/migrations/0003_initial.py | 2 +- .../migrations/0006_revision_state.py | 2 +- .../migrations/0007_worker_workerversion.py | 8 +- .../dataimport/migrations/0008_add_gitref.py | 8 +- .../0010_workerversion_docker_image.py | 2 +- .../0011_refactor_payload_dataimport.py | 3 +- .../migrations/0012_move_revision_state.py | 5 +- .../migrations/0013_create_model_workerrun.py | 8 +- .../migrations/0014_dataimport_selection.py | 5 +- .../migrations/0015_clear_payload.py | 3 +- .../migrations/0019_repository_type.py | 5 +- .../0020_null_corpus_repo_dataimport.py | 2 +- .../0023_workerversion_constraint.py | 1 + arkindex/dataimport/models.py | 27 ++-- arkindex/dataimport/providers.py | 15 +-- arkindex/dataimport/serializers/files.py | 5 +- arkindex/dataimport/serializers/git.py | 3 +- arkindex/dataimport/serializers/imports.py | 16 +-- arkindex/dataimport/serializers/workers.py | 8 +- arkindex/dataimport/signals.py | 3 +- .../dataimport/tests/test_datafile_api.py | 6 +- arkindex/dataimport/tests/test_files.py | 8 +- .../dataimport/tests/test_gitlab_provider.py | 24 ++-- arkindex/dataimport/tests/test_import_s3.py | 5 +- arkindex/dataimport/tests/test_imports.py | 12 +- .../dataimport/tests/test_process_elements.py | 7 +- arkindex/dataimport/tests/test_providers.py | 4 +- arkindex/dataimport/tests/test_repos.py | 9 +- arkindex/dataimport/tests/test_signals.py | 9 +- .../tests/test_transkribus_import.py | 14 ++- arkindex/dataimport/tests/test_workerruns.py | 8 +- arkindex/dataimport/tests/test_workers.py | 5 +- .../dataimport/tests/test_workflows_api.py | 11 +- arkindex/documents/admin.py | 20 ++- arkindex/documents/api/admin.py | 5 +- arkindex/documents/api/elements.py | 62 ++++++---- arkindex/documents/api/entities.py | 40 ++++-- arkindex/documents/api/iiif.py | 13 +- arkindex/documents/api/ml.py | 57 ++++++--- arkindex/documents/api/search.py | 14 ++- arkindex/documents/consumers.py | 20 ++- arkindex/documents/date_parser.py | 7 +- arkindex/documents/dates.py | 3 +- arkindex/documents/indexer.py | 12 +- .../management/commands/build_fixtures.py | 20 +-- .../documents/management/commands/delete.py | 6 +- .../documents/management/commands/gunicorn.py | 10 +- .../management/commands/merge_types.py | 3 +- .../documents/management/commands/reindex.py | 10 +- .../documents/management/commands/telegraf.py | 12 +- arkindex/documents/managers.py | 6 +- arkindex/documents/migrations/0001_initial.py | 12 +- arkindex/documents/migrations/0002_initial.py | 4 +- .../migrations/0005_element_source.py | 2 +- .../migrations/0011_auto_20200403_1456.py | 2 +- .../0012_add_created_updated_corpus.py | 2 +- .../migrations/0013_datasource_type_length.py | 5 +- .../0014_nullable_transcription_zone.py | 2 +- .../0015_elementtype_allowed_transcription.py | 5 +- .../documents/migrations/0016_selection.py | 5 +- .../0018_worker_version_attributes.py | 2 +- .../migrations/0019_corpus_repository.py | 5 +- .../migrations/0021_move_transcriptions.py | 1 + arkindex/documents/models.py | 26 ++-- arkindex/documents/search.py | 6 +- arkindex/documents/serializers/admin.py | 3 +- arkindex/documents/serializers/elements.py | 25 ++-- arkindex/documents/serializers/entities.py | 6 +- .../documents/serializers/iiif/__init__.py | 2 +- .../documents/serializers/iiif/annotations.py | 4 +- .../documents/serializers/iiif/manifests.py | 11 +- arkindex/documents/serializers/light.py | 11 +- arkindex/documents/serializers/ml.py | 21 +++- arkindex/documents/serializers/search.py | 10 +- arkindex/documents/signals.py | 18 ++- .../tests/commands/test_merge_types.py | 5 +- .../documents/tests/commands/test_reindex.py | 12 +- .../documents/tests/commands/test_telegraf.py | 8 +- .../tests/consumers/test_corpus_consumer.py | 11 +- .../consumers/test_ml_results_consumer.py | 12 +- .../tests/consumers/test_reindex_consumer.py | 12 +- arkindex/documents/tests/test_admin_api.py | 8 +- .../documents/tests/test_annotation_list.py | 1 + .../tests/test_bulk_classification.py | 7 +- .../tests/test_bulk_element_transcriptions.py | 14 ++- .../documents/tests/test_bulk_elements.py | 5 +- .../tests/test_bulk_transcriptions.py | 5 +- .../documents/tests/test_children_elements.py | 6 +- arkindex/documents/tests/test_classes.py | 8 +- arkindex/documents/tests/test_corpus.py | 7 +- .../tests/test_corpus_authorized_users.py | 2 +- .../documents/tests/test_corpus_elements.py | 8 +- .../documents/tests/test_create_elements.py | 3 +- .../tests/test_create_transcriptions.py | 14 ++- arkindex/documents/tests/test_datasource.py | 3 +- arkindex/documents/tests/test_date_parser.py | 14 ++- .../documents/tests/test_destroy_elements.py | 1 + .../documents/tests/test_edit_elementpath.py | 5 +- .../tests/test_edit_transcriptions.py | 8 +- .../documents/tests/test_element_manager.py | 2 +- .../documents/tests/test_element_paths_api.py | 3 +- arkindex/documents/tests/test_element_type.py | 3 +- arkindex/documents/tests/test_entities.py | 6 +- arkindex/documents/tests/test_entities_api.py | 28 +++-- arkindex/documents/tests/test_indexer.py | 8 +- .../documents/tests/test_interpreted_date.py | 3 +- arkindex/documents/tests/test_manifest.py | 9 +- arkindex/documents/tests/test_metadata.py | 16 +-- arkindex/documents/tests/test_ml_results.py | 8 +- arkindex/documents/tests/test_moderation.py | 11 +- arkindex/documents/tests/test_neighbors.py | 5 +- .../documents/tests/test_parents_elements.py | 8 +- .../documents/tests/test_patch_elements.py | 8 +- .../documents/tests/test_retrieve_elements.py | 8 +- arkindex/documents/tests/test_search.py | 12 +- arkindex/documents/tests/test_search_api.py | 6 +- .../documents/tests/test_selection_api.py | 1 + .../documents/tests/test_transcriptions.py | 7 +- arkindex/images/admin.py | 5 +- arkindex/images/api.py | 17 ++- .../management/commands/check_images.py | 8 +- .../management/commands/deduplicate_zones.py | 1 + arkindex/images/migrations/0001_initial.py | 10 +- .../migrations/0002_checked_dimensions.py | 3 +- .../images/migrations/0004_polygon_postgis.py | 5 +- .../images/migrations/0005_polygon_index.py | 3 +- arkindex/images/models.py | 18 +-- arkindex/images/serializers.py | 14 ++- arkindex/images/tests/test_admin.py | 3 +- arkindex/images/tests/test_check_images.py | 8 +- arkindex/images/tests/test_image.py | 10 +- arkindex/images/tests/test_image_api.py | 16 +-- arkindex/images/tests/test_image_elements.py | 1 + arkindex/images/tests/test_imageserver.py | 5 +- arkindex/images/tests/test_perform_check.py | 8 +- arkindex/images/tests/test_thumbnail.py | 6 +- arkindex/images/tests/test_zone.py | 1 + arkindex/images/views.py | 5 +- arkindex/project/api_v1.py | 115 ++++++++++++++---- arkindex/project/argparse.py | 5 +- arkindex/project/asgi.py | 1 + arkindex/project/aws.py | 9 +- arkindex/project/checks.py | 6 +- arkindex/project/config.py | 3 +- arkindex/project/default_corpus.py | 1 - arkindex/project/elastic.py | 6 +- arkindex/project/fields.py | 10 +- arkindex/project/filters.py | 2 +- arkindex/project/gis.py | 8 +- arkindex/project/mixins.py | 3 +- arkindex/project/models.py | 3 +- arkindex/project/openapi/__init__.py | 2 +- arkindex/project/openapi/generators.py | 3 +- arkindex/project/openapi/schemas.py | 3 +- arkindex/project/pagination.py | 1 + arkindex/project/routing.py | 7 +- arkindex/project/serializer_fields.py | 8 +- arkindex/project/settings.py | 6 +- arkindex/project/tests/__init__.py | 1 + .../project/tests/openapi/test_generators.py | 4 +- .../project/tests/openapi/test_schemas.py | 8 +- arkindex/project/tests/openapi/test_view.py | 4 +- arkindex/project/tests/test_argparse.py | 5 +- arkindex/project/tests/test_aws_mixin.py | 6 +- arkindex/project/tests/test_checks.py | 13 +- arkindex/project/tests/test_config.py | 10 +- .../tests/test_drf_linear_ring_field.py | 6 +- arkindex/project/tests/test_elastic.py | 9 +- arkindex/project/tests/test_gis.py | 7 +- arkindex/project/tests/test_ponos_view.py | 6 +- arkindex/project/tools.py | 4 +- arkindex/project/triggers.py | 4 +- arkindex/project/urls.py | 5 +- arkindex/project/views.py | 5 +- arkindex/users/admin.py | 4 +- arkindex/users/api.py | 49 +++++--- arkindex/users/migrations/0001_initial.py | 10 +- arkindex/users/migrations/0002_userscope.py | 7 +- .../users/migrations/0004_internal_bool.py | 2 +- arkindex/users/models.py | 10 +- arkindex/users/providers.py | 9 +- arkindex/users/serializers.py | 12 +- arkindex/users/tests/test_acl.py | 3 +- arkindex/users/tests/test_credentials.py | 1 + arkindex/users/tests/test_gitlab_oauth.py | 10 +- arkindex/users/tests/test_password_reset.py | 4 +- arkindex/users/tests/test_providers.py | 4 +- arkindex/users/tests/test_registration.py | 16 +-- .../tests/test_update_transkribus_email.py | 6 +- setup.py | 3 +- 199 files changed, 1156 insertions(+), 663 deletions(-) create mode 100644 .isort.cfg diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 0000000000..54ca8ae31b --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,11 @@ +[settings] +# Compatible with black +multi_line_output = 3 +include_trailing_comma = True +force_grid_wrap = 0 +use_parentheses = True +line_length = 120 + +default_section=FIRSTPARTY +known_first_party = arkindex_common,ponos,transkribus +known_third_party = asgiref,boto3,botocore,channels,corsheaders,django,django_admin_hstore_widget,elasticsearch,elasticsearch_dsl,enumfields,gitlab,mock,psycopg2,requests,responses,rest_framework,sentry_sdk,setuptools,tenacity,tripoli,yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b99ec0aed3..091bc17058 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,4 +1,12 @@ repos: + - repo: https://github.com/asottile/seed-isort-config + rev: v2.2.0 + hooks: + - id: seed-isort-config + - repo: https://github.com/pre-commit/mirrors-isort + rev: v4.3.21 + hooks: + - id: isort - repo: https://gitlab.com/pycqa/flake8 rev: 3.8.3 hooks: diff --git a/arkindex/dataimport/admin.py b/arkindex/dataimport/admin.py index 8e42617913..dd3089cc2e 100644 --- a/arkindex/dataimport/admin.py +++ b/arkindex/dataimport/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin from django.db.models import Max from enumfields.admin import EnumFieldListFilter -from arkindex.dataimport.models import DataImport, DataFile, Repository, Revision, Worker, WorkerVersion + +from arkindex.dataimport.models import DataFile, DataImport, Repository, Revision, Worker, WorkerVersion class DataFileInline(admin.StackedInline): diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py index cf0dc554d0..bff4120c4d 100644 --- a/arkindex/dataimport/api.py +++ b/arkindex/dataimport/api.py @@ -1,41 +1,61 @@ +import logging +from uuid import UUID + +from django.conf import settings +from django.core.exceptions import PermissionDenied from django.db import transaction -from django.db.models import Max, Q, F +from django.db.models import F, Max, Q from django.http.response import Http404 from django.shortcuts import get_object_or_404 -from django.core.exceptions import PermissionDenied -from django.conf import settings +from rest_framework import status +from rest_framework.exceptions import ValidationError from rest_framework.generics import ( - GenericAPIView, ListAPIView, CreateAPIView, RetrieveAPIView, - ListCreateAPIView, RetrieveUpdateDestroyAPIView, RetrieveDestroyAPIView, - RetrieveUpdateAPIView + CreateAPIView, + GenericAPIView, + ListAPIView, + ListCreateAPIView, + RetrieveAPIView, + RetrieveDestroyAPIView, + RetrieveUpdateAPIView, + RetrieveUpdateDestroyAPIView, ) -from rest_framework.views import APIView from rest_framework.response import Response -from rest_framework import status -from rest_framework.exceptions import ValidationError -from arkindex.project.mixins import CorpusACLMixin, SelectionMixin, DeprecatedMixin, CustomPaginationViewMixin -from arkindex.project.permissions import IsVerified -from arkindex.project.openapi import AutoSchema -from arkindex.documents.models import Corpus, ElementType, Element, ClassificationState -from arkindex.documents.api.elements import ElementsListMixin -from arkindex.dataimport.models import \ - DataImport, DataFile, Repository, RepositoryType, Revision, Worker, WorkerVersion, WorkerRun -from arkindex.dataimport.serializers.files import DataFileSerializer, DataFileCreateSerializer -from arkindex.dataimport.serializers.git import \ - ExternalRepositorySerializer, RevisionSerializer +from rest_framework.views import APIView + +from arkindex.dataimport.models import ( + DataFile, + DataImport, + Repository, + RepositoryType, + Revision, + Worker, + WorkerRun, + WorkerVersion, +) +from arkindex.dataimport.serializers.files import DataFileCreateSerializer, DataFileSerializer +from arkindex.dataimport.serializers.git import ExternalRepositorySerializer, RevisionSerializer from arkindex.dataimport.serializers.imports import ( - DataImportLightSerializer, DataImportSerializer, - DataImportFromFilesSerializer, ElementsWorkflowSerializer, WorkerRunLightSerializer, WorkerRunSerializer, - ImportTranskribusSerializer, StartProcessSerializer, ElementLightSerializer + DataImportFromFilesSerializer, + DataImportLightSerializer, + DataImportSerializer, + ElementLightSerializer, + ElementsWorkflowSerializer, + ImportTranskribusSerializer, + StartProcessSerializer, + WorkerRunLightSerializer, + WorkerRunSerializer, ) -from arkindex.dataimport.serializers.workers import WorkerSerializer, WorkerVersionSerializer, RepositorySerializer -from arkindex.users.models import OAuthCredentials, User +from arkindex.dataimport.serializers.workers import RepositorySerializer, WorkerSerializer, WorkerVersionSerializer +from arkindex.documents.api.elements import ElementsListMixin +from arkindex.documents.models import ClassificationState, Corpus, Element, ElementType from arkindex.project.fields import ArrayRemove -from arkindex_common.ml_tool import MLToolType +from arkindex.project.mixins import CorpusACLMixin, CustomPaginationViewMixin, DeprecatedMixin, SelectionMixin +from arkindex.project.openapi import AutoSchema +from arkindex.project.permissions import IsVerified +from arkindex.users.models import OAuthCredentials, User from arkindex_common.enums import DataImportMode -from ponos.models import State, STATES_ORDERING -from uuid import UUID -import logging +from arkindex_common.ml_tool import MLToolType +from ponos.models import STATES_ORDERING, State logger = logging.getLogger(__name__) diff --git a/arkindex/dataimport/apps.py b/arkindex/dataimport/apps.py index aea7c4df74..477837c0cd 100644 --- a/arkindex/dataimport/apps.py +++ b/arkindex/dataimport/apps.py @@ -5,4 +5,4 @@ class DataImportConfig(AppConfig): name = 'arkindex.dataimport' def ready(self): - from arkindex.dataimport import signals # noqa \ No newline at end of file + from arkindex.dataimport import signals # noqa diff --git a/arkindex/dataimport/management/commands/import_s3.py b/arkindex/dataimport/management/commands/import_s3.py index d3b8e18ece..7f6731b5e7 100644 --- a/arkindex/dataimport/management/commands/import_s3.py +++ b/arkindex/dataimport/management/commands/import_s3.py @@ -1,13 +1,15 @@ #!/usr/bin/env python3 +import logging + +import yaml from django.conf import settings from django.core.management.base import BaseCommand, CommandError -from arkindex_common.enums import DataImportMode + from arkindex.dataimport.models import DataImport -from arkindex.users.models import User from arkindex.project.argparse import CorpusArgument +from arkindex.users.models import User +from arkindex_common.enums import DataImportMode from ponos.models import Workflow -import logging -import yaml logging.basicConfig( level=logging.INFO, diff --git a/arkindex/dataimport/management/commands/update_repositories_hooks.py b/arkindex/dataimport/management/commands/update_repositories_hooks.py index f48ca97a44..0907f8db7c 100644 --- a/arkindex/dataimport/management/commands/update_repositories_hooks.py +++ b/arkindex/dataimport/management/commands/update_repositories_hooks.py @@ -1,8 +1,8 @@ -from arkindex.dataimport.models import Repository +import logging from django.core.management.base import BaseCommand -import logging +from arkindex.dataimport.models import Repository logging.basicConfig( level=logging.INFO, diff --git a/arkindex/dataimport/migrations/0001_initial.py b/arkindex/dataimport/migrations/0001_initial.py index e89683990c..d07191e968 100644 --- a/arkindex/dataimport/migrations/0001_initial.py +++ b/arkindex/dataimport/migrations/0001_initial.py @@ -1,14 +1,17 @@ # Generated by Django 2.2.9 on 2020-01-17 15:39 +import uuid + +import django.contrib.postgres.fields.jsonb +import enumfields.fields +from django.db import migrations, models +from enumfields import Enum + import arkindex.dataimport.models import arkindex.project.aws import arkindex.project.fields import arkindex_common.enums -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models -import enumfields.fields -from enumfields import Enum -import uuid + class EventType(Enum): Addition = 'A' diff --git a/arkindex/dataimport/migrations/0002_initial.py b/arkindex/dataimport/migrations/0002_initial.py index 610d158035..0d5e072952 100644 --- a/arkindex/dataimport/migrations/0002_initial.py +++ b/arkindex/dataimport/migrations/0002_initial.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.9 on 2020-01-17 15:39 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0003_initial.py b/arkindex/dataimport/migrations/0003_initial.py index 5f52398b83..fa63754d93 100644 --- a/arkindex/dataimport/migrations/0003_initial.py +++ b/arkindex/dataimport/migrations/0003_initial.py @@ -1,8 +1,8 @@ # Generated by Django 2.2.9 on 2020-01-17 15:39 +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0006_revision_state.py b/arkindex/dataimport/migrations/0006_revision_state.py index e4ecf456c7..091e7bd490 100644 --- a/arkindex/dataimport/migrations/0006_revision_state.py +++ b/arkindex/dataimport/migrations/0006_revision_state.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.11 on 2020-04-30 11:00 -from django.db import migrations import enumfields.fields +from django.db import migrations class RevisionState(enumfields.fields.Enum): diff --git a/arkindex/dataimport/migrations/0007_worker_workerversion.py b/arkindex/dataimport/migrations/0007_worker_workerversion.py index 66c9a2231b..0f7d0fc81d 100644 --- a/arkindex/dataimport/migrations/0007_worker_workerversion.py +++ b/arkindex/dataimport/migrations/0007_worker_workerversion.py @@ -1,11 +1,13 @@ # Generated by Django 2.2.11 on 2020-05-19 14:55 -import arkindex_common.ml_tool +import uuid + import django.contrib.postgres.fields.jsonb -from django.db import migrations, models import django.db.models.deletion import enumfields.fields -import uuid +from django.db import migrations, models + +import arkindex_common.ml_tool class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0008_add_gitref.py b/arkindex/dataimport/migrations/0008_add_gitref.py index 1ab9b71b2f..1db18f4026 100644 --- a/arkindex/dataimport/migrations/0008_add_gitref.py +++ b/arkindex/dataimport/migrations/0008_add_gitref.py @@ -1,10 +1,12 @@ # Generated by Django 2.2.11 on 2020-05-21 15:34 -import arkindex.dataimport.models -from django.db import migrations, models +import uuid + import django.db.models.deletion import enumfields.fields -import uuid +from django.db import migrations, models + +import arkindex.dataimport.models def migrate_git_refs(apps, schema_editor): diff --git a/arkindex/dataimport/migrations/0010_workerversion_docker_image.py b/arkindex/dataimport/migrations/0010_workerversion_docker_image.py index 152e2ac3de..0ab7dd3c2b 100644 --- a/arkindex/dataimport/migrations/0010_workerversion_docker_image.py +++ b/arkindex/dataimport/migrations/0010_workerversion_docker_image.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.13 on 2020-06-18 12:52 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py b/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py index 886879af08..f81b77aeeb 100644 --- a/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py +++ b/arkindex/dataimport/migrations/0011_refactor_payload_dataimport.py @@ -1,7 +1,8 @@ # Generated by Django 2.2.13 on 2020-06-24 09:39 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + import arkindex_common diff --git a/arkindex/dataimport/migrations/0012_move_revision_state.py b/arkindex/dataimport/migrations/0012_move_revision_state.py index 38e6e22d03..2318d0dddc 100644 --- a/arkindex/dataimport/migrations/0012_move_revision_state.py +++ b/arkindex/dataimport/migrations/0012_move_revision_state.py @@ -1,9 +1,10 @@ # Generated by Django 2.2.13 on 2020-06-25 09:40 -import arkindex.dataimport.models -from django.db import migrations, models import django.db.models.deletion import enumfields.fields +from django.db import migrations, models + +import arkindex.dataimport.models class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0013_create_model_workerrun.py b/arkindex/dataimport/migrations/0013_create_model_workerrun.py index a35b628db0..fde2aab956 100644 --- a/arkindex/dataimport/migrations/0013_create_model_workerrun.py +++ b/arkindex/dataimport/migrations/0013_create_model_workerrun.py @@ -1,10 +1,12 @@ # Generated by Django 2.2.13 on 2020-06-29 13:18 -import arkindex.project.fields -from django.db import migrations, models -import django.db.models.deletion import uuid +import django.db.models.deletion +from django.db import migrations, models + +import arkindex.project.fields + class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0014_dataimport_selection.py b/arkindex/dataimport/migrations/0014_dataimport_selection.py index 7f50aa3e6e..49d2ca100e 100644 --- a/arkindex/dataimport/migrations/0014_dataimport_selection.py +++ b/arkindex/dataimport/migrations/0014_dataimport_selection.py @@ -1,9 +1,10 @@ # Generated by Django 2.2.13 on 2020-07-03 13:16 -from django.db import migrations, models -import django.db.models.deletion import uuid +import django.db.models.deletion +from django.db import migrations, models + class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0015_clear_payload.py b/arkindex/dataimport/migrations/0015_clear_payload.py index 477d48b6c8..7a55e51d44 100644 --- a/arkindex/dataimport/migrations/0015_clear_payload.py +++ b/arkindex/dataimport/migrations/0015_clear_payload.py @@ -1,8 +1,7 @@ # Generated by Django 2.2.13 on 2020-07-07 13:49 -from django.db import migrations, models import django.db.models.deletion - +from django.db import migrations, models # Converts DataImport payloads to fields, from all the keys found in existing payloads: # element_type → dataimport.element_type diff --git a/arkindex/dataimport/migrations/0019_repository_type.py b/arkindex/dataimport/migrations/0019_repository_type.py index a8583bbede..f7a5dba012 100644 --- a/arkindex/dataimport/migrations/0019_repository_type.py +++ b/arkindex/dataimport/migrations/0019_repository_type.py @@ -1,8 +1,9 @@ # Generated by Django 3.1 on 2020-09-09 15:26 -import arkindex.dataimport.models -from django.db import migrations import enumfields.fields +from django.db import migrations + +import arkindex.dataimport.models WORKER_REPO_PREFIX = 'https://gitlab.com/teklia/workers/' diff --git a/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py b/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py index d7ef690ed1..a6360f51aa 100644 --- a/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py +++ b/arkindex/dataimport/migrations/0020_null_corpus_repo_dataimport.py @@ -1,7 +1,7 @@ # Generated by Django 3.1.1 on 2020-09-11 14:19 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/dataimport/migrations/0023_workerversion_constraint.py b/arkindex/dataimport/migrations/0023_workerversion_constraint.py index 374008d295..77c5077d08 100644 --- a/arkindex/dataimport/migrations/0023_workerversion_constraint.py +++ b/arkindex/dataimport/migrations/0023_workerversion_constraint.py @@ -1,6 +1,7 @@ # Generated by Django 3.1.1 on 2020-09-24 10:57 from django.db import migrations, models + from arkindex.dataimport.models import WorkerVersionState diff --git a/arkindex/dataimport/models.py b/arkindex/dataimport/models.py index 19f703e1c3..21449e3f3a 100644 --- a/arkindex/dataimport/models.py +++ b/arkindex/dataimport/models.py @@ -1,21 +1,22 @@ -from django.db import models +import shlex +import urllib.parse +import uuid +from os import path + +import yaml from django.conf import settings +from django.db import models from django.utils.functional import cached_property +from enumfields import Enum, EnumField from rest_framework.exceptions import ValidationError -from enumfields import EnumField, Enum -from ponos.models import Artifact -from arkindex_common.enums import DataImportMode -from arkindex_common.ml_tool import MLToolType + +from arkindex.dataimport.providers import get_provider, git_providers from arkindex.project.aws import S3FileMixin, S3FileStatus -from arkindex.project.models import IndexableModel from arkindex.project.fields import ArrayField -from arkindex.dataimport.providers import git_providers, get_provider -from ponos.models import Workflow, State -from os import path -import shlex -import yaml -import uuid -import urllib.parse +from arkindex.project.models import IndexableModel +from arkindex_common.enums import DataImportMode +from arkindex_common.ml_tool import MLToolType +from ponos.models import Artifact, State, Workflow class DataImport(IndexableModel): diff --git a/arkindex/dataimport/providers.py b/arkindex/dataimport/providers.py index dfe6de1ecc..b5e4e8f89f 100644 --- a/arkindex/dataimport/providers.py +++ b/arkindex/dataimport/providers.py @@ -1,13 +1,14 @@ -from abc import ABC, abstractmethod -from django.urls import reverse -from django.conf import settings -from rest_framework.exceptions import NotAuthenticated, AuthenticationFailed, APIException, ValidationError -from gitlab import Gitlab, GitlabGetError, GitlabCreateError -import urllib.parse import base64 -import uuid import logging +import urllib.parse +import uuid +from abc import ABC, abstractmethod + import yaml +from django.conf import settings +from django.urls import reverse +from gitlab import Gitlab, GitlabCreateError, GitlabGetError +from rest_framework.exceptions import APIException, AuthenticationFailed, NotAuthenticated, ValidationError from yaml.parser import ParserError logger = logging.getLogger(__name__) diff --git a/arkindex/dataimport/serializers/files.py b/arkindex/dataimport/serializers/files.py index 90b68538cd..e353854a0e 100644 --- a/arkindex/dataimport/serializers/files.py +++ b/arkindex/dataimport/serializers/files.py @@ -1,8 +1,9 @@ from rest_framework import serializers -from arkindex.project.serializer_fields import EnumField -from arkindex.project.aws import S3FileStatus + from arkindex.dataimport.models import DataFile from arkindex.documents.models import Corpus +from arkindex.project.aws import S3FileStatus +from arkindex.project.serializer_fields import EnumField class DataFileSerializer(serializers.ModelSerializer): diff --git a/arkindex/dataimport/serializers/git.py b/arkindex/dataimport/serializers/git.py index e93ad96265..c232c37979 100644 --- a/arkindex/dataimport/serializers/git.py +++ b/arkindex/dataimport/serializers/git.py @@ -1,6 +1,7 @@ from rest_framework import serializers + +from arkindex.dataimport.models import GitRef, GitRefType, Revision, WorkerVersionState from arkindex.project.serializer_fields import EnumField -from arkindex.dataimport.models import Revision, GitRef, GitRefType, WorkerVersionState class GitRefSerializer(serializers.ModelSerializer): diff --git a/arkindex/dataimport/serializers/imports.py b/arkindex/dataimport/serializers/imports.py index 2b9d070e97..ffa1425acf 100644 --- a/arkindex/dataimport/serializers/imports.py +++ b/arkindex/dataimport/serializers/imports.py @@ -1,14 +1,16 @@ from uuid import UUID -from rest_framework import serializers + from django.conf import settings from django.db.models import Q -from ponos.models import State -from arkindex_common.enums import DataImportMode -from arkindex.project.serializer_fields import EnumField, BestClassField -from arkindex.documents.models import Corpus, Element, ElementType, Classification, ClassificationState -from arkindex.documents.serializers.elements import ElementSlimSerializer -from arkindex.dataimport.models import DataImport, DataFile, WorkerRun, WorkerVersion +from rest_framework import serializers + +from arkindex.dataimport.models import DataFile, DataImport, WorkerRun, WorkerVersion from arkindex.dataimport.serializers.git import RevisionSerializer +from arkindex.documents.models import Classification, ClassificationState, Corpus, Element, ElementType +from arkindex.documents.serializers.elements import ElementSlimSerializer +from arkindex.project.serializer_fields import BestClassField, EnumField +from arkindex_common.enums import DataImportMode +from ponos.models import State from transkribus import TranskribusAPI diff --git a/arkindex/dataimport/serializers/workers.py b/arkindex/dataimport/serializers/workers.py index 71d4405fb0..8033ca88c2 100644 --- a/arkindex/dataimport/serializers/workers.py +++ b/arkindex/dataimport/serializers/workers.py @@ -1,10 +1,12 @@ +import urllib + from rest_framework import serializers from rest_framework.exceptions import ValidationError -from arkindex.dataimport.models import Worker, WorkerVersion, WorkerVersionState, Repository, RepositoryType + +from arkindex.dataimport.models import Repository, RepositoryType, Worker, WorkerVersion, WorkerVersionState +from arkindex.dataimport.serializers.git import RevisionWithRefsSerializer from arkindex.project.serializer_fields import EnumField from arkindex_common.ml_tool import MLToolType -from arkindex.dataimport.serializers.git import RevisionWithRefsSerializer -import urllib class WorkerSerializer(serializers.ModelSerializer): diff --git a/arkindex/dataimport/signals.py b/arkindex/dataimport/signals.py index e5b50ca266..0c4ebad5ff 100644 --- a/arkindex/dataimport/signals.py +++ b/arkindex/dataimport/signals.py @@ -1,8 +1,9 @@ from django.db.models.signals import pre_save from django.dispatch import receiver -from arkindex.dataimport.models import WorkerRun from rest_framework.exceptions import ValidationError +from arkindex.dataimport.models import WorkerRun + def _list_ancestors(graph, parents): results = [] diff --git a/arkindex/dataimport/tests/test_datafile_api.py b/arkindex/dataimport/tests/test_datafile_api.py index 3b38fa9059..9c459904ba 100644 --- a/arkindex/dataimport/tests/test_datafile_api.py +++ b/arkindex/dataimport/tests/test_datafile_api.py @@ -1,10 +1,12 @@ from unittest.mock import patch + from django.urls import reverse from rest_framework import status -from arkindex.project.tests import FixtureAPITestCase -from arkindex.project.aws import S3FileStatus + from arkindex.dataimport.models import DataFile from arkindex.documents.models import Corpus +from arkindex.project.aws import S3FileStatus +from arkindex.project.tests import FixtureAPITestCase class TestDataFileApi(FixtureAPITestCase): diff --git a/arkindex/dataimport/tests/test_files.py b/arkindex/dataimport/tests/test_files.py index 9eb2458163..f2f708375c 100644 --- a/arkindex/dataimport/tests/test_files.py +++ b/arkindex/dataimport/tests/test_files.py @@ -1,8 +1,10 @@ from unittest.mock import patch -from rest_framework import status -from django.urls import reverse -from django.test import override_settings + from botocore.exceptions import ClientError +from django.test import override_settings +from django.urls import reverse +from rest_framework import status + from arkindex.dataimport.models import DataFile from arkindex.project.tests import FixtureAPITestCase diff --git a/arkindex/dataimport/tests/test_gitlab_provider.py b/arkindex/dataimport/tests/test_gitlab_provider.py index 0ce7da9fb8..779ac9ce89 100644 --- a/arkindex/dataimport/tests/test_gitlab_provider.py +++ b/arkindex/dataimport/tests/test_gitlab_provider.py @@ -1,12 +1,20 @@ -from unittest.mock import patch, MagicMock -from rest_framework.exceptions import APIException, NotAuthenticated, AuthenticationFailed, ValidationError -from gitlab.exceptions import GitlabGetError, GitlabCreateError -from arkindex.project.tests import FixtureTestCase -from arkindex.dataimport.providers import GitLabProvider -from arkindex.dataimport.models import \ - DataImport, DataImportMode, Revision, WorkerVersionState, GitRefType, RepositoryType -from django.conf import settings from pathlib import Path +from unittest.mock import MagicMock, patch + +from django.conf import settings +from gitlab.exceptions import GitlabCreateError, GitlabGetError +from rest_framework.exceptions import APIException, AuthenticationFailed, NotAuthenticated, ValidationError + +from arkindex.dataimport.models import ( + DataImport, + DataImportMode, + GitRefType, + RepositoryType, + Revision, + WorkerVersionState, +) +from arkindex.dataimport.providers import GitLabProvider +from arkindex.project.tests import FixtureTestCase SAMPLES = Path(__file__).absolute().parent / 'repository_conf_samples' diff --git a/arkindex/dataimport/tests/test_import_s3.py b/arkindex/dataimport/tests/test_import_s3.py index 3608bf4935..4e618aee22 100644 --- a/arkindex/dataimport/tests/test_import_s3.py +++ b/arkindex/dataimport/tests/test_import_s3.py @@ -1,10 +1,11 @@ +import yaml from django.core.management import call_command from django.core.management.base import CommandError from django.test import override_settings + +from arkindex.dataimport.models import DataImport from arkindex.project.tests import FixtureTestCase from arkindex_common.enums import DataImportMode -from arkindex.dataimport.models import DataImport -import yaml class TestImportS3(FixtureTestCase): diff --git a/arkindex/dataimport/tests/test_imports.py b/arkindex/dataimport/tests/test_imports.py index a4327feeea..33fe9ab543 100644 --- a/arkindex/dataimport/tests/test_imports.py +++ b/arkindex/dataimport/tests/test_imports.py @@ -1,14 +1,16 @@ +import uuid +from unittest.mock import MagicMock, patch + +import yaml from django.urls import reverse from rest_framework import status -from arkindex_common.enums import DataImportMode -from arkindex.dataimport.models import DataImport, DataFile, RepositoryType + +from arkindex.dataimport.models import DataFile, DataImport, RepositoryType from arkindex.documents.models import Corpus, ElementType from arkindex.project.tests import FixtureAPITestCase from arkindex.users.models import User +from arkindex_common.enums import DataImportMode from ponos.models import State, Task, Workflow -from unittest.mock import patch, MagicMock -import yaml -import uuid RECIPE = ''' tasks: diff --git a/arkindex/dataimport/tests/test_process_elements.py b/arkindex/dataimport/tests/test_process_elements.py index f0ad9808c2..c0bc419ebe 100644 --- a/arkindex/dataimport/tests/test_process_elements.py +++ b/arkindex/dataimport/tests/test_process_elements.py @@ -1,10 +1,11 @@ +import uuid + from django.urls import reverse from rest_framework import status -from arkindex.project.tests import FixtureAPITestCase -from arkindex.documents.models import Element, Classification, DataSource, MLClass, ClassificationState, Corpus from arkindex.dataimport.models import DataImport, DataImportMode -import uuid +from arkindex.documents.models import Classification, ClassificationState, Corpus, DataSource, Element, MLClass +from arkindex.project.tests import FixtureAPITestCase class TestProcessElements(FixtureAPITestCase): diff --git a/arkindex/dataimport/tests/test_providers.py b/arkindex/dataimport/tests/test_providers.py index e67d56fbff..e93467fa36 100644 --- a/arkindex/dataimport/tests/test_providers.py +++ b/arkindex/dataimport/tests/test_providers.py @@ -1,8 +1,10 @@ from unittest.mock import patch + from django.urls import reverse from rest_framework import status -from arkindex.dataimport.providers import GitProvider, GitLabProvider + from arkindex.dataimport.models import RepositoryType +from arkindex.dataimport.providers import GitLabProvider, GitProvider from arkindex.project.tests import FixtureAPITestCase diff --git a/arkindex/dataimport/tests/test_repos.py b/arkindex/dataimport/tests/test_repos.py index 282d4c5511..60b79b4426 100644 --- a/arkindex/dataimport/tests/test_repos.py +++ b/arkindex/dataimport/tests/test_repos.py @@ -1,13 +1,14 @@ from django.urls import reverse +from mock import MagicMock, patch from rest_framework import status from rest_framework.exceptions import ValidationError from rest_framework.serializers import DateTimeField -from ponos.models import Workflow, State -from arkindex_common.enums import DataImportMode + +from arkindex.dataimport.models import DataImport, Repository, RepositoryType, WorkerVersion, WorkerVersionState from arkindex.project.tests import FixtureTestCase -from arkindex.dataimport.models import Repository, RepositoryType, DataImport, WorkerVersion, WorkerVersionState from arkindex.users.models import User -from mock import patch, MagicMock +from arkindex_common.enums import DataImportMode +from ponos.models import State, Workflow RECIPE = ''' tasks: diff --git a/arkindex/dataimport/tests/test_signals.py b/arkindex/dataimport/tests/test_signals.py index 783bc27d88..821c646a80 100644 --- a/arkindex/dataimport/tests/test_signals.py +++ b/arkindex/dataimport/tests/test_signals.py @@ -1,9 +1,10 @@ -from arkindex_common.ml_tool import MLToolType -from arkindex_common.enums import DataImportMode -from arkindex.dataimport.models import Worker, WorkerVersion, WorkerRun, RepositoryType +from rest_framework.exceptions import ValidationError + +from arkindex.dataimport.models import RepositoryType, Worker, WorkerRun, WorkerVersion from arkindex.dataimport.signals import _list_ancestors from arkindex.project.tests import FixtureAPITestCase -from rest_framework.exceptions import ValidationError +from arkindex_common.enums import DataImportMode +from arkindex_common.ml_tool import MLToolType class TestSignals(FixtureAPITestCase): diff --git a/arkindex/dataimport/tests/test_transkribus_import.py b/arkindex/dataimport/tests/test_transkribus_import.py index 80cd348f10..ea8f869f6d 100644 --- a/arkindex/dataimport/tests/test_transkribus_import.py +++ b/arkindex/dataimport/tests/test_transkribus_import.py @@ -1,15 +1,17 @@ from unittest.mock import patch -from django.urls import reverse -from django.test import override_settings + +import yaml from django.conf import settings +from django.test import override_settings +from django.urls import reverse from rest_framework import status -from arkindex_common.enums import DataImportMode + from arkindex.dataimport.models import DataImport -from arkindex.project.tests import FixtureAPITestCase from arkindex.project.default_corpus import DEFAULT_TRANSKRIBUS_TYPES -from ponos.models import State +from arkindex.project.tests import FixtureAPITestCase from arkindex.users.models import User -import yaml +from arkindex_common.enums import DataImportMode +from ponos.models import State @override_settings(TRANSKRIBUS_EMAIL="arkindex@teklia.com", TRANSKRIBUS_PASSWORD=None) diff --git a/arkindex/dataimport/tests/test_workerruns.py b/arkindex/dataimport/tests/test_workerruns.py index 347e0eb84c..1528ca7309 100644 --- a/arkindex/dataimport/tests/test_workerruns.py +++ b/arkindex/dataimport/tests/test_workerruns.py @@ -1,11 +1,13 @@ +import uuid from unittest.mock import patch + from django.urls import reverse from rest_framework import status + +from arkindex.dataimport.models import WorkerRun, WorkerVersion +from arkindex.project.tests import FixtureAPITestCase from arkindex_common.enums import DataImportMode -from arkindex.dataimport.models import WorkerVersion, WorkerRun from ponos.models import Workflow -from arkindex.project.tests import FixtureAPITestCase -import uuid RECIPE = ''' tasks: diff --git a/arkindex/dataimport/tests/test_workers.py b/arkindex/dataimport/tests/test_workers.py index 0fe294824d..47754685d4 100644 --- a/arkindex/dataimport/tests/test_workers.py +++ b/arkindex/dataimport/tests/test_workers.py @@ -1,8 +1,9 @@ from django.urls import reverse from rest_framework import status -from arkindex_common.ml_tool import MLToolType -from arkindex.dataimport.models import Repository, Revision, Worker, WorkerVersion, WorkerVersionState, RepositoryType + +from arkindex.dataimport.models import Repository, RepositoryType, Revision, Worker, WorkerVersion, WorkerVersionState from arkindex.project.tests import FixtureAPITestCase +from arkindex_common.ml_tool import MLToolType from ponos.models import Workflow RECIPE = ''' diff --git a/arkindex/dataimport/tests/test_workflows_api.py b/arkindex/dataimport/tests/test_workflows_api.py index b43afb03ba..575f3364e5 100644 --- a/arkindex/dataimport/tests/test_workflows_api.py +++ b/arkindex/dataimport/tests/test_workflows_api.py @@ -1,12 +1,13 @@ +import yaml from django.test import override_settings -from rest_framework.reverse import reverse from rest_framework import status +from rest_framework.reverse import reverse + +from arkindex.dataimport.models import DataImport, RepositoryType, WorkerVersion +from arkindex.documents.models import Corpus, Element +from arkindex.project.tests import FixtureAPITestCase from arkindex_common.enums import DataImportMode from ponos.models import State, Workflow -from arkindex.dataimport.models import DataImport, WorkerVersion, RepositoryType -from arkindex.documents.models import Element, Corpus -from arkindex.project.tests import FixtureAPITestCase -import yaml RECIPE = ''' tasks: diff --git a/arkindex/documents/admin.py b/arkindex/documents/admin.py index 7a42a6b9f3..17a0074e12 100644 --- a/arkindex/documents/admin.py +++ b/arkindex/documents/admin.py @@ -1,11 +1,23 @@ -from django.contrib import admin from django import forms +from django.contrib import admin from django_admin_hstore_widget.forms import HStoreFormField -from arkindex.documents.models import \ - Corpus, Element, ElementType, Transcription, MetaData, AllowedMetaData, MLClass, \ - Classification, DataSource, Entity, EntityRole, EntityLink from enumfields.admin import EnumFieldListFilter +from arkindex.documents.models import ( + AllowedMetaData, + Classification, + Corpus, + DataSource, + Element, + ElementType, + Entity, + EntityLink, + EntityRole, + MetaData, + MLClass, + Transcription, +) + class ElementTypeInline(admin.TabularInline): model = ElementType diff --git a/arkindex/documents/api/admin.py b/arkindex/documents/api/admin.py index d951e80477..b08091dbfb 100644 --- a/arkindex/documents/api/admin.py +++ b/arkindex/documents/api/admin.py @@ -1,8 +1,9 @@ from django.conf import settings -from rest_framework.generics import CreateAPIView from rest_framework.exceptions import ValidationError -from arkindex.project.permissions import IsAdminUser +from rest_framework.generics import CreateAPIView + from arkindex.documents.serializers.admin import ReindexConfigSerializer +from arkindex.project.permissions import IsAdminUser class ReindexStart(CreateAPIView): diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py index 9a8bab749e..1d4993c36b 100644 --- a/arkindex/documents/api/elements.py +++ b/arkindex/documents/api/elements.py @@ -1,43 +1,63 @@ +import email.utils +import uuid from collections import defaultdict from datetime import datetime, timezone -from psycopg2.extras import execute_values + from django.conf import settings -from django.db import transaction, connection -from django.db.models import Q, Prefetch, Max, QuerySet, CharField +from django.db import connection, transaction +from django.db.models import CharField, Max, Prefetch, Q, QuerySet from django.db.models.functions import Cast from django.shortcuts import get_object_or_404 from django.utils.functional import cached_property -from rest_framework.exceptions import ValidationError, NotFound +from psycopg2.extras import execute_values +from rest_framework import serializers, status +from rest_framework.exceptions import NotFound, ValidationError from rest_framework.generics import ( - ListAPIView, CreateAPIView, RetrieveAPIView, UpdateAPIView, DestroyAPIView, - ListCreateAPIView, RetrieveUpdateDestroyAPIView, + CreateAPIView, + DestroyAPIView, + ListAPIView, + ListCreateAPIView, + RetrieveAPIView, + RetrieveUpdateDestroyAPIView, + UpdateAPIView, ) -from rest_framework import status, serializers from rest_framework.response import Response -from arkindex_common.enums import TranscriptionType + +from arkindex.dataimport.models import WorkerVersion from arkindex.documents.models import ( - Corpus, Element, ElementPath, Right, MetaData, AllowedMetaData, - Classification, ClassificationState, Transcription, ElementType + AllowedMetaData, + Classification, + ClassificationState, + Corpus, + Element, + ElementPath, + ElementType, + MetaData, + Right, + Transcription, ) from arkindex.documents.serializers.elements import ( - CorpusSerializer, ElementSerializer, ElementSlimSerializer, ElementListSerializer, - ElementCreateSerializer, ElementNeighborsSerializer, ElementParentSerializer, - MetaDataUpdateSerializer, ElementTypeSerializer, ElementBulkSerializer, + CorpusSerializer, + ElementBulkSerializer, + ElementCreateSerializer, + ElementListSerializer, + ElementNeighborsSerializer, + ElementParentSerializer, + ElementSerializer, + ElementSlimSerializer, + ElementTypeSerializer, + MetaDataUpdateSerializer, ) from arkindex.documents.serializers.light import CorpusAllowedMetaDataSerializer, ElementTypeLightSerializer from arkindex.documents.serializers.ml import ElementTranscriptionSerializer -from arkindex.dataimport.models import WorkerVersion from arkindex.images.models import Zone +from arkindex.project.mixins import CorpusACLMixin, DeprecatedMixin, SelectionMixin from arkindex.project.openapi import AutoSchema -from arkindex.project.mixins import CorpusACLMixin, SelectionMixin, DeprecatedMixin from arkindex.project.pagination import PageNumberPagination -from arkindex.project.permissions import IsVerified, IsVerifiedOrReadOnly, IsAuthenticated -from arkindex.project.triggers import corpus_delete +from arkindex.project.permissions import IsAuthenticated, IsVerified, IsVerifiedOrReadOnly from arkindex.project.tools import BulkMap - -import email.utils -import uuid - +from arkindex.project.triggers import corpus_delete +from arkindex_common.enums import TranscriptionType classifications_queryset = Classification.objects.select_related('ml_class', 'source').order_by('-confidence') diff --git a/arkindex/documents/api/entities.py b/arkindex/documents/api/entities.py index 8a5f54a135..a4bd581e6a 100644 --- a/arkindex/documents/api/entities.py +++ b/arkindex/documents/api/entities.py @@ -1,25 +1,45 @@ from uuid import UUID -from django.core.exceptions import ValidationError + from django.conf import settings +from django.core.exceptions import ValidationError from django.db.models import Q from elasticsearch.exceptions import NotFoundError from rest_framework import serializers, status -from rest_framework.generics import \ - ListAPIView, ListCreateAPIView, RetrieveAPIView, CreateAPIView, RetrieveUpdateDestroyAPIView from rest_framework.exceptions import NotFound +from rest_framework.generics import ( + CreateAPIView, + ListAPIView, + ListCreateAPIView, + RetrieveAPIView, + RetrieveUpdateDestroyAPIView, +) from rest_framework.response import Response -from arkindex.documents.models import \ - Corpus, Right, Element, Transcription, TranscriptionEntity, Entity, EntityLink, EntityRole + +from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import ( + Corpus, + Element, + Entity, + EntityLink, + EntityRole, + Right, + Transcription, + TranscriptionEntity, +) +from arkindex.documents.serializers.elements import ElementEntitiesSerializer, ElementSlimSerializer from arkindex.documents.serializers.entities import ( - EntityRoleSerializer, EntitySerializer, EntityCreateSerializer, EntityLinkCreateSerializer, - TranscriptionEntitySerializer, TranscriptionEntityDetailsSerializer, EntityLinkSerializer, + EntityCreateSerializer, + EntityLinkCreateSerializer, + EntityLinkSerializer, + EntityRoleSerializer, + EntitySerializer, + TranscriptionEntityDetailsSerializer, + TranscriptionEntitySerializer, ) -from arkindex.documents.serializers.elements import ElementSlimSerializer, ElementEntitiesSerializer -from arkindex.dataimport.models import WorkerVersion +from arkindex.project.elastic import ESEntity from arkindex.project.mixins import CorpusACLMixin from arkindex.project.permissions import IsVerified from arkindex.project.triggers import reindex_start -from arkindex.project.elastic import ESEntity class CorpusRoles(CorpusACLMixin, ListCreateAPIView): diff --git a/arkindex/documents/api/iiif.py b/arkindex/documents/api/iiif.py index 230a5e6cae..5989b2a4e7 100644 --- a/arkindex/documents/api/iiif.py +++ b/arkindex/documents/api/iiif.py @@ -1,18 +1,19 @@ from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_page -from rest_framework.generics import RetrieveAPIView from rest_framework.exceptions import PermissionDenied -from arkindex_common.enums import TranscriptionType -from arkindex.documents.models import Element, Corpus -from arkindex.documents.serializers.search import IIIFSearchQuerySerializer +from rest_framework.generics import RetrieveAPIView + +from arkindex.documents.models import Corpus, Element +from arkindex.documents.search import search_transcriptions_filter_post from arkindex.documents.serializers.iiif import ( - FolderManifestSerializer, ElementAnnotationListSerializer, + FolderManifestSerializer, TranscriptionSearchAnnotationListSerializer, ) -from arkindex.documents.search import search_transcriptions_filter_post +from arkindex.documents.serializers.search import IIIFSearchQuerySerializer from arkindex.project.elastic import ESTranscription from arkindex.project.mixins import SearchAPIMixin +from arkindex_common.enums import TranscriptionType class FolderManifest(RetrieveAPIView): diff --git a/arkindex/documents/api/ml.py b/arkindex/documents/api/ml.py index fd3820662c..5af95a01ff 100644 --- a/arkindex/documents/api/ml.py +++ b/arkindex/documents/api/ml.py @@ -1,30 +1,53 @@ +import logging +import uuid from collections import defaultdict + from django.db import transaction -from django.db.models import Q, Count +from django.db.models import Count, Q from rest_framework import status +from rest_framework.exceptions import PermissionDenied, ValidationError from rest_framework.generics import ( - GenericAPIView, ListAPIView, ListCreateAPIView, CreateAPIView, - RetrieveDestroyAPIView, RetrieveUpdateDestroyAPIView + CreateAPIView, + GenericAPIView, + ListAPIView, + ListCreateAPIView, + RetrieveDestroyAPIView, + RetrieveUpdateDestroyAPIView, ) -from rest_framework.exceptions import PermissionDenied, ValidationError from rest_framework.response import Response -from arkindex.documents.models import \ - Corpus, Element, ElementPath, DataSource, Classification, ClassificationState, Transcription, Entity, Right, MLClass -from arkindex_common.ml_tool import MLToolType + +from arkindex.documents.models import ( + Classification, + ClassificationState, + Corpus, + DataSource, + Element, + ElementPath, + Entity, + MLClass, + Right, + Transcription, +) from arkindex.documents.serializers.ml import ( - ClassificationsSerializer, ClassificationCreateSerializer, ClassificationSerializer, - ClassificationsSelectionSerializer, ClassificationMode, - TranscriptionSerializer, TranscriptionCreateSerializer, TranscriptionBulkSerializer, - ElementTranscriptionsBulkSerializer, AnnotatedElementSerializer, - DataSourceStatsSerializer, CountMLClassSerializer + AnnotatedElementSerializer, + ClassificationCreateSerializer, + ClassificationMode, + ClassificationSerializer, + ClassificationsSelectionSerializer, + ClassificationsSerializer, + CountMLClassSerializer, + DataSourceStatsSerializer, + ElementTranscriptionsBulkSerializer, + TranscriptionBulkSerializer, + TranscriptionCreateSerializer, + TranscriptionSerializer, ) from arkindex.images.models import Zone from arkindex.project.filters import SafeSearchFilter -from arkindex.project.mixins import SelectionMixin, CorpusACLMixin, DeprecatedMixin -from arkindex.project.permissions import IsVerified, IsVerifiedOrReadOnly, IsAdminUser -from arkindex.project.triggers import reindex_start, ml_results_delete -import uuid -import logging +from arkindex.project.mixins import CorpusACLMixin, DeprecatedMixin, SelectionMixin +from arkindex.project.permissions import IsAdminUser, IsVerified, IsVerifiedOrReadOnly +from arkindex.project.triggers import ml_results_delete, reindex_start +from arkindex_common.ml_tool import MLToolType logger = logging.getLogger(__name__) diff --git a/arkindex/documents/api/search.py b/arkindex/documents/api/search.py index 436536e2a9..a5e36b77f8 100644 --- a/arkindex/documents/api/search.py +++ b/arkindex/documents/api/search.py @@ -1,12 +1,16 @@ from django.conf import settings +from elasticsearch_dsl.function import FieldValueFactor +from elasticsearch_dsl.query import FunctionScore, Nested, Q from rest_framework.generics import ListAPIView -from arkindex.documents.serializers.search import \ - ElementSearchResultSerializer, EntitySearchResultSerializer, EntitySearchQuerySerializer + from arkindex.documents.search import search_elements_post, search_entities_post -from arkindex.project.mixins import SearchAPIMixin +from arkindex.documents.serializers.search import ( + ElementSearchResultSerializer, + EntitySearchQuerySerializer, + EntitySearchResultSerializer, +) from arkindex.project.elastic import ESElement, ESEntity -from elasticsearch_dsl.query import Q, Nested, FunctionScore -from elasticsearch_dsl.function import FieldValueFactor +from arkindex.project.mixins import SearchAPIMixin class SearchAPIView(SearchAPIMixin, ListAPIView): diff --git a/arkindex/documents/consumers.py b/arkindex/documents/consumers.py index d418884202..a29b81e4ea 100644 --- a/arkindex/documents/consumers.py +++ b/arkindex/documents/consumers.py @@ -1,18 +1,28 @@ +import logging from math import ceil + from channels.consumer import SyncConsumer from django.db.models import Q from django.db.models.deletion import Collector from django.db.models.signals import pre_delete -from arkindex.project.tools import disconnect_signal -from arkindex.project.triggers import reindex_start + from arkindex.dataimport.models import DataImportElement from arkindex.documents.indexer import Indexer from arkindex.documents.models import ( - Corpus, Element, ElementPath, MetaData, Transcription, TranscriptionEntity, Entity, - EntityLink, Classification, Selection + Classification, + Corpus, + Element, + ElementPath, + Entity, + EntityLink, + MetaData, + Selection, + Transcription, + TranscriptionEntity, ) from arkindex.documents.signals import pre_delete_handler -import logging +from arkindex.project.tools import disconnect_signal +from arkindex.project.triggers import reindex_start logger = logging.getLogger(__name__) diff --git a/arkindex/documents/date_parser.py b/arkindex/documents/date_parser.py index 4c300ba464..2f5635eca1 100644 --- a/arkindex/documents/date_parser.py +++ b/arkindex/documents/date_parser.py @@ -1,7 +1,8 @@ -from arkindex.documents.dates import InterpretedDate, DateType -import unicodedata -import re import logging +import re +import unicodedata + +from arkindex.documents.dates import DateType, InterpretedDate logger = logging.getLogger(__name__) diff --git a/arkindex/documents/dates.py b/arkindex/documents/dates.py index cc115abf53..18eb0244a9 100644 --- a/arkindex/documents/dates.py +++ b/arkindex/documents/dates.py @@ -1,6 +1,7 @@ -from enumfields import Enum from datetime import datetime +from enumfields import Enum + class DateType(Enum): Exact = 'exact' diff --git a/arkindex/documents/indexer.py b/arkindex/documents/indexer.py index ccc158a5af..e015bf1bc3 100644 --- a/arkindex/documents/indexer.py +++ b/arkindex/documents/indexer.py @@ -1,12 +1,14 @@ +import datetime +import logging +import time + from django.conf import settings from django.db.models import QuerySet from elasticsearch import Elasticsearch -from elasticsearch.helpers import bulk as es_bulk from elasticsearch.exceptions import NotFoundError -from arkindex.project.elastic import ESTranscription, ESElement, ESEntity -import logging -import time -import datetime +from elasticsearch.helpers import bulk as es_bulk + +from arkindex.project.elastic import ESElement, ESEntity, ESTranscription logger = logging.getLogger(__name__) diff --git a/arkindex/documents/management/commands/build_fixtures.py b/arkindex/documents/management/commands/build_fixtures.py index 24bd321d0c..8873d20619 100644 --- a/arkindex/documents/management/commands/build_fixtures.py +++ b/arkindex/documents/management/commands/build_fixtures.py @@ -1,16 +1,18 @@ #!/usr/bin/env python3 +from datetime import datetime, timezone +from unittest.mock import patch + +from django.contrib.gis.geos import LinearRing from django.core.management.base import BaseCommand -from arkindex_common.ml_tool import MLToolType -from arkindex_common.enums import TranscriptionType, MetaType -from arkindex.documents.models import Corpus, Element, DataSource, MetaData +from django.utils import timezone as DjangoTimeZone + from arkindex.dataimport.models import RepositoryType, WorkerVersion, WorkerVersionState, Workflow -from arkindex.images.models import ImageServer, Image, Zone -from arkindex.users.models import User, CorpusRight +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_common.enums import MetaType, TranscriptionType +from arkindex_common.ml_tool import MLToolType from ponos.models import State -from django.contrib.gis.geos import LinearRing -from django.utils import timezone as DjangoTimeZone -from unittest.mock import patch -from datetime import datetime, timezone def fake_now(): diff --git a/arkindex/documents/management/commands/delete.py b/arkindex/documents/management/commands/delete.py index 60091e292b..44c22f0d6b 100644 --- a/arkindex/documents/management/commands/delete.py +++ b/arkindex/documents/management/commands/delete.py @@ -1,9 +1,11 @@ #!/usr/bin/env python3 -from django.core.management.base import BaseCommand -from arkindex.documents.models import Element import logging import uuid +from django.core.management.base import BaseCommand + +from arkindex.documents.models import Element + logging.basicConfig( level=logging.INFO, format='[%(levelname)s] %(message)s', diff --git a/arkindex/documents/management/commands/gunicorn.py b/arkindex/documents/management/commands/gunicorn.py index 1d3f4f6388..f7b94dbfa2 100644 --- a/arkindex/documents/management/commands/gunicorn.py +++ b/arkindex/documents/management/commands/gunicorn.py @@ -1,10 +1,10 @@ -from django.core.management.base import BaseCommand, CommandError -import sys -import os +import logging import multiprocessing -from django.core.wsgi import get_wsgi_application +import os +import sys -import logging +from django.core.management.base import BaseCommand, CommandError +from django.core.wsgi import get_wsgi_application logging.basicConfig( level=logging.INFO, diff --git a/arkindex/documents/management/commands/merge_types.py b/arkindex/documents/management/commands/merge_types.py index 94ee533d24..3ec934d006 100644 --- a/arkindex/documents/management/commands/merge_types.py +++ b/arkindex/documents/management/commands/merge_types.py @@ -1,8 +1,9 @@ #!/usr/bin/env python3 from django.core.management.base import BaseCommand, CommandError from django.db import transaction -from arkindex.project.argparse import CorpusArgument + from arkindex.documents.models import ElementType +from arkindex.project.argparse import CorpusArgument class Command(BaseCommand): diff --git a/arkindex/documents/management/commands/reindex.py b/arkindex/documents/management/commands/reindex.py index 3632b44ac0..1b515b2f74 100644 --- a/arkindex/documents/management/commands/reindex.py +++ b/arkindex/documents/management/commands/reindex.py @@ -1,10 +1,12 @@ #!/usr/bin/env python3 -from django.core.management.base import BaseCommand, CommandError +import logging + from django.conf import settings -from arkindex.project.argparse import CorpusArgument, ElementArgument +from django.core.management.base import BaseCommand, CommandError + from arkindex.documents.indexer import Indexer -from arkindex.documents.models import Element, Transcription, Entity -import logging +from arkindex.documents.models import Element, Entity, Transcription +from arkindex.project.argparse import CorpusArgument, ElementArgument logging.basicConfig( level=logging.INFO, diff --git a/arkindex/documents/management/commands/telegraf.py b/arkindex/documents/management/commands/telegraf.py index ebe490dbdc..53907b9f12 100644 --- a/arkindex/documents/management/commands/telegraf.py +++ b/arkindex/documents/management/commands/telegraf.py @@ -1,12 +1,14 @@ #!/usr/bin/env python3 -from django.core.management.base import BaseCommand +import time +from urllib.parse import urljoin + +import requests from django.conf import settings +from django.core.management.base import BaseCommand from django.db.models import Count -from arkindex.images.models import ImageServer, Image + +from arkindex.images.models import Image, ImageServer from arkindex.project.aws import S3FileStatus -from urllib.parse import urljoin -import time -import requests class Command(BaseCommand): diff --git a/arkindex/documents/managers.py b/arkindex/documents/managers.py index 4888f5a8f2..6cae09fb32 100644 --- a/arkindex/documents/managers.py +++ b/arkindex/documents/managers.py @@ -1,7 +1,9 @@ +import uuid +from itertools import chain, groupby + from django.db import models -from itertools import groupby, chain + from arkindex.project.fields import Unnest -import uuid class ElementManager(models.Manager): diff --git a/arkindex/documents/migrations/0001_initial.py b/arkindex/documents/migrations/0001_initial.py index 914968e4ff..dcfbbe0782 100644 --- a/arkindex/documents/migrations/0001_initial.py +++ b/arkindex/documents/migrations/0001_initial.py @@ -1,15 +1,17 @@ # Generated by Django 2.2.9 on 2020-01-17 15:39 +import uuid + +import django.contrib.postgres.fields.hstore +import django.db.models.deletion +import enumfields.fields +from django.db import migrations, models + import arkindex.documents.dates import arkindex.documents.models import arkindex.project.fields import arkindex_common.enums import arkindex_common.ml_tool -import django.contrib.postgres.fields.hstore -from django.db import migrations, models -import django.db.models.deletion -import enumfields.fields -import uuid class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0002_initial.py b/arkindex/documents/migrations/0002_initial.py index 6158dd2a58..fdafe7182b 100644 --- a/arkindex/documents/migrations/0002_initial.py +++ b/arkindex/documents/migrations/0002_initial.py @@ -1,9 +1,9 @@ # Generated by Django 2.2.9 on 2020-01-17 15:39 -from django.conf import settings import django.contrib.postgres.indexes -from django.db import migrations, models import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0005_element_source.py b/arkindex/documents/migrations/0005_element_source.py index 06ca9da976..f29467f574 100644 --- a/arkindex/documents/migrations/0005_element_source.py +++ b/arkindex/documents/migrations/0005_element_source.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.10 on 2020-03-10 10:17 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0011_auto_20200403_1456.py b/arkindex/documents/migrations/0011_auto_20200403_1456.py index 7795aef534..de7be88dc8 100644 --- a/arkindex/documents/migrations/0011_auto_20200403_1456.py +++ b/arkindex/documents/migrations/0011_auto_20200403_1456.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.10 on 2020-04-03 14:56 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0012_add_created_updated_corpus.py b/arkindex/documents/migrations/0012_add_created_updated_corpus.py index 3f04474928..45ba4088ab 100644 --- a/arkindex/documents/migrations/0012_add_created_updated_corpus.py +++ b/arkindex/documents/migrations/0012_add_created_updated_corpus.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.11 on 2020-05-08 07:51 -from django.db import migrations, models import django.utils.timezone +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0013_datasource_type_length.py b/arkindex/documents/migrations/0013_datasource_type_length.py index ea7be04414..93ff7fdd96 100644 --- a/arkindex/documents/migrations/0013_datasource_type_length.py +++ b/arkindex/documents/migrations/0013_datasource_type_length.py @@ -1,8 +1,9 @@ # Generated by Django 2.2.10 on 2020-05-19 14:59 -import arkindex_common.ml_tool -from django.db import migrations import enumfields.fields +from django.db import migrations + +import arkindex_common.ml_tool class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0014_nullable_transcription_zone.py b/arkindex/documents/migrations/0014_nullable_transcription_zone.py index cf5fd62add..b85d8fd846 100644 --- a/arkindex/documents/migrations/0014_nullable_transcription_zone.py +++ b/arkindex/documents/migrations/0014_nullable_transcription_zone.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.9 on 2020-05-27 09:03 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py b/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py index afd2a9bb5c..f29d0e89d6 100644 --- a/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py +++ b/arkindex/documents/migrations/0015_elementtype_allowed_transcription.py @@ -1,8 +1,9 @@ # Generated by Django 2.2.9 on 2020-06-03 13:26 -import arkindex_common.enums -from django.db import migrations import enumfields.fields +from django.db import migrations + +import arkindex_common.enums class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0016_selection.py b/arkindex/documents/migrations/0016_selection.py index 74d14ab703..8f90a4ef6a 100644 --- a/arkindex/documents/migrations/0016_selection.py +++ b/arkindex/documents/migrations/0016_selection.py @@ -1,9 +1,10 @@ # Generated by Django 2.2.13 on 2020-06-23 14:07 +import uuid + +import django.db.models.deletion from django.conf import settings from django.db import migrations, models -import django.db.models.deletion -import uuid class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0018_worker_version_attributes.py b/arkindex/documents/migrations/0018_worker_version_attributes.py index 9d1973bb33..40cc88e89f 100644 --- a/arkindex/documents/migrations/0018_worker_version_attributes.py +++ b/arkindex/documents/migrations/0018_worker_version_attributes.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.13 on 2020-08-10 10:00 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): diff --git a/arkindex/documents/migrations/0019_corpus_repository.py b/arkindex/documents/migrations/0019_corpus_repository.py index d4d393217f..fb14e5b85c 100644 --- a/arkindex/documents/migrations/0019_corpus_repository.py +++ b/arkindex/documents/migrations/0019_corpus_repository.py @@ -1,8 +1,9 @@ # Generated by Django 3.1 on 2020-09-11 07:26 -import arkindex.dataimport.models -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models + +import arkindex.dataimport.models def copy_repository_corpus(apps, schema_editor): diff --git a/arkindex/documents/migrations/0021_move_transcriptions.py b/arkindex/documents/migrations/0021_move_transcriptions.py index 728be9aa5f..848eaeb99d 100644 --- a/arkindex/documents/migrations/0021_move_transcriptions.py +++ b/arkindex/documents/migrations/0021_move_transcriptions.py @@ -1,6 +1,7 @@ # Generated by Django 3.1 on 2020-09-01 07:48 from django.db import migrations, models + from arkindex_common.enums import TranscriptionType diff --git a/arkindex/documents/models.py b/arkindex/documents/models.py index 9f4386df43..2e454de3da 100644 --- a/arkindex/documents/models.py +++ b/arkindex/documents/models.py @@ -1,21 +1,23 @@ -from django.db import models, transaction +import logging +import uuid + from django.conf import settings -from django.contrib.postgres.indexes import GinIndex from django.contrib.postgres.fields import HStoreField +from django.contrib.postgres.indexes import GinIndex +from django.core.exceptions import ValidationError +from django.db import models, transaction from django.db.models import Q from django.utils.functional import cached_property -from django.core.exceptions import ValidationError -from enumfields import EnumField, Enum -from arkindex_common.enums import TranscriptionType, MetaType, EntityType -from arkindex_common.ml_tool import MLToolType +from enumfields import Enum, EnumField + +from arkindex.documents.dates import InterpretedDateMixin +from arkindex.documents.managers import CorpusManager, ElementManager from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES, DEFAULT_TRANSKRIBUS_TYPES -from arkindex.project.models import IndexableModel +from arkindex.project.elastic import ESElement, ESEntity, ESTranscription from arkindex.project.fields import ArrayField -from arkindex.project.elastic import ESTranscription, ESElement, ESEntity -from arkindex.documents.managers import ElementManager, CorpusManager -from arkindex.documents.dates import InterpretedDateMixin -import uuid -import logging +from arkindex.project.models import IndexableModel +from arkindex_common.enums import EntityType, MetaType, TranscriptionType +from arkindex_common.ml_tool import MLToolType logger = logging.getLogger(__name__) diff --git a/arkindex/documents/search.py b/arkindex/documents/search.py index 6c69a9713c..b96cb85edc 100644 --- a/arkindex/documents/search.py +++ b/arkindex/documents/search.py @@ -1,7 +1,9 @@ +import uuid from itertools import chain + from django.db.models import prefetch_related_objects -from arkindex.documents.models import Transcription, Element, Entity -import uuid + +from arkindex.documents.models import Element, Entity, Transcription def search_transcriptions_post(data): diff --git a/arkindex/documents/serializers/admin.py b/arkindex/documents/serializers/admin.py index 0377d233a1..42a605b8d4 100644 --- a/arkindex/documents/serializers/admin.py +++ b/arkindex/documents/serializers/admin.py @@ -1,6 +1,7 @@ from rest_framework import serializers -from arkindex.project.triggers import reindex_start + from arkindex.documents.models import Corpus, Element +from arkindex.project.triggers import reindex_start class ReindexConfigSerializer(serializers.Serializer): diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py index b73d48845d..4afac14db2 100644 --- a/arkindex/documents/serializers/elements.py +++ b/arkindex/documents/serializers/elements.py @@ -1,23 +1,34 @@ from collections import defaultdict from uuid import UUID + from django.contrib.gis.geos import LinearRing from django.utils.functional import cached_property from rest_framework import serializers from rest_framework.exceptions import ValidationError -from arkindex_common.enums import MetaType + from arkindex.dataimport.models import WorkerVersion -from arkindex.images.serializers import ZoneSerializer -from arkindex.images.models import Image, Zone from arkindex.documents.models import ( - Corpus, Element, ElementPath, ElementType, MetaData, - Entity, Transcription, TranscriptionEntity, + Corpus, + Element, + ElementPath, + ElementType, + Entity, + MetaData, + Transcription, + TranscriptionEntity, ) +from arkindex.documents.serializers.entities import BaseEntitySerializer, TranscriptionEntityDetailsSerializer from arkindex.documents.serializers.light import ( - CorpusLightSerializer, ElementLightSerializer, ElementTypeLightSerializer, MetaDataLightSerializer + CorpusLightSerializer, + ElementLightSerializer, + ElementTypeLightSerializer, + MetaDataLightSerializer, ) -from arkindex.documents.serializers.entities import BaseEntitySerializer, TranscriptionEntityDetailsSerializer from arkindex.documents.serializers.ml import ClassificationSerializer, DataSourceSerializer +from arkindex.images.models import Image, Zone +from arkindex.images.serializers import ZoneSerializer from arkindex.project.serializer_fields import LinearRingField +from arkindex_common.enums import MetaType class MetaDataSerializer(MetaDataLightSerializer): diff --git a/arkindex/documents/serializers/entities.py b/arkindex/documents/serializers/entities.py index 21a0c6034b..8deca6f31a 100644 --- a/arkindex/documents/serializers/entities.py +++ b/arkindex/documents/serializers/entities.py @@ -1,12 +1,12 @@ from rest_framework import serializers + from arkindex.dataimport.models import WorkerVersion -from arkindex.documents.models import \ - Corpus, Entity, EntityLink, EntityRole, TranscriptionEntity -from arkindex_common.enums import EntityType +from arkindex.documents.models import Corpus, Entity, EntityLink, EntityRole, TranscriptionEntity from arkindex.documents.serializers.light import CorpusLightSerializer, InterpretedDateSerializer from arkindex.documents.serializers.ml import DataSourceSerializer from arkindex.project.serializer_fields import EnumField from arkindex.project.triggers import reindex_start +from arkindex_common.enums import EntityType class BaseEntitySerializer(serializers.ModelSerializer): diff --git a/arkindex/documents/serializers/iiif/__init__.py b/arkindex/documents/serializers/iiif/__init__.py index 3ed47c337b..0e9a7c7c35 100644 --- a/arkindex/documents/serializers/iiif/__init__.py +++ b/arkindex/documents/serializers/iiif/__init__.py @@ -1,5 +1,5 @@ -from arkindex.documents.serializers.iiif.manifests import FolderManifestSerializer # noqa: F401 from arkindex.documents.serializers.iiif.annotations import ( # noqa: F401 ElementAnnotationListSerializer, TranscriptionSearchAnnotationListSerializer, ) +from arkindex.documents.serializers.iiif.manifests import FolderManifestSerializer # noqa: F401 diff --git a/arkindex/documents/serializers/iiif/annotations.py b/arkindex/documents/serializers/iiif/annotations.py index 0fdbb9fa99..a32a9129e9 100644 --- a/arkindex/documents/serializers/iiif/annotations.py +++ b/arkindex/documents/serializers/iiif/annotations.py @@ -1,9 +1,11 @@ from abc import ABC, abstractmethod + from django.conf import settings from django.db.models import Q from rest_framework import serializers + from arkindex.documents.models import Element, Transcription -from arkindex.project.tools import build_absolute_url, bounding_box +from arkindex.project.tools import bounding_box, build_absolute_url class AnnotationSerializer(ABC, serializers.BaseSerializer): diff --git a/arkindex/documents/serializers/iiif/manifests.py b/arkindex/documents/serializers/iiif/manifests.py index a08f43f87f..094185915b 100644 --- a/arkindex/documents/serializers/iiif/manifests.py +++ b/arkindex/documents/serializers/iiif/manifests.py @@ -1,11 +1,12 @@ from django.conf import settings -from django.db.models import Prefetch, Subquery, OuterRef, Value, F, CharField -from django.db.models.functions import Concat, Ceil +from django.db.models import CharField, F, OuterRef, Prefetch, Subquery, Value +from django.db.models.functions import Ceil, Concat from rest_framework import serializers -from arkindex_common.enums import MetaType -from arkindex.documents.models import Element, MetaData, Classification + +from arkindex.documents.models import Classification, Element, MetaData from arkindex.images.models import Image, Zone -from arkindex.project.tools import build_absolute_url, bounding_box +from arkindex.project.tools import bounding_box, build_absolute_url +from arkindex_common.enums import MetaType class ImageResourceManifestSerializer(serializers.BaseSerializer): diff --git a/arkindex/documents/serializers/light.py b/arkindex/documents/serializers/light.py index e2eda15d73..49f446ae6f 100644 --- a/arkindex/documents/serializers/light.py +++ b/arkindex/documents/serializers/light.py @@ -1,13 +1,14 @@ -from rest_framework import serializers -from rest_framework.exceptions import ValidationError, APIException from django.db.models import Max -from arkindex.documents.models import Element, ElementType, Corpus, MetaData, AllowedMetaData -from arkindex_common.enums import MetaType, TranscriptionType +from rest_framework import serializers +from rest_framework.exceptions import APIException, ValidationError + +from arkindex.dataimport.serializers.git import RevisionSerializer from arkindex.documents.dates import DateType +from arkindex.documents.models import AllowedMetaData, Corpus, Element, ElementType, MetaData from arkindex.images.serializers import ZoneLightSerializer -from arkindex.dataimport.serializers.git import RevisionSerializer from arkindex.project.serializer_fields import EnumField from arkindex.project.triggers import reindex_start +from arkindex_common.enums import MetaType, TranscriptionType class InterpretedDateSerializer(serializers.Serializer): diff --git a/arkindex/documents/serializers/ml.py b/arkindex/documents/serializers/ml.py index 7fa83582f1..d172eea291 100644 --- a/arkindex/documents/serializers/ml.py +++ b/arkindex/documents/serializers/ml.py @@ -1,17 +1,26 @@ +import uuid from enum import Enum + from django.conf import settings from rest_framework import serializers -from rest_framework.validators import UniqueTogetherValidator from rest_framework.exceptions import ValidationError -from arkindex_common.ml_tool import MLToolType -from arkindex_common.enums import TranscriptionType +from rest_framework.validators import UniqueTogetherValidator + from arkindex.dataimport.models import WorkerVersion from arkindex.documents.models import ( - Corpus, Element, ElementType, Transcription, DataSource, MLClass, Classification, ClassificationState + Classification, + ClassificationState, + Corpus, + DataSource, + Element, + ElementType, + MLClass, + Transcription, ) -from arkindex.project.serializer_fields import EnumField, LinearRingField from arkindex.documents.serializers.light import ElementZoneSerializer -import uuid +from arkindex.project.serializer_fields import EnumField, LinearRingField +from arkindex_common.enums import TranscriptionType +from arkindex_common.ml_tool import MLToolType class ClassificationMode(Enum): diff --git a/arkindex/documents/serializers/search.py b/arkindex/documents/serializers/search.py index 3b6a6dfce0..ef15692f1f 100644 --- a/arkindex/documents/serializers/search.py +++ b/arkindex/documents/serializers/search.py @@ -1,13 +1,15 @@ +import math + from django.conf import settings from rest_framework import serializers -from arkindex_common.enums import EntityType, TranscriptionType -from arkindex.project.serializer_fields import EnumField -from arkindex.images.serializers import ZoneSerializer + from arkindex.documents.date_parser import parse_date from arkindex.documents.models import Element, ElementType, Entity from arkindex.documents.serializers.light import CorpusLightSerializer, ElementLightSerializer from arkindex.documents.serializers.ml import TranscriptionSerializer -import math +from arkindex.images.serializers import ZoneSerializer +from arkindex.project.serializer_fields import EnumField +from arkindex_common.enums import EntityType, TranscriptionType class SearchQuerySerializer(serializers.Serializer): diff --git a/arkindex/documents/signals.py b/arkindex/documents/signals.py index 61d8498454..446c6f9c13 100644 --- a/arkindex/documents/signals.py +++ b/arkindex/documents/signals.py @@ -1,9 +1,19 @@ +import logging + +from django.db.models import Q from django.db.models.signals import pre_delete from django.dispatch import receiver -from django.db.models import Q -from arkindex.documents.models import Element, ElementPath, Transcription, Classification, MetaData, Selection, TranscriptionEntity -from arkindex.dataimport.models import DataImportElement, DataImport -import logging + +from arkindex.dataimport.models import DataImport, DataImportElement +from arkindex.documents.models import ( + Classification, + Element, + ElementPath, + MetaData, + Selection, + Transcription, + TranscriptionEntity, +) logger = logging.getLogger(__name__) diff --git a/arkindex/documents/tests/commands/test_merge_types.py b/arkindex/documents/tests/commands/test_merge_types.py index 2486524d11..67d8eaf8e0 100644 --- a/arkindex/documents/tests/commands/test_merge_types.py +++ b/arkindex/documents/tests/commands/test_merge_types.py @@ -1,6 +1,7 @@ -from django.core.management import call_command, CommandError -from arkindex.project.tests import FixtureTestCase +from django.core.management import CommandError, call_command + from arkindex.documents.models import ElementType +from arkindex.project.tests import FixtureTestCase class TestMergeTypesCommand(FixtureTestCase): diff --git a/arkindex/documents/tests/commands/test_reindex.py b/arkindex/documents/tests/commands/test_reindex.py index dfa0b73023..0531056f53 100644 --- a/arkindex/documents/tests/commands/test_reindex.py +++ b/arkindex/documents/tests/commands/test_reindex.py @@ -1,10 +1,12 @@ -from unittest.mock import patch, call -from django.core.management import call_command, CommandError +from unittest.mock import call, patch + +from django.core.management import CommandError, call_command from django.test import override_settings -from arkindex_common.enums import MetaType + +from arkindex.documents.models import DataSource, Element, Entity, EntityType, MLToolType, Transcription +from arkindex.project.elastic import ESElement, ESEntity, ESTranscription from arkindex.project.tests import FixtureTestCase -from arkindex.project.elastic import ESTranscription, ESElement, ESEntity -from arkindex.documents.models import Element, Transcription, Entity, EntityType, DataSource, MLToolType +from arkindex_common.enums import MetaType class TestReindexCommand(FixtureTestCase): diff --git a/arkindex/documents/tests/commands/test_telegraf.py b/arkindex/documents/tests/commands/test_telegraf.py index a9b4f9c2cd..f5ea443597 100644 --- a/arkindex/documents/tests/commands/test_telegraf.py +++ b/arkindex/documents/tests/commands/test_telegraf.py @@ -1,8 +1,10 @@ -from django.core.management import call_command -from arkindex.project.tests import FixtureTestCase -from unittest.mock import patch import io import re +from unittest.mock import patch + +from django.core.management import call_command + +from arkindex.project.tests import FixtureTestCase class TestTelegraf(FixtureTestCase): diff --git a/arkindex/documents/tests/consumers/test_corpus_consumer.py b/arkindex/documents/tests/consumers/test_corpus_consumer.py index e677e2c4f2..af38dcf620 100644 --- a/arkindex/documents/tests/consumers/test_corpus_consumer.py +++ b/arkindex/documents/tests/consumers/test_corpus_consumer.py @@ -1,10 +1,11 @@ from django.db.models.signals import pre_delete -from arkindex_common.enums import TranscriptionType, MetaType, DataImportMode -from arkindex_common.ml_tool import MLToolType -from arkindex.project.tests import FixtureTestCase + +from arkindex.dataimport.models import Repository, RepositoryType from arkindex.documents.consumers import CorpusConsumer -from arkindex.documents.models import Corpus, Element, DataSource, MLClass -from arkindex.dataimport.models import RepositoryType, Repository +from arkindex.documents.models import Corpus, DataSource, Element, MLClass +from arkindex.project.tests import FixtureTestCase +from arkindex_common.enums import DataImportMode, MetaType, TranscriptionType +from arkindex_common.ml_tool import MLToolType class TestDeleteCorpus(FixtureTestCase): diff --git a/arkindex/documents/tests/consumers/test_ml_results_consumer.py b/arkindex/documents/tests/consumers/test_ml_results_consumer.py index 1612370bff..9d2af78941 100644 --- a/arkindex/documents/tests/consumers/test_ml_results_consumer.py +++ b/arkindex/documents/tests/consumers/test_ml_results_consumer.py @@ -1,11 +1,13 @@ -from arkindex_common.ml_tool import MLToolType from unittest.mock import patch -from mock import AsyncMock + from django.test import override_settings -from arkindex_common.enums import TranscriptionType, MetaType, EntityType -from arkindex.project.tests import FixtureTestCase +from mock import AsyncMock + from arkindex.documents.consumers import MLResultsConsumer -from arkindex.documents.models import Element, Transcription, Entity, Classification, DataSource +from arkindex.documents.models import Classification, DataSource, Element, Entity, Transcription +from arkindex.project.tests import FixtureTestCase +from arkindex_common.enums import EntityType, MetaType, TranscriptionType +from arkindex_common.ml_tool import MLToolType class TestMLResultsConsumer(FixtureTestCase): diff --git a/arkindex/documents/tests/consumers/test_reindex_consumer.py b/arkindex/documents/tests/consumers/test_reindex_consumer.py index bd5acb8496..c91253ffb6 100644 --- a/arkindex/documents/tests/consumers/test_reindex_consumer.py +++ b/arkindex/documents/tests/consumers/test_reindex_consumer.py @@ -1,11 +1,13 @@ -from arkindex_common.ml_tool import MLToolType from unittest.mock import patch -from django.db.models import Q -from arkindex_common.enums import TranscriptionType, MetaType, EntityType -from arkindex.project.tests import FixtureTestCase + from django.contrib.gis.geos import LinearRing +from django.db.models import Q + from arkindex.documents.consumers import ReindexConsumer -from arkindex.documents.models import Corpus, Element, Transcription, Entity, DataSource +from arkindex.documents.models import Corpus, DataSource, Element, Entity, Transcription +from arkindex.project.tests import FixtureTestCase +from arkindex_common.enums import EntityType, MetaType, TranscriptionType +from arkindex_common.ml_tool import MLToolType @patch('arkindex.documents.consumers.Indexer') diff --git a/arkindex/documents/tests/test_admin_api.py b/arkindex/documents/tests/test_admin_api.py index 63a1ec2c16..aa8c3f2ab6 100644 --- a/arkindex/documents/tests/test_admin_api.py +++ b/arkindex/documents/tests/test_admin_api.py @@ -1,10 +1,12 @@ from unittest.mock import patch -from mock import AsyncMock -from django.urls import reverse + from django.test import override_settings +from django.urls import reverse +from mock import AsyncMock from rest_framework import status -from arkindex.project.tests import FixtureTestCase + from arkindex.documents.models import Corpus +from arkindex.project.tests import FixtureTestCase class TestAdminAPI(FixtureTestCase): diff --git a/arkindex/documents/tests/test_annotation_list.py b/arkindex/documents/tests/test_annotation_list.py index d29f75add3..ac11c3bb92 100644 --- a/arkindex/documents/tests/test_annotation_list.py +++ b/arkindex/documents/tests/test_annotation_list.py @@ -1,5 +1,6 @@ from django.urls import reverse from rest_framework import status + from arkindex.project.tests import FixtureAPITestCase diff --git a/arkindex/documents/tests/test_bulk_classification.py b/arkindex/documents/tests/test_bulk_classification.py index 9f6faa953d..1ab1261240 100644 --- a/arkindex/documents/tests/test_bulk_classification.py +++ b/arkindex/documents/tests/test_bulk_classification.py @@ -1,9 +1,10 @@ from django.urls import reverse -from arkindex_common.ml_tool import MLToolType from rest_framework import status -from arkindex.project.tests import FixtureAPITestCase -from arkindex.documents.models import Corpus, DataSource, MLClass + from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Corpus, DataSource, MLClass +from arkindex.project.tests import FixtureAPITestCase +from arkindex_common.ml_tool import MLToolType class TestBulkClassification(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_bulk_element_transcriptions.py b/arkindex/documents/tests/test_bulk_element_transcriptions.py index 94f66aad33..a7b94ec640 100644 --- a/arkindex/documents/tests/test_bulk_element_transcriptions.py +++ b/arkindex/documents/tests/test_bulk_element_transcriptions.py @@ -1,14 +1,16 @@ -from django.urls import reverse -from django.test import override_settings -from django.db.models import Count +import uuid from unittest.mock import patch + +from django.db.models import Count +from django.test import override_settings +from django.urls import reverse from mock import AsyncMock from rest_framework import status + +from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Corpus, Element from arkindex.project.tests import FixtureAPITestCase from arkindex_common.enums import TranscriptionType -from arkindex.dataimport.models import WorkerVersion -from arkindex.documents.models import Element, Corpus -import uuid class TestBulkElementTranscriptions(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_bulk_elements.py b/arkindex/documents/tests/test_bulk_elements.py index 935e6b3759..9d552e2f7e 100644 --- a/arkindex/documents/tests/test_bulk_elements.py +++ b/arkindex/documents/tests/test_bulk_elements.py @@ -1,8 +1,9 @@ from django.urls import reverse from rest_framework import status -from arkindex.project.tests import FixtureAPITestCase -from arkindex.documents.models import Element, ElementPath + from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Element, ElementPath +from arkindex.project.tests import FixtureAPITestCase class TestBulkElements(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_bulk_transcriptions.py b/arkindex/documents/tests/test_bulk_transcriptions.py index 12cb09e2b5..6d37196112 100644 --- a/arkindex/documents/tests/test_bulk_transcriptions.py +++ b/arkindex/documents/tests/test_bulk_transcriptions.py @@ -1,8 +1,9 @@ from django.urls import reverse from rest_framework import status -from arkindex_common.enums import TranscriptionType -from arkindex.project.tests import FixtureAPITestCase + from arkindex.dataimport.models import WorkerVersion +from arkindex.project.tests import FixtureAPITestCase +from arkindex_common.enums import TranscriptionType class TestBulkTranscriptions(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_children_elements.py b/arkindex/documents/tests/test_children_elements.py index f46f6faeec..e78f7a0028 100644 --- a/arkindex/documents/tests/test_children_elements.py +++ b/arkindex/documents/tests/test_children_elements.py @@ -1,9 +1,11 @@ +import uuid + from django.urls import reverse from rest_framework import status -from arkindex.documents.models import Element + from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Element from arkindex.project.tests import FixtureAPITestCase -import uuid class TestChildrenElements(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_classes.py b/arkindex/documents/tests/test_classes.py index a6c2dfa5ea..6136b229d9 100644 --- a/arkindex/documents/tests/test_classes.py +++ b/arkindex/documents/tests/test_classes.py @@ -1,10 +1,10 @@ -from django.urls import reverse from django.test import override_settings +from django.urls import reverse from rest_framework import status -from arkindex.documents.models import \ - Corpus, Element, Classification, ClassificationState, DataSource, MLClass -from arkindex_common.ml_tool import MLToolType + +from arkindex.documents.models import Classification, ClassificationState, Corpus, DataSource, Element, MLClass from arkindex.project.tests import FixtureAPITestCase +from arkindex_common.ml_tool import MLToolType class TestClasses(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_corpus.py b/arkindex/documents/tests/test_corpus.py index f46df8feb0..b816b02bd7 100644 --- a/arkindex/documents/tests/test_corpus.py +++ b/arkindex/documents/tests/test_corpus.py @@ -1,15 +1,16 @@ -from mock import AsyncMock +import datetime from unittest.mock import patch + +import mock from django.contrib.auth.models import AnonymousUser from django.db.models import Model, ProtectedError from django.urls import reverse +from mock import AsyncMock from rest_framework import status from arkindex.documents.models import Corpus, Element, Right from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES from arkindex.project.tests import FixtureAPITestCase -import datetime -import mock FAKE_NOW = datetime.datetime.now() # Fake DB fixtures creation date diff --git a/arkindex/documents/tests/test_corpus_authorized_users.py b/arkindex/documents/tests/test_corpus_authorized_users.py index 6d7ae7e261..a0efc0799d 100644 --- a/arkindex/documents/tests/test_corpus_authorized_users.py +++ b/arkindex/documents/tests/test_corpus_authorized_users.py @@ -2,8 +2,8 @@ from django.urls import reverse from rest_framework import status from arkindex.documents.models import Corpus -from arkindex.users.models import User from arkindex.project.tests import FixtureAPITestCase +from arkindex.users.models import User class TestCorpusAuthorizedUsers(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_corpus_elements.py b/arkindex/documents/tests/test_corpus_elements.py index 2a348376ff..36b44551a8 100644 --- a/arkindex/documents/tests/test_corpus_elements.py +++ b/arkindex/documents/tests/test_corpus_elements.py @@ -1,10 +1,12 @@ -from django.urls import reverse +import uuid + from django.db.models.sql.constants import LOUTER +from django.urls import reverse from rest_framework import status -from arkindex.documents.models import Corpus + from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Corpus from arkindex.project.tests import FixtureAPITestCase -import uuid class TestListElements(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_create_elements.py b/arkindex/documents/tests/test_create_elements.py index 232ce91875..607bbfbcb5 100644 --- a/arkindex/documents/tests/test_create_elements.py +++ b/arkindex/documents/tests/test_create_elements.py @@ -1,7 +1,8 @@ from django.urls import reverse from rest_framework import status + from arkindex.dataimport.models import WorkerVersion -from arkindex.documents.models import Element, Corpus +from arkindex.documents.models import Corpus, Element from arkindex.images.models import ImageServer from arkindex.project.aws import S3FileStatus from arkindex.project.tests import FixtureAPITestCase diff --git a/arkindex/documents/tests/test_create_transcriptions.py b/arkindex/documents/tests/test_create_transcriptions.py index f3415b7063..80570f2470 100644 --- a/arkindex/documents/tests/test_create_transcriptions.py +++ b/arkindex/documents/tests/test_create_transcriptions.py @@ -1,15 +1,17 @@ -from django.urls import reverse -from django.test import override_settings from unittest.mock import patch +from uuid import uuid4 + +from django.test import override_settings +from django.urls import reverse from mock import AsyncMock from rest_framework import status + +from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Corpus, DataSource, Transcription from arkindex.project.tests import FixtureAPITestCase +from arkindex.users.models import User from arkindex_common.enums import TranscriptionType from arkindex_common.ml_tool import MLToolType -from arkindex.dataimport.models import WorkerVersion -from arkindex.documents.models import Corpus, Transcription, DataSource -from arkindex.users.models import User -from uuid import uuid4 class TestTranscriptionCreate(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_datasource.py b/arkindex/documents/tests/test_datasource.py index b82c315706..2730d7ccaa 100644 --- a/arkindex/documents/tests/test_datasource.py +++ b/arkindex/documents/tests/test_datasource.py @@ -1,6 +1,7 @@ from django.test import TestCase -from arkindex_common.ml_tool import MLToolType + from arkindex.documents.models import DataSource +from arkindex_common.ml_tool import MLToolType class TestDataSource(TestCase): diff --git a/arkindex/documents/tests/test_date_parser.py b/arkindex/documents/tests/test_date_parser.py index e4f2fdd5b6..cf148a8b3d 100644 --- a/arkindex/documents/tests/test_date_parser.py +++ b/arkindex/documents/tests/test_date_parser.py @@ -1,10 +1,18 @@ from unittest.mock import patch + +from django.test import TestCase + from arkindex.documents.date_parser import ( - parse_date, instanciate_date, year, year_month, year_month_day, - year_month_str, year_year, DATE_FUNCTIONS_TABLE, + DATE_FUNCTIONS_TABLE, + instanciate_date, + parse_date, + year, + year_month, + year_month_day, + year_month_str, + year_year, ) from arkindex.documents.dates import DateType, InterpretedDate -from django.test import TestCase class TestDateParser(TestCase): diff --git a/arkindex/documents/tests/test_destroy_elements.py b/arkindex/documents/tests/test_destroy_elements.py index 4ead708b08..a4e43612a3 100644 --- a/arkindex/documents/tests/test_destroy_elements.py +++ b/arkindex/documents/tests/test_destroy_elements.py @@ -1,5 +1,6 @@ from django.urls import reverse from rest_framework import status + from arkindex.documents.models import Corpus from arkindex.project.tests import FixtureAPITestCase diff --git a/arkindex/documents/tests/test_edit_elementpath.py b/arkindex/documents/tests/test_edit_elementpath.py index ae344749ef..1c1ea24019 100644 --- a/arkindex/documents/tests/test_edit_elementpath.py +++ b/arkindex/documents/tests/test_edit_elementpath.py @@ -1,7 +1,8 @@ +import itertools + +from arkindex.documents.models import Element, ElementPath from arkindex.project.tests import FixtureTestCase from arkindex.project.tools import build_tree -from arkindex.documents.models import ElementPath, Element -import itertools class TestEditElementPath(FixtureTestCase): diff --git a/arkindex/documents/tests/test_edit_transcriptions.py b/arkindex/documents/tests/test_edit_transcriptions.py index d2f0678a06..acd17b370b 100644 --- a/arkindex/documents/tests/test_edit_transcriptions.py +++ b/arkindex/documents/tests/test_edit_transcriptions.py @@ -1,11 +1,13 @@ +from uuid import uuid4 + from django.urls import reverse from rest_framework import status + +from arkindex.documents.models import Corpus, DataSource, Element, Transcription from arkindex.project.tests import FixtureAPITestCase -from arkindex_common.enums import TranscriptionType -from arkindex.documents.models import Corpus, Element, Transcription, DataSource from arkindex.users.models import User +from arkindex_common.enums import TranscriptionType from arkindex_common.ml_tool import MLToolType -from uuid import uuid4 class TestEditTranscription(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_element_manager.py b/arkindex/documents/tests/test_element_manager.py index 85ef5adfeb..4c2908c6a7 100644 --- a/arkindex/documents/tests/test_element_manager.py +++ b/arkindex/documents/tests/test_element_manager.py @@ -1,5 +1,5 @@ -from arkindex.project.tests import FixtureTestCase from arkindex.documents.models import Element +from arkindex.project.tests import FixtureTestCase class TestElementManager(FixtureTestCase): diff --git a/arkindex/documents/tests/test_element_paths_api.py b/arkindex/documents/tests/test_element_paths_api.py index 6957cb0a3f..3df661dc6d 100644 --- a/arkindex/documents/tests/test_element_paths_api.py +++ b/arkindex/documents/tests/test_element_paths_api.py @@ -1,6 +1,7 @@ from django.urls import reverse from rest_framework import status -from arkindex.documents.models import Corpus, ElementPath, Element + +from arkindex.documents.models import Corpus, Element, ElementPath from arkindex.project.aws import S3FileStatus from arkindex.project.tests import FixtureAPITestCase diff --git a/arkindex/documents/tests/test_element_type.py b/arkindex/documents/tests/test_element_type.py index 08e1c4acde..e756e189e2 100644 --- a/arkindex/documents/tests/test_element_type.py +++ b/arkindex/documents/tests/test_element_type.py @@ -1,7 +1,8 @@ from django.urls import reverse from rest_framework import status + +from arkindex.documents.models import Corpus, ElementType from arkindex.project.tests import FixtureAPITestCase -from arkindex.documents.models import ElementType, Corpus from arkindex.users.models import User diff --git a/arkindex/documents/tests/test_entities.py b/arkindex/documents/tests/test_entities.py index bd8d6ab612..ba6efbf003 100644 --- a/arkindex/documents/tests/test_entities.py +++ b/arkindex/documents/tests/test_entities.py @@ -1,8 +1,8 @@ from django.core.exceptions import ValidationError -from arkindex_common.enums import MetaType, EntityType -from arkindex.documents.models import \ - Corpus, Entity, EntityRole, EntityLink, MetaData, DataSource, MLToolType + +from arkindex.documents.models import Corpus, DataSource, Entity, EntityLink, EntityRole, MetaData, MLToolType from arkindex.project.tests import FixtureTestCase +from arkindex_common.enums import EntityType, MetaType class TestSaveEntities(FixtureTestCase): diff --git a/arkindex/documents/tests/test_entities_api.py b/arkindex/documents/tests/test_entities_api.py index b6e201e63a..e081c5ce3c 100644 --- a/arkindex/documents/tests/test_entities_api.py +++ b/arkindex/documents/tests/test_entities_api.py @@ -1,17 +1,27 @@ -from django.urls import reverse +import uuid +from unittest.mock import Mock, call, patch + +from django.contrib.gis.geos import LinearRing from django.test import override_settings -from unittest.mock import Mock, patch, call +from django.urls import reverse +from elasticsearch.exceptions import NotFoundError from rest_framework import status -from arkindex_common.enums import MetaType -from arkindex.project.tests import FixtureAPITestCase + from arkindex.dataimport.models import WorkerVersion -from django.contrib.gis.geos import LinearRing from arkindex.documents.models import ( - Corpus, Element, TranscriptionType, DataSource, MLToolType, - Entity, EntityType, EntityRole, EntityLink, TranscriptionEntity, + Corpus, + DataSource, + Element, + Entity, + EntityLink, + EntityRole, + EntityType, + MLToolType, + TranscriptionEntity, + TranscriptionType, ) -from elasticsearch.exceptions import NotFoundError -import uuid +from arkindex.project.tests import FixtureAPITestCase +from arkindex_common.enums import MetaType # Mock channels asynchronous triggered tasks diff --git a/arkindex/documents/tests/test_indexer.py b/arkindex/documents/tests/test_indexer.py index 1697c26932..52a7d9a9a2 100644 --- a/arkindex/documents/tests/test_indexer.py +++ b/arkindex/documents/tests/test_indexer.py @@ -1,10 +1,12 @@ -from unittest.mock import patch, call, MagicMock +from unittest.mock import MagicMock, call, patch + from elasticsearch import Elasticsearch from elasticsearch.exceptions import NotFoundError -from arkindex_common.enums import EntityType -from arkindex.project.tests import FixtureTestCase + from arkindex.documents.indexer import Indexer from arkindex.documents.models import DataSource, MLToolType +from arkindex.project.tests import FixtureTestCase +from arkindex_common.enums import EntityType class TestIndexer(FixtureTestCase): diff --git a/arkindex/documents/tests/test_interpreted_date.py b/arkindex/documents/tests/test_interpreted_date.py index 8314bb3851..df3b490095 100644 --- a/arkindex/documents/tests/test_interpreted_date.py +++ b/arkindex/documents/tests/test_interpreted_date.py @@ -1,6 +1,7 @@ from django.test import TestCase -from arkindex.documents.dates import DateType, InterpretedDate + from arkindex.documents.date_parser import parse_date +from arkindex.documents.dates import DateType, InterpretedDate class TestInterpretedDate(TestCase): diff --git a/arkindex/documents/tests/test_manifest.py b/arkindex/documents/tests/test_manifest.py index ca6133ccac..659e5d3517 100644 --- a/arkindex/documents/tests/test_manifest.py +++ b/arkindex/documents/tests/test_manifest.py @@ -1,12 +1,13 @@ -from django.urls import reverse from django.core.cache import cache from django.test import override_settings +from django.urls import reverse from rest_framework import status from tripoli import IIIFValidator -from arkindex_common.ml_tool import MLToolType -from arkindex_common.enums import MetaType + +from arkindex.documents.models import DataSource, Element from arkindex.project.tests import FixtureAPITestCase -from arkindex.documents.models import Element, DataSource +from arkindex_common.enums import MetaType +from arkindex_common.ml_tool import MLToolType class TestFolderManifestSerializer(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_metadata.py b/arkindex/documents/tests/test_metadata.py index 57d4d05e64..9212a3bbe2 100644 --- a/arkindex/documents/tests/test_metadata.py +++ b/arkindex/documents/tests/test_metadata.py @@ -1,12 +1,14 @@ -from arkindex.documents.models import Corpus, MetaData, AllowedMetaData, DataSource +from unittest.mock import call, patch + +from django.test import override_settings +from django.urls import reverse +from rest_framework import status + +from arkindex.documents.models import AllowedMetaData, Corpus, DataSource, MetaData from arkindex.project.tests import FixtureAPITestCase -from arkindex_common.enums import MetaType, EntityType -from arkindex_common.ml_tool import MLToolType from arkindex.users.models import User -from rest_framework import status -from django.urls import reverse -from django.test import override_settings -from unittest.mock import patch, call +from arkindex_common.enums import EntityType, MetaType +from arkindex_common.ml_tool import MLToolType class TestMetaData(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_ml_results.py b/arkindex/documents/tests/test_ml_results.py index fa8ddd48c8..d16776edf1 100644 --- a/arkindex/documents/tests/test_ml_results.py +++ b/arkindex/documents/tests/test_ml_results.py @@ -1,10 +1,12 @@ -from mock import AsyncMock from unittest.mock import patch + from django.urls import reverse +from mock import AsyncMock from rest_framework import status -from arkindex_common.enums import MetaType, EntityType + +from arkindex.documents.models import DataSource, Entity, Transcription from arkindex.project.tests import FixtureTestCase -from arkindex.documents.models import DataSource, Transcription, Entity +from arkindex_common.enums import EntityType, MetaType class TestMLResults(FixtureTestCase): diff --git a/arkindex/documents/tests/test_moderation.py b/arkindex/documents/tests/test_moderation.py index e991bc8013..ead4c22466 100644 --- a/arkindex/documents/tests/test_moderation.py +++ b/arkindex/documents/tests/test_moderation.py @@ -3,8 +3,15 @@ from django.urls import reverse from rest_framework import status from arkindex.dataimport.models import WorkerVersion -from arkindex.documents.models import \ - ClassificationState, DataSource, MLClass, Element, Corpus, Classification, MLToolType +from arkindex.documents.models import ( + Classification, + ClassificationState, + Corpus, + DataSource, + Element, + MLClass, + MLToolType, +) from arkindex.project.tests import FixtureAPITestCase from arkindex.users.models import User diff --git a/arkindex/documents/tests/test_neighbors.py b/arkindex/documents/tests/test_neighbors.py index 1949e1ccaf..59cd2322cd 100644 --- a/arkindex/documents/tests/test_neighbors.py +++ b/arkindex/documents/tests/test_neighbors.py @@ -1,9 +1,10 @@ -from django.urls import reverse from django.db.models import F +from django.urls import reverse from rest_framework import status + +from arkindex.documents.models import Element, ElementPath from arkindex.project.tests import FixtureAPITestCase from arkindex.project.tools import build_tree -from arkindex.documents.models import Element, ElementPath class TestElementNeighbors(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_parents_elements.py b/arkindex/documents/tests/test_parents_elements.py index b3f3a5e5b5..6ad84a8a18 100644 --- a/arkindex/documents/tests/test_parents_elements.py +++ b/arkindex/documents/tests/test_parents_elements.py @@ -1,10 +1,12 @@ +import uuid + from django.urls import reverse from rest_framework import status -from arkindex_common.ml_tool import MLToolType -from arkindex.documents.models import Element, DataSource, Corpus + from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Corpus, DataSource, Element from arkindex.project.tests import FixtureAPITestCase -import uuid +from arkindex_common.ml_tool import MLToolType class TestParentsElements(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_patch_elements.py b/arkindex/documents/tests/test_patch_elements.py index 5ad5ea1f7d..0f89d059c3 100644 --- a/arkindex/documents/tests/test_patch_elements.py +++ b/arkindex/documents/tests/test_patch_elements.py @@ -1,13 +1,13 @@ from django.urls import reverse from rest_framework import status -from arkindex_common.ml_tool import MLToolType -from arkindex_common.enums import TranscriptionType -from arkindex.documents.models import \ - Element, DataSource, Corpus + +from arkindex.documents.models import Corpus, DataSource, Element from arkindex.images.models import ImageServer from arkindex.project.aws import S3FileStatus from arkindex.project.tests import FixtureAPITestCase from arkindex.users.models import User +from arkindex_common.enums import TranscriptionType +from arkindex_common.ml_tool import MLToolType class TestPatchElements(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_retrieve_elements.py b/arkindex/documents/tests/test_retrieve_elements.py index 3d7baaef44..aae92d1a99 100644 --- a/arkindex/documents/tests/test_retrieve_elements.py +++ b/arkindex/documents/tests/test_retrieve_elements.py @@ -1,10 +1,10 @@ from django.urls import reverse from rest_framework import status -from arkindex_common.enums import MetaType, EntityType -from arkindex_common.ml_tool import MLToolType -from arkindex.documents.models import \ - DataSource, Corpus, Entity, MLClass, Classification, Element + +from arkindex.documents.models import Classification, Corpus, DataSource, Element, Entity, MLClass from arkindex.project.tests import FixtureAPITestCase +from arkindex_common.enums import EntityType, MetaType +from arkindex_common.ml_tool import MLToolType class TestRetrieveElements(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_search.py b/arkindex/documents/tests/test_search.py index 26839b442a..dd001a2ef4 100644 --- a/arkindex/documents/tests/test_search.py +++ b/arkindex/documents/tests/test_search.py @@ -1,13 +1,15 @@ +import uuid from unittest.mock import MagicMock + from django.contrib.auth.models import AnonymousUser from django.urls import reverse -from rest_framework import status from elasticsearch_dsl.connections import connections -from arkindex_common.enums import EntityType, MetaType -from arkindex.project.tests import FixtureAPITestCase +from rest_framework import status + +from arkindex.documents.models import Corpus, DataSource, Element, MLToolType, Transcription from arkindex.project.elastic import ESTranscription -from arkindex.documents.models import Transcription, Element, Corpus, DataSource, MLToolType -import uuid +from arkindex.project.tests import FixtureAPITestCase +from arkindex_common.enums import EntityType, MetaType class TestSearchAPI(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_search_api.py b/arkindex/documents/tests/test_search_api.py index 6345304c03..a0dab458ea 100644 --- a/arkindex/documents/tests/test_search_api.py +++ b/arkindex/documents/tests/test_search_api.py @@ -1,10 +1,12 @@ from unittest.mock import patch -from django.urls import reverse + from django.contrib.auth.models import AnonymousUser from django.test import override_settings +from django.urls import reverse from rest_framework import status -from arkindex.project.tests import FixtureAPITestCase + from arkindex.documents.models import Corpus, Element +from arkindex.project.tests import FixtureAPITestCase class TestSearchApi(FixtureAPITestCase): diff --git a/arkindex/documents/tests/test_selection_api.py b/arkindex/documents/tests/test_selection_api.py index a3c18a0fbe..eadc93f9c2 100644 --- a/arkindex/documents/tests/test_selection_api.py +++ b/arkindex/documents/tests/test_selection_api.py @@ -1,6 +1,7 @@ from django.test import override_settings from django.urls import reverse from rest_framework import status + from arkindex.documents.models import Corpus, Element from arkindex.project.tests import FixtureAPITestCase from arkindex.users.models import User diff --git a/arkindex/documents/tests/test_transcriptions.py b/arkindex/documents/tests/test_transcriptions.py index e1d08bc7e2..45ab00b5b4 100644 --- a/arkindex/documents/tests/test_transcriptions.py +++ b/arkindex/documents/tests/test_transcriptions.py @@ -1,11 +1,12 @@ from django.urls import reverse from rest_framework import status + +from arkindex.dataimport.models import WorkerVersion +from arkindex.documents.models import Corpus, DataSource from arkindex.project.tests import FixtureAPITestCase +from arkindex.users.models import User from arkindex_common.enums import TranscriptionType from arkindex_common.ml_tool import MLToolType -from arkindex.documents.models import Corpus, DataSource -from arkindex.dataimport.models import WorkerVersion -from arkindex.users.models import User class TestTranscriptions(FixtureAPITestCase): diff --git a/arkindex/images/admin.py b/arkindex/images/admin.py index 69d491dfe6..213d09ed4a 100644 --- a/arkindex/images/admin.py +++ b/arkindex/images/admin.py @@ -1,9 +1,10 @@ from django.contrib import admin from django.urls import path -from arkindex.images.models import ImageServer, Image -from arkindex.images.views import ImageServerMergeView, ImageServerSplitView from enumfields.admin import EnumFieldListFilter +from arkindex.images.models import Image, ImageServer +from arkindex.images.views import ImageServerMergeView, ImageServerSplitView + class ImageServerAdmin(admin.ModelAdmin): list_display = ('display_name', 'url', 'validated') diff --git a/arkindex/images/api.py b/arkindex/images/api.py index 89ee53ab19..38ccf38a65 100644 --- a/arkindex/images/api.py +++ b/arkindex/images/api.py @@ -1,15 +1,20 @@ from django.db.models import Q from rest_framework import status -from rest_framework.generics import ListAPIView, CreateAPIView, RetrieveUpdateAPIView +from rest_framework.generics import CreateAPIView, ListAPIView, RetrieveUpdateAPIView from rest_framework.response import Response from rest_framework.serializers import ValidationError -from arkindex.project.aws import S3FileStatus -from arkindex.project.permissions import IsVerified + +from arkindex.documents.models import Corpus, Element from arkindex.documents.serializers.elements import ElementSlimSerializer -from arkindex.documents.models import Element, Corpus from arkindex.images.models import Image -from arkindex.images.serializers import \ - ImageSerializer, IIIFImageSerializer, ImageInformationSerializer, ImageUploadSerializer +from arkindex.images.serializers import ( + IIIFImageSerializer, + ImageInformationSerializer, + ImageSerializer, + ImageUploadSerializer, +) +from arkindex.project.aws import S3FileStatus +from arkindex.project.permissions import IsVerified from arkindex.users.models import Scope diff --git a/arkindex/images/management/commands/check_images.py b/arkindex/images/management/commands/check_images.py index f0f13aa459..a2be73a1cf 100644 --- a/arkindex/images/management/commands/check_images.py +++ b/arkindex/images/management/commands/check_images.py @@ -1,9 +1,11 @@ -from django.core.management.base import BaseCommand, CommandError +import logging + from django.conf import settings +from django.core.management.base import BaseCommand, CommandError + +from arkindex.images.models import Image, ImageServer from arkindex.project.argparse import CorpusArgument, ElementArgument from arkindex.project.aws import S3FileStatus -from arkindex.images.models import ImageServer, Image -import logging logging.basicConfig( level=logging.INFO, diff --git a/arkindex/images/management/commands/deduplicate_zones.py b/arkindex/images/management/commands/deduplicate_zones.py index ede6c2aa16..b260534834 100644 --- a/arkindex/images/management/commands/deduplicate_zones.py +++ b/arkindex/images/management/commands/deduplicate_zones.py @@ -1,5 +1,6 @@ from django.core.management.base import BaseCommand from django.db import connections, transaction + from arkindex_common.tools import Timer diff --git a/arkindex/images/migrations/0001_initial.py b/arkindex/images/migrations/0001_initial.py index 26965253d5..383cecc5ad 100644 --- a/arkindex/images/migrations/0001_initial.py +++ b/arkindex/images/migrations/0001_initial.py @@ -1,11 +1,13 @@ # Generated by Django 2.2.9 on 2020-01-17 15:39 -import arkindex.project.aws -import arkindex.project.fields -from django.db import migrations, models +import uuid + import django.db.models.deletion import enumfields.fields -import uuid +from django.db import migrations, models + +import arkindex.project.aws +import arkindex.project.fields POLYGON_HASH_FORWARD_SQL = """ ALTER TABLE images_zone diff --git a/arkindex/images/migrations/0002_checked_dimensions.py b/arkindex/images/migrations/0002_checked_dimensions.py index 2c5633b075..cca62ee91a 100644 --- a/arkindex/images/migrations/0002_checked_dimensions.py +++ b/arkindex/images/migrations/0002_checked_dimensions.py @@ -1,8 +1,9 @@ # Generated by Django 2.2.10 on 2020-05-13 15:17 -import arkindex.project.aws from django.db import migrations, models +import arkindex.project.aws + class Migration(migrations.Migration): diff --git a/arkindex/images/migrations/0004_polygon_postgis.py b/arkindex/images/migrations/0004_polygon_postgis.py index e2f38c687c..611952623c 100644 --- a/arkindex/images/migrations/0004_polygon_postgis.py +++ b/arkindex/images/migrations/0004_polygon_postgis.py @@ -1,10 +1,11 @@ # Generated by Django 2.2.13 on 2020-07-29 12:24 -from django.db import migrations from django.contrib.postgres.operations import CreateExtension +from django.db import migrations + +from arkindex.images.models import POLYGON_MAX_MEM_SIZE from arkindex.project.fields import LinearRingField from arkindex.project.gis import SimplifyPreserveTopology -from arkindex.images.models import POLYGON_MAX_MEM_SIZE POLYGON_HASH_FORWARD_SQL = """ DROP INDEX IF EXISTS zone_unique_image_polygon; diff --git a/arkindex/images/migrations/0005_polygon_index.py b/arkindex/images/migrations/0005_polygon_index.py index 9cd2b46f70..d1bbd3bd70 100644 --- a/arkindex/images/migrations/0005_polygon_index.py +++ b/arkindex/images/migrations/0005_polygon_index.py @@ -1,7 +1,8 @@ # Generated by Django 2.2.13 on 2020-07-30 13:54 -from django.db import migrations, models from django.contrib.gis.db.models.functions import SnapToGrid +from django.db import migrations, models + from arkindex.images.models import POLYGON_MAX_MEM_SIZE diff --git a/arkindex/images/models.py b/arkindex/images/models.py index 84661d312b..b66f923aac 100644 --- a/arkindex/images/models.py +++ b/arkindex/images/models.py @@ -1,22 +1,24 @@ +import logging +import os +import urllib.parse +from json import JSONDecodeError + +import requests from django.conf import settings -from django.core.validators import URLValidator -from django.core.exceptions import ValidationError from django.contrib.gis.db.models.functions import Scale, SnapToGrid +from django.core.exceptions import ValidationError +from django.core.validators import URLValidator from django.db import models from django.db.models.functions import Concat, Substr from django.utils.functional import cached_property from django.utils.text import slugify from enumfields import EnumField -from json import JSONDecodeError + from arkindex.images.managers import ImageServerManager from arkindex.project.aws import S3FileMixin, S3FileStatus -from arkindex.project.fields import StripSlashURLField, LStripTextField, MD5HashField, LinearRingField +from arkindex.project.fields import LinearRingField, LStripTextField, MD5HashField, StripSlashURLField from arkindex.project.models import IndexableModel from arkindex.project.tools import bounding_box -import logging -import os -import requests -import urllib.parse # Maximum allowed memory size of a polygon. # This restriction is caused by B-Tree indexes: they are stored in "database pages" of 8192KB each. diff --git a/arkindex/images/serializers.py b/arkindex/images/serializers.py index 60cf04785a..326e86e6e3 100644 --- a/arkindex/images/serializers.py +++ b/arkindex/images/serializers.py @@ -1,12 +1,14 @@ -from arkindex.project.serializer_fields import LinearRingField, EnumField, IIIFPathField -from arkindex.images.models import ImageServer, Image, Zone -from arkindex.project.aws import S3FileStatus -from requests.exceptions import RequestException -from rest_framework.exceptions import ValidationError, APIException -from rest_framework import serializers import re import uuid +from requests.exceptions import RequestException +from rest_framework import serializers +from rest_framework.exceptions import APIException, ValidationError + +from arkindex.images.models import Image, ImageServer, Zone +from arkindex.project.aws import S3FileStatus +from arkindex.project.serializer_fields import EnumField, IIIFPathField, LinearRingField + class ImageServerSerializer(serializers.ModelSerializer): class Meta: diff --git a/arkindex/images/tests/test_admin.py b/arkindex/images/tests/test_admin.py index f33313eb31..c522cefa11 100644 --- a/arkindex/images/tests/test_admin.py +++ b/arkindex/images/tests/test_admin.py @@ -1,7 +1,8 @@ from django.urls import reverse from rest_framework import status -from arkindex.project.tests import FixtureTestCase + from arkindex.images.models import ImageServer +from arkindex.project.tests import FixtureTestCase class TestCustomAdminViews(FixtureTestCase): diff --git a/arkindex/images/tests/test_check_images.py b/arkindex/images/tests/test_check_images.py index 84c2f33ae5..f6a4a20d40 100644 --- a/arkindex/images/tests/test_check_images.py +++ b/arkindex/images/tests/test_check_images.py @@ -1,8 +1,10 @@ -from arkindex.project.tests import FixtureTestCase -from arkindex.project.aws import S3FileStatus +from unittest.mock import patch + from django.core.management import call_command from django.core.management.base import CommandError -from unittest.mock import patch + +from arkindex.project.aws import S3FileStatus +from arkindex.project.tests import FixtureTestCase class TestCheckImages(FixtureTestCase): diff --git a/arkindex/images/tests/test_image.py b/arkindex/images/tests/test_image.py index 669997c6e8..2f6b8b7fb1 100644 --- a/arkindex/images/tests/test_image.py +++ b/arkindex/images/tests/test_image.py @@ -1,9 +1,11 @@ -from unittest.mock import patch, call, MagicMock -from django.test import override_settings +from unittest.mock import MagicMock, call, patch + from botocore.exceptions import ClientError -from arkindex.project.tests import FixtureTestCase -from arkindex.project.aws import S3FileStatus +from django.test import override_settings + from arkindex.images.models import ImageServer +from arkindex.project.aws import S3FileStatus +from arkindex.project.tests import FixtureTestCase @override_settings(LOCAL_IMAGESERVER_ID=1, AWS_REGION=None) diff --git a/arkindex/images/tests/test_image_api.py b/arkindex/images/tests/test_image_api.py index 2cace6d16a..e3321c0c0a 100644 --- a/arkindex/images/tests/test_image_api.py +++ b/arkindex/images/tests/test_image_api.py @@ -1,13 +1,15 @@ +import random +from unittest.mock import call, patch + +import responses +from django.test import override_settings +from django.urls import reverse +from rest_framework import status + +from arkindex.images.models import Image, ImageServer from arkindex.project.aws import S3FileStatus from arkindex.project.tests import FixtureAPITestCase -from arkindex.images.models import Image, ImageServer from arkindex.users.models import Scope -from rest_framework import status -from django.test import override_settings -from django.urls import reverse -from unittest.mock import patch, call -import random -import responses class ImageMethods: diff --git a/arkindex/images/tests/test_image_elements.py b/arkindex/images/tests/test_image_elements.py index 1aeb63f827..94de6dbb1a 100644 --- a/arkindex/images/tests/test_image_elements.py +++ b/arkindex/images/tests/test_image_elements.py @@ -1,5 +1,6 @@ from django.urls import reverse from rest_framework import status + from arkindex.project.tests import FixtureTestCase diff --git a/arkindex/images/tests/test_imageserver.py b/arkindex/images/tests/test_imageserver.py index f2f1addd9a..83aa6afa1f 100644 --- a/arkindex/images/tests/test_imageserver.py +++ b/arkindex/images/tests/test_imageserver.py @@ -1,7 +1,8 @@ -from django.test import TestCase from django.db import IntegrityError -from arkindex.images.models import ImageServer +from django.test import TestCase + from arkindex.images.managers import ImageServerManager +from arkindex.images.models import ImageServer class TestImageServer(TestCase): diff --git a/arkindex/images/tests/test_perform_check.py b/arkindex/images/tests/test_perform_check.py index 5a933aaa94..27beab081c 100644 --- a/arkindex/images/tests/test_perform_check.py +++ b/arkindex/images/tests/test_perform_check.py @@ -1,9 +1,11 @@ -from unittest.mock import patch, call +from unittest.mock import call, patch + +import requests +import responses from django.contrib.gis.geos import LinearRing + from arkindex.project.aws import S3FileStatus from arkindex.project.tests import FixtureTestCase -import requests -import responses class TestImagePerformCheck(FixtureTestCase): diff --git a/arkindex/images/tests/test_thumbnail.py b/arkindex/images/tests/test_thumbnail.py index 1ba75758c3..9854734867 100644 --- a/arkindex/images/tests/test_thumbnail.py +++ b/arkindex/images/tests/test_thumbnail.py @@ -1,7 +1,9 @@ -from arkindex.project.tests import FixtureTestCase -from unittest.mock import patch, call +from unittest.mock import call, patch + from django.test import override_settings +from arkindex.project.tests import FixtureTestCase + @override_settings(LOCAL_IMAGESERVER_ID=999, IIIF_DOWNLOAD_TIMEOUT=(13, 37)) class TestThumbnail(FixtureTestCase): diff --git a/arkindex/images/tests/test_zone.py b/arkindex/images/tests/test_zone.py index da3e8a9b42..822cf2a36a 100644 --- a/arkindex/images/tests/test_zone.py +++ b/arkindex/images/tests/test_zone.py @@ -1,4 +1,5 @@ from django.db import IntegrityError + from arkindex.project.tests import FixtureTestCase diff --git a/arkindex/images/views.py b/arkindex/images/views.py index ecbda126d7..6715f4e82c 100644 --- a/arkindex/images/views.py +++ b/arkindex/images/views.py @@ -1,8 +1,9 @@ -from django.views.generic import FormView from django.contrib import messages from django.urls import reverse -from arkindex.images.models import ImageServer +from django.views.generic import FormView + from arkindex.images.forms import ImageServerMergeForm, ImageServerSplitForm +from arkindex.images.models import ImageServer class ImageServerAdminView(FormView): diff --git a/arkindex/project/api_v1.py b/arkindex/project/api_v1.py index 25a7b3cfa9..9ad8c723ee 100644 --- a/arkindex/project/api_v1.py +++ b/arkindex/project/api_v1.py @@ -1,40 +1,101 @@ +from django.conf import settings from django.urls import path -from django.views.generic.base import RedirectView from django.views.decorators.cache import cache_page -from django.conf import settings +from django.views.generic.base import RedirectView from rest_framework.schemas import get_schema_view -from arkindex.project.openapi import SchemaGenerator -from arkindex.documents.api.elements import ( - CorpusElements, ElementsCreate, ElementBulkCreate, ElementRetrieve, ElementTranscriptions, ElementNeighbors, - ElementParent, ElementParents, ElementChildren, ElementMetadata, MetadataEdit, ManageSelection, - CorpusList, CorpusRetrieve, CorpusAllowedMetaData, ElementTypeCreate, ElementTypeUpdate, DeprecatedElementsList +from arkindex.dataimport.api import ( + AvailableRepositoriesList, + CorpusWorkflow, + DataFileCreate, + DataFileList, + DataFileRetrieve, + DataFileUpload, + DataImportDetails, + DataImportElements, + DataImportFromFiles, + DataImportRetry, + DataImportsList, + GitRepositoryImportHook, + ImportTranskribus, + ListProcessElements, + MLToolList, + RepositoryList, + RepositoryRetrieve, + RevisionRetrieve, + StartProcess, + WorkerList, + WorkerRetrieve, + WorkerRunDetails, + WorkerRunList, + WorkerVersionList, + WorkerVersionRetrieve, ) -from arkindex.documents.api.search import ElementSearch, EntitySearch -from arkindex.documents.api.ml import ( - ClassificationCreate, ClassificationValidate, ClassificationReject, ClassificationBulk, ElementTranscriptionsBulk, - TranscriptionCreate, TranscriptionBulk, ElementMLStats, CorpusMLStats, - ManageClassificationsSelection, MLClassList, CorpusMLClassList, TranscriptionEdit +from arkindex.documents.api.admin import ReindexStart +from arkindex.documents.api.elements import ( + CorpusAllowedMetaData, + CorpusElements, + CorpusList, + CorpusRetrieve, + DeprecatedElementsList, + ElementBulkCreate, + ElementChildren, + ElementMetadata, + ElementNeighbors, + ElementParent, + ElementParents, + ElementRetrieve, + ElementsCreate, + ElementTranscriptions, + ElementTypeCreate, + ElementTypeUpdate, + ManageSelection, + MetadataEdit, ) from arkindex.documents.api.entities import ( - CorpusRoles, EntityDetails, EntityCreate, EntityLinkCreate, EntityElements, - TranscriptionEntityCreate, TranscriptionEntities, ElementEntities, ElementLinks + CorpusRoles, + ElementEntities, + ElementLinks, + EntityCreate, + EntityDetails, + EntityElements, + EntityLinkCreate, + TranscriptionEntities, + TranscriptionEntityCreate, ) -from arkindex.documents.api.iiif import FolderManifest, ElementAnnotationList, TranscriptionSearchAnnotationList -from arkindex.documents.api.admin import ReindexStart -from arkindex.dataimport.api import ( - DataImportsList, DataImportDetails, DataImportRetry, StartProcess, DataImportElements, - DataFileList, DataFileRetrieve, DataFileUpload, DataImportFromFiles, - RepositoryList, RepositoryRetrieve, DataFileCreate, - GitRepositoryImportHook, AvailableRepositoriesList, RevisionRetrieve, - MLToolList, CorpusWorkflow, WorkerList, WorkerVersionList, WorkerVersionRetrieve, - WorkerRunList, WorkerRunDetails, ImportTranskribus, WorkerRetrieve, ListProcessElements +from arkindex.documents.api.iiif import ElementAnnotationList, FolderManifest, TranscriptionSearchAnnotationList +from arkindex.documents.api.ml import ( + ClassificationBulk, + ClassificationCreate, + ClassificationReject, + ClassificationValidate, + CorpusMLClassList, + CorpusMLStats, + ElementMLStats, + ElementTranscriptionsBulk, + ManageClassificationsSelection, + MLClassList, + TranscriptionBulk, + TranscriptionCreate, + TranscriptionEdit, ) -from arkindex.images.api import ImageCreate, IIIFURLCreate, IIIFInformationCreate, ImageRetrieve, ImageElements +from arkindex.documents.api.search import ElementSearch, EntitySearch +from arkindex.images.api import IIIFInformationCreate, IIIFURLCreate, ImageCreate, ImageElements, ImageRetrieve +from arkindex.project.openapi import SchemaGenerator from arkindex.users.api import ( - ProvidersList, CredentialsList, CredentialsRetrieve, OAuthSignIn, OAuthRetry, OAuthCallback, - UserRetrieve, UserCreate, UserEmailLogin, UserEmailVerification, PasswordReset, PasswordResetConfirm, - UpdateUserTranskribus + CredentialsList, + CredentialsRetrieve, + OAuthCallback, + OAuthRetry, + OAuthSignIn, + PasswordReset, + PasswordResetConfirm, + ProvidersList, + UpdateUserTranskribus, + UserCreate, + UserEmailLogin, + UserEmailVerification, + UserRetrieve, ) # Cache the OpenAPI schema view for a day diff --git a/arkindex/project/argparse.py b/arkindex/project/argparse.py index 8c096cb322..a05f27f255 100644 --- a/arkindex/project/argparse.py +++ b/arkindex/project/argparse.py @@ -1,8 +1,9 @@ -from django.db.models import Model from django.core.exceptions import ValidationError from django.core.management.base import CommandError -from arkindex.documents.models import Corpus, Element +from django.db.models import Model + from arkindex.dataimport.models import DataImport, Repository +from arkindex.documents.models import Corpus, Element class ModelArgument(object): diff --git a/arkindex/project/asgi.py b/arkindex/project/asgi.py index 1935930d65..a188f2de85 100644 --- a/arkindex/project/asgi.py +++ b/arkindex/project/asgi.py @@ -4,6 +4,7 @@ defined in the ASGI_APPLICATION setting. """ import os + import django from channels.routing import get_default_application from sentry_sdk.integrations.asgi import SentryAsgiMiddleware diff --git a/arkindex/project/aws.py b/arkindex/project/aws.py index 2e293084d0..245d8fb18d 100644 --- a/arkindex/project/aws.py +++ b/arkindex/project/aws.py @@ -1,12 +1,13 @@ -from django.conf import settings +import logging +from io import BytesIO + +import boto3.session from botocore.config import Config from botocore.exceptions import BotoCoreError, ClientError +from django.conf import settings from django.utils.functional import cached_property from enumfields import Enum from tenacity import retry, retry_if_exception, stop_after_delay -from io import BytesIO -import boto3.session -import logging logger = logging.getLogger(__name__) diff --git a/arkindex/project/checks.py b/arkindex/project/checks.py index 805c1eb05b..c45297d03f 100644 --- a/arkindex/project/checks.py +++ b/arkindex/project/checks.py @@ -1,8 +1,10 @@ -from django.core.checks import register, Warning, Error -from ponos.recipe import parse_recipe import os.path import subprocess + import yaml +from django.core.checks import Error, Warning, register + +from ponos.recipe import parse_recipe def only_runserver(func): diff --git a/arkindex/project/config.py b/arkindex/project/config.py index 741710eaad..ef5c648631 100644 --- a/arkindex/project/config.py +++ b/arkindex/project/config.py @@ -1,7 +1,8 @@ -from arkindex_common.config_parser import dir_path, ConfigParser, ConfigurationError from enum import Enum from pathlib import Path +from arkindex_common.config_parser import ConfigParser, ConfigurationError, dir_path + class CacheType(Enum): Redis = 'redis' diff --git a/arkindex/project/default_corpus.py b/arkindex/project/default_corpus.py index 0f47677f99..fa0cc889d2 100644 --- a/arkindex/project/default_corpus.py +++ b/arkindex/project/default_corpus.py @@ -1,7 +1,6 @@ # Default corpus attributes from arkindex_common.enums import TranscriptionType - # If you edit default types, please update 'DEFAULT_CORPUS_ATTRS' config value in the frontend (at js/config.js) DEFAULT_CORPUS_TYPES = [ { diff --git a/arkindex/project/elastic.py b/arkindex/project/elastic.py index b92db343c8..f5bb37c2f3 100644 --- a/arkindex/project/elastic.py +++ b/arkindex/project/elastic.py @@ -1,10 +1,12 @@ -from arkindex_common.enums import MetaType from collections.abc import Sequence from itertools import chain + from django.conf import settings -from elasticsearch_dsl import Document, InnerDoc, Mapping, Text, Float, Keyword, Nested, Date, DateRange, Search +from elasticsearch_dsl import Date, DateRange, Document, Float, InnerDoc, Keyword, Mapping, Nested, Search, Text from elasticsearch_dsl.connections import connections +from arkindex_common.enums import MetaType + connections.create_connection(hosts=settings.ELASTIC_SEARCH_HOSTS) diff --git a/arkindex/project/fields.py b/arkindex/project/fields.py index e4065e4ad5..1303a10dea 100644 --- a/arkindex/project/fields.py +++ b/arkindex/project/fields.py @@ -1,11 +1,13 @@ -from django.contrib.postgres import fields -from django.contrib.gis.geos import GEOSGeometry, LinearRing +import re + from django.contrib.gis.db.models import LineStringField from django.contrib.gis.db.models.proxy import SpatialProxy -from django.db.models import Transform, URLField, TextField, CharField, Func +from django.contrib.gis.geos import GEOSGeometry, LinearRing +from django.contrib.postgres import fields from django.core.validators import RegexValidator +from django.db.models import CharField, Func, TextField, Transform, URLField + from arkindex.project.gis import ensure_linear_ring -import re class MD5HashField(CharField): diff --git a/arkindex/project/filters.py b/arkindex/project/filters.py index 3a3f7245f1..c3c8e69f96 100644 --- a/arkindex/project/filters.py +++ b/arkindex/project/filters.py @@ -1,6 +1,6 @@ from django.conf import settings -from rest_framework.filters import SearchFilter from rest_framework.exceptions import ValidationError +from rest_framework.filters import SearchFilter class SafeSearchFilter(SearchFilter): diff --git a/arkindex/project/gis.py b/arkindex/project/gis.py index 5e5de4e073..ce8f872f60 100644 --- a/arkindex/project/gis.py +++ b/arkindex/project/gis.py @@ -1,10 +1,12 @@ from collections.abc import Iterable from itertools import groupby -from django.contrib.gis.geos import GEOSGeometry, LineString, Polygon + from django.contrib.gis.db.models.fields import BaseSpatialField, LineStringField -from django.contrib.gis.db.models.functions import GeoFuncMixin, GeomOutputGeoFunc, MemSize as MemSizeFunc +from django.contrib.gis.db.models.functions import GeoFuncMixin, GeomOutputGeoFunc +from django.contrib.gis.db.models.functions import MemSize as MemSizeFunc from django.contrib.gis.db.models.lookups import EqualsLookup -from django.db.models import Transform, BooleanField +from django.contrib.gis.geos import GEOSGeometry, LineString, Polygon +from django.db.models import BooleanField, Transform def ensure_linear_ring(value): diff --git a/arkindex/project/mixins.py b/arkindex/project/mixins.py index 94c5d0b982..9cdd5994f4 100644 --- a/arkindex/project/mixins.py +++ b/arkindex/project/mixins.py @@ -1,9 +1,10 @@ -from django.shortcuts import get_object_or_404 from django.conf import settings from django.core.exceptions import PermissionDenied +from django.shortcuts import get_object_or_404 from django.views.decorators.cache import cache_page from rest_framework.exceptions import APIException, ValidationError from rest_framework.serializers import Serializer + from arkindex.documents.models import Corpus, Right from arkindex.documents.serializers.search import SearchQuerySerializer from arkindex.project.elastic import ESQuerySet diff --git a/arkindex/project/models.py b/arkindex/project/models.py index f02672ba3f..4d3709b24b 100644 --- a/arkindex/project/models.py +++ b/arkindex/project/models.py @@ -1,6 +1,7 @@ -from django.db import models import uuid +from django.db import models + class IndexableModel(models.Model): id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False) diff --git a/arkindex/project/openapi/__init__.py b/arkindex/project/openapi/__init__.py index 389596710e..594bca8ae0 100644 --- a/arkindex/project/openapi/__init__.py +++ b/arkindex/project/openapi/__init__.py @@ -1,2 +1,2 @@ -from arkindex.project.openapi.schemas import AutoSchema, SearchAutoSchema # noqa: F401 from arkindex.project.openapi.generators import SchemaGenerator # noqa: F401 +from arkindex.project.openapi.schemas import AutoSchema, SearchAutoSchema # noqa: F401 diff --git a/arkindex/project/openapi/generators.py b/arkindex/project/openapi/generators.py index fa4f1ed7be..1b04022807 100644 --- a/arkindex/project/openapi/generators.py +++ b/arkindex/project/openapi/generators.py @@ -1,7 +1,8 @@ from pathlib import Path -from rest_framework.schemas.openapi import SchemaGenerator as BaseSchemaGenerator + import yaml from django.conf import settings +from rest_framework.schemas.openapi import SchemaGenerator as BaseSchemaGenerator PATCH_FILE = Path(__file__).absolute().parent / 'patch.yml' diff --git a/arkindex/project/openapi/schemas.py b/arkindex/project/openapi/schemas.py index 0c5b04720e..ae8c9c3e0c 100644 --- a/arkindex/project/openapi/schemas.py +++ b/arkindex/project/openapi/schemas.py @@ -1,6 +1,7 @@ +import warnings from enum import Enum + from rest_framework.schemas.openapi import AutoSchema as BaseAutoSchema -import warnings class AutoSchema(BaseAutoSchema): diff --git a/arkindex/project/pagination.py b/arkindex/project/pagination.py index 14929b2bae..68c696a598 100644 --- a/arkindex/project/pagination.py +++ b/arkindex/project/pagination.py @@ -1,4 +1,5 @@ from collections import OrderedDict + from rest_framework import pagination from rest_framework.response import Response diff --git a/arkindex/project/routing.py b/arkindex/project/routing.py index 4fd1c1d76b..841bcbba29 100644 --- a/arkindex/project/routing.py +++ b/arkindex/project/routing.py @@ -1,8 +1,9 @@ from channels.auth import AuthMiddlewareStack -from channels.routing import ProtocolTypeRouter, URLRouter, ChannelNameRouter +from channels.routing import ChannelNameRouter, ProtocolTypeRouter, URLRouter from channels.security.websocket import AllowedHostsOriginValidator -from arkindex.project.triggers import REINDEX_CHANNEL, ML_RESULTS_CHANNEL, CORPUS_CHANNEL -from arkindex.documents.consumers import ReindexConsumer, MLResultsConsumer, CorpusConsumer + +from arkindex.documents.consumers import CorpusConsumer, MLResultsConsumer, ReindexConsumer +from arkindex.project.triggers import CORPUS_CHANNEL, ML_RESULTS_CHANNEL, REINDEX_CHANNEL application = ProtocolTypeRouter({ 'websocket': AllowedHostsOriginValidator( diff --git a/arkindex/project/serializer_fields.py b/arkindex/project/serializer_fields.py index 4199a71d5a..c2409d620c 100644 --- a/arkindex/project/serializer_fields.py +++ b/arkindex/project/serializer_fields.py @@ -1,8 +1,10 @@ -from django.contrib.gis.geos import Point -from rest_framework import serializers from enum import Enum -from uuid import UUID from urllib.parse import quote, unquote +from uuid import UUID + +from django.contrib.gis.geos import Point +from rest_framework import serializers + from arkindex.project.gis import ensure_linear_ring diff --git a/arkindex/project/settings.py b/arkindex/project/settings.py index 70d60dd8a2..17898cf5df 100644 --- a/arkindex/project/settings.py +++ b/arkindex/project/settings.py @@ -13,10 +13,12 @@ https://docs.djangoproject.com/en/1.11/ref/settings/ import os import sys import warnings -from corsheaders.defaults import default_headers from datetime import timedelta from pathlib import Path -from arkindex.project.config import get_settings_parser, CacheType + +from corsheaders.defaults import default_headers + +from arkindex.project.config import CacheType, get_settings_parser # Build paths inside the project like this: BASE_DIR / ... _base_dir = os.environ.get('BASE_DIR') diff --git a/arkindex/project/tests/__init__.py b/arkindex/project/tests/__init__.py index 26beee4bfd..4f676e1da8 100644 --- a/arkindex/project/tests/__init__.py +++ b/arkindex/project/tests/__init__.py @@ -1,6 +1,7 @@ from django.test import TestCase from django.utils.functional import cached_property from rest_framework.test import APITestCase + from arkindex.documents.models import Corpus from arkindex.images.models import ImageServer from arkindex.users.models import User diff --git a/arkindex/project/tests/openapi/test_generators.py b/arkindex/project/tests/openapi/test_generators.py index 873220084f..46b40f9be4 100644 --- a/arkindex/project/tests/openapi/test_generators.py +++ b/arkindex/project/tests/openapi/test_generators.py @@ -1,8 +1,10 @@ from unittest import TestCase from unittest.mock import patch -from arkindex.project.openapi import SchemaGenerator + from django.test import override_settings +from arkindex.project.openapi import SchemaGenerator + class TestSchemaGenerator(TestCase): diff --git a/arkindex/project/tests/openapi/test_schemas.py b/arkindex/project/tests/openapi/test_schemas.py index bd682401b2..dc34385c80 100644 --- a/arkindex/project/tests/openapi/test_schemas.py +++ b/arkindex/project/tests/openapi/test_schemas.py @@ -1,13 +1,15 @@ +import warnings from unittest import TestCase + from django.test import RequestFactory from rest_framework import serializers from rest_framework.request import Request from rest_framework.views import APIView -from arkindex.project.serializer_fields import EnumField -from arkindex.project.openapi import AutoSchema, SchemaGenerator + from arkindex.project.mixins import DeprecatedAutoSchema +from arkindex.project.openapi import AutoSchema, SchemaGenerator +from arkindex.project.serializer_fields import EnumField from arkindex_common.enums import DataImportMode -import warnings # Helper methods taken straight from the DRF test suite diff --git a/arkindex/project/tests/openapi/test_view.py b/arkindex/project/tests/openapi/test_view.py index 8060fd6263..cc26bf2ba7 100644 --- a/arkindex/project/tests/openapi/test_view.py +++ b/arkindex/project/tests/openapi/test_view.py @@ -1,9 +1,11 @@ -from arkindex.project.tests import FixtureAPITestCase from io import StringIO + from django.core.management import call_command from django.urls import reverse from rest_framework import status +from arkindex.project.tests import FixtureAPITestCase + class TestSchemaView(FixtureAPITestCase): diff --git a/arkindex/project/tests/test_argparse.py b/arkindex/project/tests/test_argparse.py index 56ec4bc71e..20fefbec77 100644 --- a/arkindex/project/tests/test_argparse.py +++ b/arkindex/project/tests/test_argparse.py @@ -1,7 +1,8 @@ from django.core.management.base import CommandError -from arkindex.project.tests import FixtureTestCase -from arkindex.project.argparse import CorpusArgument, ElementArgument + from arkindex.documents.models import Element +from arkindex.project.argparse import CorpusArgument, ElementArgument +from arkindex.project.tests import FixtureTestCase class TestArgparseHelpers(FixtureTestCase): diff --git a/arkindex/project/tests/test_aws_mixin.py b/arkindex/project/tests/test_aws_mixin.py index e8c8afa95e..a357fc7be1 100644 --- a/arkindex/project/tests/test_aws_mixin.py +++ b/arkindex/project/tests/test_aws_mixin.py @@ -1,8 +1,10 @@ +import importlib from unittest import TestCase +from unittest.mock import MagicMock, patch + from django.test import override_settings -from unittest.mock import patch, MagicMock + from arkindex.project import aws -import importlib AWS_SETTINGS = { 'AWS_ACCESS_KEY': 'golden_key', diff --git a/arkindex/project/tests/test_checks.py b/arkindex/project/tests/test_checks.py index 78dc4690bc..c1a249e297 100644 --- a/arkindex/project/tests/test_checks.py +++ b/arkindex/project/tests/test_checks.py @@ -1,11 +1,12 @@ -from unittest.mock import patch, call -from django.test import TestCase, override_settings -from django.conf import settings -from django.urls import path -from django.core.checks import Error, Warning +import subprocess from pathlib import Path from subprocess import CalledProcessError -import subprocess +from unittest.mock import call, patch + +from django.conf import settings +from django.core.checks import Error, Warning +from django.test import TestCase, override_settings +from django.urls import path @override_settings(ALL_CHECKS=True) diff --git a/arkindex/project/tests/test_config.py b/arkindex/project/tests/test_config.py index 355f507446..cf5030d106 100644 --- a/arkindex/project/tests/test_config.py +++ b/arkindex/project/tests/test_config.py @@ -1,12 +1,14 @@ -from unittest import TestCase -from unittest.mock import patch from enum import Enum from io import StringIO from pathlib import Path -from arkindex_common.config_parser import ConfigurationError, ConfigParser -from arkindex.project.config import get_settings_parser +from unittest import TestCase +from unittest.mock import patch + import yaml +from arkindex.project.config import get_settings_parser +from arkindex_common.config_parser import ConfigParser, ConfigurationError + SAMPLES = Path(__file__).resolve().parent / 'config_samples' diff --git a/arkindex/project/tests/test_drf_linear_ring_field.py b/arkindex/project/tests/test_drf_linear_ring_field.py index 3a33b5a6b9..91c1dbe650 100644 --- a/arkindex/project/tests/test_drf_linear_ring_field.py +++ b/arkindex/project/tests/test_drf_linear_ring_field.py @@ -1,8 +1,10 @@ from unittest import TestCase -from django.contrib.gis.geos import Point, LinearRing -from arkindex.project.serializer_fields import PointField, LinearRingField + +from django.contrib.gis.geos import LinearRing, Point from rest_framework.serializers import ValidationError +from arkindex.project.serializer_fields import LinearRingField, PointField + class TestLinearRingSerializerField(TestCase): diff --git a/arkindex/project/tests/test_elastic.py b/arkindex/project/tests/test_elastic.py index 9f38e1d749..4407d5866e 100644 --- a/arkindex/project/tests/test_elastic.py +++ b/arkindex/project/tests/test_elastic.py @@ -1,10 +1,11 @@ from unittest.mock import patch + +from arkindex.documents.dates import DateType, InterpretedDate +from arkindex.documents.models import DataSource +from arkindex.project.elastic import ESElement +from arkindex.project.tests import FixtureAPITestCase from arkindex_common.enums import MetaType, TranscriptionType from arkindex_common.ml_tool import MLToolType -from arkindex.project.tests import FixtureAPITestCase -from arkindex.project.elastic import ESElement -from arkindex.documents.models import DataSource -from arkindex.documents.dates import DateType, InterpretedDate class TestESDocuments(FixtureAPITestCase): diff --git a/arkindex/project/tests/test_gis.py b/arkindex/project/tests/test_gis.py index 1d3a1962d5..04f9486aec 100644 --- a/arkindex/project/tests/test_gis.py +++ b/arkindex/project/tests/test_gis.py @@ -1,8 +1,9 @@ +from django.contrib.gis.geos import LinearRing, LineString, Point from psycopg2 import Binary -from django.contrib.gis.geos import Point, LineString, LinearRing -from arkindex.project.tests import FixtureTestCase -from arkindex.project.gis import ensure_linear_ring + from arkindex.images.models import Zone +from arkindex.project.gis import ensure_linear_ring +from arkindex.project.tests import FixtureTestCase class TestGis(FixtureTestCase): diff --git a/arkindex/project/tests/test_ponos_view.py b/arkindex/project/tests/test_ponos_view.py index 7205e7427f..28e66f133f 100644 --- a/arkindex/project/tests/test_ponos_view.py +++ b/arkindex/project/tests/test_ponos_view.py @@ -1,10 +1,12 @@ +import tempfile +from unittest.mock import patch + from django.test import TestCase, override_settings from django.urls import reverse from rest_framework import status + from arkindex.users.models import User from ponos.models import Secret, encrypt -from unittest.mock import patch -import tempfile @override_settings(PONOS_PRIVATE_KEY='staging') diff --git a/arkindex/project/tools.py b/arkindex/project/tools.py index 144153e504..cefd52d86f 100644 --- a/arkindex/project/tools.py +++ b/arkindex/project/tools.py @@ -1,5 +1,7 @@ -from collections.abc import Sized, Iterable +from collections.abc import Iterable, Sized + from django.urls import reverse + from arkindex.documents.models import Element diff --git a/arkindex/project/triggers.py b/arkindex/project/triggers.py index b326db6a7e..2b69e9a921 100644 --- a/arkindex/project/triggers.py +++ b/arkindex/project/triggers.py @@ -3,10 +3,12 @@ Helper methods to trigger tasks in asynchronous workers """ from typing import Union from uuid import UUID + from asgiref.sync import async_to_sync from channels.layers import get_channel_layer from django.conf import settings -from arkindex.documents.models import Element, Corpus, Entity + +from arkindex.documents.models import Corpus, Element, Entity REINDEX_CHANNEL = 'reindex' ML_RESULTS_CHANNEL = 'ml_results' diff --git a/arkindex/project/urls.py b/arkindex/project/urls.py index 323122cfec..3bae5bdfff 100644 --- a/arkindex/project/urls.py +++ b/arkindex/project/urls.py @@ -1,9 +1,10 @@ -from django.urls import path, include, re_path from django.conf import settings from django.contrib import admin from django.contrib.staticfiles.urls import staticfiles_urlpatterns +from django.urls import include, path, re_path + from arkindex.project.api_v1 import api -from arkindex.project.views import FrontendView, CdnHome, OpenAPIDocsView, PonosSecretDetails +from arkindex.project.views import CdnHome, FrontendView, OpenAPIDocsView, PonosSecretDetails # Fallback to the dummy frontend view when CDN_ASSETS_URL is not set frontend_view = FrontendView if settings.CDN_ASSETS_URL is None else CdnHome diff --git a/arkindex/project/views.py b/arkindex/project/views.py index 12bd2baff7..384c5596b5 100644 --- a/arkindex/project/views.py +++ b/arkindex/project/views.py @@ -1,7 +1,8 @@ -from django.views.generic import View, TemplateView from django.conf import settings -from arkindex.project.mixins import CachedViewMixin +from django.views.generic import TemplateView, View from rest_framework import permissions + +from arkindex.project.mixins import CachedViewMixin from ponos.api import SecretDetails diff --git a/arkindex/users/admin.py b/arkindex/users/admin.py index d01704db6f..0b240e09f5 100644 --- a/arkindex/users/admin.py +++ b/arkindex/users/admin.py @@ -1,11 +1,11 @@ from django import forms from django.contrib import admin -from django.contrib.auth.models import Group from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from django.contrib.auth.forms import ReadOnlyPasswordHashField +from django.contrib.auth.models import Group from enumfields.admin import EnumFieldListFilter -from arkindex.users.models import User, CorpusRight, UserScope +from arkindex.users.models import CorpusRight, User, UserScope class UserCreationForm(forms.ModelForm): diff --git a/arkindex/users/api.py b/arkindex/users/api.py index 252b1a6d4e..516d6f4eb7 100644 --- a/arkindex/users/api.py +++ b/arkindex/users/api.py @@ -1,31 +1,44 @@ -from django.urls import reverse -from django.core.mail import send_mail +import logging +import urllib.parse + from django.conf import settings from django.contrib.auth import login, logout -from django.contrib.auth.tokens import default_token_generator -from django.contrib.auth.mixins import UserPassesTestMixin from django.contrib.auth.forms import PasswordResetForm -from django.views.generic import RedirectView +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.template.loader import render_to_string +from django.urls import reverse from django.utils.http import urlsafe_base64_encode +from django.views.generic import RedirectView from rest_framework import status -from rest_framework.views import APIView -from rest_framework.generics import \ - ListAPIView, RetrieveAPIView, RetrieveDestroyAPIView, RetrieveUpdateDestroyAPIView, CreateAPIView, UpdateAPIView +from rest_framework.exceptions import AuthenticationFailed, PermissionDenied, ValidationError +from rest_framework.generics import ( + CreateAPIView, + ListAPIView, + RetrieveAPIView, + RetrieveDestroyAPIView, + RetrieveUpdateDestroyAPIView, + UpdateAPIView, +) from rest_framework.response import Response -from rest_framework.exceptions import AuthenticationFailed, ValidationError, PermissionDenied -from arkindex.project.permissions import IsAuthenticatedOrReadOnly, IsVerified +from rest_framework.views import APIView + from arkindex.documents.models import Corpus -from arkindex.users.providers import oauth_providers, get_provider -from arkindex.users.models import User, OAuthStatus, UserScope, Scope +from arkindex.project.permissions import IsAuthenticatedOrReadOnly, IsVerified +from arkindex.users.models import OAuthStatus, Scope, User, UserScope +from arkindex.users.providers import get_provider, oauth_providers from arkindex.users.serializers import ( - OAuthCredentialsSerializer, OAuthProviderClassSerializer, OAuthRetrySerializer, - UserSerializer, NewUserSerializer, EmailLoginSerializer, - PasswordResetSerializer, PasswordResetConfirmSerializer, - UpdateUserTranskribusSerializer + EmailLoginSerializer, + NewUserSerializer, + OAuthCredentialsSerializer, + OAuthProviderClassSerializer, + OAuthRetrySerializer, + PasswordResetConfirmSerializer, + PasswordResetSerializer, + UpdateUserTranskribusSerializer, + UserSerializer, ) -import urllib.parse -import logging logger = logging.getLogger(__name__) diff --git a/arkindex/users/migrations/0001_initial.py b/arkindex/users/migrations/0001_initial.py index 12b9188053..f376013b9c 100644 --- a/arkindex/users/migrations/0001_initial.py +++ b/arkindex/users/migrations/0001_initial.py @@ -1,11 +1,13 @@ # Generated by Django 2.2.9 on 2020-01-17 15:39 -import arkindex.users.models -from django.conf import settings -from django.db import migrations, models +import uuid + import django.db.models.deletion import enumfields.fields -import uuid +from django.conf import settings +from django.db import migrations, models + +import arkindex.users.models def create_internal_group(apps, schema_editor): diff --git a/arkindex/users/migrations/0002_userscope.py b/arkindex/users/migrations/0002_userscope.py index 09e37d18b2..d5cd0afdfa 100644 --- a/arkindex/users/migrations/0002_userscope.py +++ b/arkindex/users/migrations/0002_userscope.py @@ -1,10 +1,11 @@ # Generated by Django 2.2.10 on 2020-04-30 10:56 -from arkindex.users.models import Scope -from django.conf import settings -from django.db import migrations, models import django.db.models.deletion import enumfields.fields +from django.conf import settings +from django.db import migrations, models + +from arkindex.users.models import Scope def add_scopes(apps, schema_editor): diff --git a/arkindex/users/migrations/0004_internal_bool.py b/arkindex/users/migrations/0004_internal_bool.py index 05d297e041..d9b9495ee7 100644 --- a/arkindex/users/migrations/0004_internal_bool.py +++ b/arkindex/users/migrations/0004_internal_bool.py @@ -1,7 +1,7 @@ # Generated by Django 2.2.13 on 2020-07-21 08:00 -from django.db import migrations, models from django.conf import settings +from django.db import migrations, models def group_to_bool(apps, schema_editor): diff --git a/arkindex/users/models.py b/arkindex/users/models.py index f4b1f7409c..dd01d6d03c 100644 --- a/arkindex/users/models.py +++ b/arkindex/users/models.py @@ -1,9 +1,11 @@ -from django.db import models +import uuid + from django.contrib.auth.models import AbstractBaseUser, Group +from django.db import models +from enumfields import Enum, EnumField + from arkindex.users.managers import UserManager -from arkindex.users.providers import oauth_providers, get_provider -from enumfields import EnumField, Enum -import uuid +from arkindex.users.providers import get_provider, oauth_providers class User(AbstractBaseUser): diff --git a/arkindex/users/providers.py b/arkindex/users/providers.py index 2929f21297..6bfbfc895a 100644 --- a/arkindex/users/providers.py +++ b/arkindex/users/providers.py @@ -1,11 +1,12 @@ +import datetime +import urllib.parse from abc import ABC, abstractmethod + +import requests from django.conf import settings from django.urls import reverse -from rest_framework.exceptions import NotAuthenticated from gitlab import Gitlab, GitlabError -import urllib.parse -import datetime -import requests +from rest_framework.exceptions import NotAuthenticated class OAuthProvider(ABC): diff --git a/arkindex/users/serializers.py b/arkindex/users/serializers.py index 860616e07e..1eaf15817c 100644 --- a/arkindex/users/serializers.py +++ b/arkindex/users/serializers.py @@ -1,13 +1,15 @@ -from rest_framework import serializers +import logging + from django.conf import settings +from django.contrib.auth.password_validation import validate_password +from django.contrib.auth.tokens import default_token_generator from django.core.exceptions import ValidationError from django.utils.http import urlsafe_base64_decode -from django.contrib.auth.tokens import default_token_generator -from django.contrib.auth.password_validation import validate_password -from arkindex.users.models import OAuthCredentials, OAuthStatus, User +from rest_framework import serializers + from arkindex.project.serializer_fields import EnumField +from arkindex.users.models import OAuthCredentials, OAuthStatus, User from transkribus import TranskribusAPI -import logging logging.basicConfig( level=logging.INFO, diff --git a/arkindex/users/tests/test_acl.py b/arkindex/users/tests/test_acl.py index 11a0a3de0f..3ca5d24736 100644 --- a/arkindex/users/tests/test_acl.py +++ b/arkindex/users/tests/test_acl.py @@ -1,5 +1,6 @@ -from django.test import TestCase from django.contrib.auth.models import AnonymousUser +from django.test import TestCase + from arkindex.documents.models import Corpus from arkindex.users.models import User diff --git a/arkindex/users/tests/test_credentials.py b/arkindex/users/tests/test_credentials.py index 320a72b994..ea59b03f9d 100644 --- a/arkindex/users/tests/test_credentials.py +++ b/arkindex/users/tests/test_credentials.py @@ -1,5 +1,6 @@ from django.urls import reverse from rest_framework import status + from arkindex.project.tests import FixtureTestCase from arkindex.users.models import OAuthStatus diff --git a/arkindex/users/tests/test_gitlab_oauth.py b/arkindex/users/tests/test_gitlab_oauth.py index 04805eb8be..5a85cfd4b7 100644 --- a/arkindex/users/tests/test_gitlab_oauth.py +++ b/arkindex/users/tests/test_gitlab_oauth.py @@ -1,10 +1,12 @@ +import urllib.parse +from unittest.mock import MagicMock, patch + +from django.http.request import HttpRequest +from django.urls import reverse + from arkindex.project.tests import FixtureTestCase from arkindex.users.models import OAuthStatus from arkindex.users.providers import GitLabOAuthProvider -from django.http.request import HttpRequest -from django.urls import reverse -from unittest.mock import patch, MagicMock -import urllib.parse class TestGitLabOAuthProvider(FixtureTestCase): diff --git a/arkindex/users/tests/test_password_reset.py b/arkindex/users/tests/test_password_reset.py index a5e1ad9ac3..10d4a9ae76 100644 --- a/arkindex/users/tests/test_password_reset.py +++ b/arkindex/users/tests/test_password_reset.py @@ -1,8 +1,10 @@ +from unittest.mock import call, patch + from django.core import mail from django.urls import reverse from django.utils.http import urlsafe_base64_encode from rest_framework import status -from unittest.mock import patch, call + from arkindex.project.tests import FixtureAPITestCase diff --git a/arkindex/users/tests/test_providers.py b/arkindex/users/tests/test_providers.py index 82d47d48a7..7aad0e5406 100644 --- a/arkindex/users/tests/test_providers.py +++ b/arkindex/users/tests/test_providers.py @@ -1,9 +1,11 @@ +from unittest.mock import MagicMock + from django.urls import reverse + from arkindex.project.tests import FixtureTestCase from arkindex.users import providers from arkindex.users.models import OAuthStatus from arkindex.users.providers import get_provider -from unittest.mock import MagicMock class TestProviders(FixtureTestCase): diff --git a/arkindex/users/tests/test_registration.py b/arkindex/users/tests/test_registration.py index e689aeca77..cb804ec43b 100644 --- a/arkindex/users/tests/test_registration.py +++ b/arkindex/users/tests/test_registration.py @@ -1,14 +1,16 @@ -from rest_framework import status -from django.urls import reverse -from django.core import mail +import urllib.parse + from django.contrib import auth from django.contrib.auth.tokens import default_token_generator +from django.core import mail from django.test import override_settings -from arkindex.project.tests import FixtureAPITestCase -from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES +from django.urls import reverse +from rest_framework import status + from arkindex.documents.models import Corpus -from arkindex.users.models import User, Scope -import urllib.parse +from arkindex.project.default_corpus import DEFAULT_CORPUS_TYPES +from arkindex.project.tests import FixtureAPITestCase +from arkindex.users.models import Scope, User class TestRegistration(FixtureAPITestCase): diff --git a/arkindex/users/tests/test_update_transkribus_email.py b/arkindex/users/tests/test_update_transkribus_email.py index be59af9771..8bb9d2c618 100644 --- a/arkindex/users/tests/test_update_transkribus_email.py +++ b/arkindex/users/tests/test_update_transkribus_email.py @@ -1,7 +1,9 @@ from unittest.mock import patch -from rest_framework import status -from django.urls import reverse + from django.test import override_settings +from django.urls import reverse +from rest_framework import status + from arkindex.project.tests import FixtureAPITestCase diff --git a/setup.py b/setup.py index c1700ef178..fbb3eb848f 100755 --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import os.path -from setuptools import setup, find_packages + +from setuptools import find_packages, setup def _parse_requirement(line): -- GitLab