From f41a50feef02987cd3b4ad94d505ec388d29986b Mon Sep 17 00:00:00 2001 From: Eva Bardou <ebardou@teklia.com> Date: Wed, 2 Sep 2020 09:36:18 +0200 Subject: [PATCH] Remove StartRepositoryImport endpoint and related serializer --- arkindex/dataimport/api.py | 32 +------------------------ arkindex/dataimport/serializers/git.py | 16 +------------ arkindex/dataimport/tests/test_repos.py | 14 ----------- arkindex/project/api_v1.py | 3 +-- 4 files changed, 3 insertions(+), 62 deletions(-) diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py index a82f342e0e..65ab011c30 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 e1334af085..e916be24f8 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 931926eba8..3c6caf5172 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 1a64bccf9e..6f2d9d3581 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'), -- GitLab