diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py index a82f342e0ef4f423112fb06f5e327b1b0ba387f4..65ab011c3063e970ea2b2a22d1040466478676a4 100644 --- a/arkindex/dataimport/api.py +++ b/arkindex/dataimport/api.py @@ -22,7 +22,7 @@ from arkindex.dataimport.models import \ from arkindex.dataimport.serializers.ml_tool import MLToolSerializer, MLToolTaskSerializer from arkindex.dataimport.serializers.files import DataFileSerializer, DataFileCreateSerializer from arkindex.dataimport.serializers.git import \ - RepositorySerializer, RepositoryStartImportSerializer, ExternalRepositorySerializer, RevisionSerializer + RepositorySerializer, ExternalRepositorySerializer, RevisionSerializer from arkindex.dataimport.serializers.imports import ( DataImportLightSerializer, DataImportSerializer, DataImportFromFilesSerializer, ElementsWorkflowSerializer, WorkerRunLightSerializer, WorkerRunSerializer, @@ -511,36 +511,6 @@ class RepositoryRetrieve(CorpusACLMixin, RetrieveDestroyAPIView): return super().perform_destroy(instance) -class RepositoryStartImport(RetrieveAPIView): - """ - Start a data import on the latest revision on a repository. - """ - permission_classes = (IsVerified, ) - serializer_class = RepositoryStartImportSerializer - openapi_overrides = { - 'operationId': 'StartRepositoryImport', - 'tags': ['repos'], - } - - def get_queryset(self): - return Repository.objects.filter( - corpus__in=Corpus.objects.writable(self.request.user), - ) - - def retrieve(self, request, *args, **kwargs): - repo = self.get_object() - - if not repo.enabled: - raise ValidationError("This repository does not have any associated credentials") - - latest_commit_sha = repo.provider.get_latest_commit_sha(repo) - rev, _ = repo.provider.get_or_create_revision(repo, latest_commit_sha) - - di = rev.start_import() - - return Response(self.get_serializer(di).data) - - class RevisionRetrieve(CorpusACLMixin, RetrieveAPIView): """ Retrieve a revision diff --git a/arkindex/dataimport/serializers/git.py b/arkindex/dataimport/serializers/git.py index e1334af085b64853cc1b0fa1b92fc0aa8a80543b..e916be24f8ff653ff15c0907482f786bd2b72ab9 100644 --- a/arkindex/dataimport/serializers/git.py +++ b/arkindex/dataimport/serializers/git.py @@ -1,7 +1,7 @@ from rest_framework import serializers from arkindex.project.serializer_fields import EnumField from arkindex.documents.models import Corpus -from arkindex.dataimport.models import DataImport, Repository, Revision, GitRef, GitRefType, WorkerVersionState +from arkindex.dataimport.models import Repository, Revision, GitRef, GitRefType, WorkerVersionState import gitlab.v4.objects import urllib @@ -92,20 +92,6 @@ class RepositorySerializer(serializers.ModelSerializer): } -class RepositoryStartImportSerializer(serializers.ModelSerializer): - """ - A serializer used by the RepositoryStartImport endpoint to return a DataImport ID. - This serializer is required to get the OpenAPI schema generation to work. - """ - - import_id = serializers.UUIDField(source='id') - - class Meta: - model = DataImport - fields = ('import_id',) - read_only_fields = ('import_id',) - - class ExternalRepositorySerializer(serializers.Serializer): """ Serialize a Git repository from an external API diff --git a/arkindex/dataimport/tests/test_repos.py b/arkindex/dataimport/tests/test_repos.py index 931926eba81e73f9ad8d56a5752795a06d15b825..3c6caf51724836697668bc48d83770fa77754690 100644 --- a/arkindex/dataimport/tests/test_repos.py +++ b/arkindex/dataimport/tests/test_repos.py @@ -49,20 +49,6 @@ class TestRepositories(FixtureTestCase): self.assertEqual(Workflow.objects.count(), 0) - def test_start_no_credentials(self): - """ - Test the repository start endpoint fails without credentials - """ - self.client.force_login(self.superuser) - self.repo.credentials = None - self.repo.save() - self.assertFalse(self.repo.enabled) - self.assertEqual(Workflow.objects.count(), 0) - - resp = self.client.get(reverse('api:repository-import', kwargs={'pk': str(self.repo.id)})) - self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(Workflow.objects.count(), 0) - def test_list_repository_requires_login(self): response = self.client.get(reverse('api:repository-list')) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) diff --git a/arkindex/project/api_v1.py b/arkindex/project/api_v1.py index 1a64bccf9e220a374924e49fc0ff6ac45ae1c8fc..6f2d9d35818b72db433249aa8953a4b7f28025f0 100644 --- a/arkindex/project/api_v1.py +++ b/arkindex/project/api_v1.py @@ -25,7 +25,7 @@ from arkindex.documents.api.admin import ReindexStart from arkindex.dataimport.api import ( DataImportsList, DataImportDetails, DataImportRetry, StartProcess, DataImportElements, DataFileList, DataFileRetrieve, DataFileUpload, DataImportFromFiles, - RepositoryList, RepositoryRetrieve, RepositoryStartImport, DataFileCreate, + RepositoryList, RepositoryRetrieve, DataFileCreate, GitRepositoryImportHook, AvailableRepositoriesList, RevisionRetrieve, MLToolList, CorpusWorkflow, WorkerList, WorkerVersionList, WorkerVersionRetrieve, WorkerRunList, WorkerRunDetails, ImportTranskribus @@ -125,7 +125,6 @@ api = [ # Git import workflows path('imports/repos/', RepositoryList.as_view(), name='repository-list'), path('imports/repos/<uuid:pk>/', RepositoryRetrieve.as_view(), name='repository-retrieve'), - path('imports/repos/<uuid:pk>/start/', RepositoryStartImport.as_view(), name='repository-import'), path('imports/repos/search/<uuid:pk>/', AvailableRepositoriesList.as_view(), name='available-repositories'), path('imports/hook/<uuid:pk>/', GitRepositoryImportHook.as_view(), name='import-hook'), path('imports/revisions/<uuid:pk>/', RevisionRetrieve.as_view(), name='revision-retrieve'),