Skip to content
Snippets Groups Projects
Commit 52b6871c authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'no-import-repo-disabled' into 'master'

No imports on disabled repos

See merge request !249
parents 1bcc8ac2 c4e59ad5
No related branches found
No related tags found
1 merge request!249No imports on disabled repos
......@@ -3,6 +3,7 @@ from django.contrib.postgres.fields import JSONField
from django.template.defaultfilters import slugify
from django.conf import settings
from django.utils.functional import cached_property
from rest_framework.exceptions import ValidationError
from enumfields import EnumField, Enum
from arkindex.project.models import IndexableModel
from arkindex.documents.models import Element, ElementType
......@@ -51,6 +52,8 @@ class DataImport(IndexableModel):
Create a ponos workflow with a recipe according to configuration
'''
assert self.workflow is None, 'A workflow is already setup'
if self.mode == DataImportMode.Repository and self.revision is not None and not self.revision.repo.enabled:
raise ValidationError('Git repository does not have any valid credentials')
# Import data in Arkindex, then do the ML analysis
tasks = {
......@@ -75,6 +78,8 @@ class DataImport(IndexableModel):
self.save()
def retry(self):
if self.mode == DataImportMode.Repository and self.revision is not None and not self.revision.repo.enabled:
raise ValidationError('Git repository does not have any valid credentials')
if self.workflow:
self.workflow.retry()
else:
......
......@@ -172,6 +172,19 @@ class TestImports(FixtureAPITestCase):
self.dataimport.refresh_from_db()
self.assertEqual(self.dataimport.state, State.Unscheduled)
def test_retry_repo_disabled(self):
self.client.force_login(self.user)
self.dataimport.mode = DataImportMode.Repository
self.dataimport.revision = self.rev
self.dataimport.save()
self.dataimport.start()
self.dataimport.workflow.tasks.all().update(state=State.Error)
self.assertEqual(self.dataimport.state, State.Error)
self.creds.delete()
response = self.client.post(reverse('api:import-retry', kwargs={'pk': self.dataimport.id}))
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.creds.save()
def test_failures_requires_login(self):
self.dataimport.failures.create(path='path/to/file', message='something')
response = self.client.get(reverse('api:import-failures', kwargs={'pk': self.dataimport.id}))
......
from arkindex.project.tests import FixtureTestCase
from arkindex.dataimport.models import Repository, DataImport, DataImportMode
from ponos.models import Workflow
from rest_framework.exceptions import ValidationError
class TestRepositories(FixtureTestCase):
......@@ -29,13 +30,18 @@ class TestRepositories(FixtureTestCase):
self.creds.delete()
self.assertEqual(Workflow.objects.count(), 0)
with self.assertRaises(Exception):
DataImport.objects.create(
mode=DataImportMode.Repository,
revision=self.rev,
creator=self.superuser,
corpus=self.corpus,
).start_import()
di = DataImport.objects.create(
mode=DataImportMode.Repository,
revision=self.rev,
creator=self.superuser,
corpus=self.corpus,
)
with self.assertRaises(ValidationError):
di.start()
with self.assertRaises(ValidationError):
di.retry()
self.assertEqual(Workflow.objects.count(), 0)
self.creds.save()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment