Skip to content
Snippets Groups Projects
Commit 47a84a7c authored by Eva Bardou's avatar Eva Bardou Committed by Bastien Abadie
Browse files

Add git_clone_url attribute on Repository serializer

parent f43187ed
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@ from arkindex.project.serializer_fields import EnumField
from arkindex.documents.models import Corpus
from arkindex.dataimport.models import DataImport, Repository, Revision, GitRef, GitRefType, WorkerVersionState
import gitlab.v4.objects
import urllib
class GitRefSerializer(serializers.ModelSerializer):
......@@ -68,11 +69,12 @@ class RepositorySerializer(serializers.ModelSerializer):
Serialize a repository
"""
enabled = serializers.BooleanField(read_only=True)
gitlab_token = serializers.SerializerMethodField()
git_clone_url = serializers.SerializerMethodField()
def get_gitlab_token(self, repository):
def get_git_clone_url(self, repository):
if self.context['request'].user.is_internal and isinstance(self.instance, Repository) and self.instance.enabled:
return repository.credentials.token
url = urllib.parse.urlparse(self.instance.url)
return f"https://oauth2:{repository.credentials.token}@{url.netloc}{url.path}"
return None
class Meta:
......@@ -82,7 +84,7 @@ class RepositorySerializer(serializers.ModelSerializer):
'url',
'enabled',
'corpus',
'gitlab_token',
'git_clone_url',
)
extra_kwargs = {
'id': {'read_only': True},
......
......@@ -77,7 +77,7 @@ class TestRepositories(FixtureTestCase):
'id': str(self.repo.id),
'corpus': str(self.repo.corpus.id),
'enabled': True,
'gitlab_token': None,
'git_clone_url': None,
'url': self.repo.url,
})
......@@ -91,7 +91,7 @@ class TestRepositories(FixtureTestCase):
'id': str(self.repo.id),
'corpus': str(self.repo.corpus.id),
'enabled': True,
'gitlab_token': None,
'git_clone_url': None,
'url': self.repo.url,
})
......@@ -121,7 +121,7 @@ class TestRepositories(FixtureTestCase):
'id': str(self.repo.id),
'corpus': str(self.repo.corpus.id),
'enabled': True,
'gitlab_token': None,
'git_clone_url': None,
'url': self.repo.url,
})
......@@ -136,7 +136,7 @@ class TestRepositories(FixtureTestCase):
'id': str(self.repo.id),
'corpus': str(self.repo.corpus.id),
'enabled': True,
'gitlab_token': 'oauth-token',
'git_clone_url': 'https://oauth2:oauth-token@gitlab/repo',
'url': self.repo.url,
})
......@@ -157,7 +157,7 @@ class TestRepositories(FixtureTestCase):
'id': str(self.repo.id),
'corpus': str(self.repo.corpus.id),
'enabled': False,
'gitlab_token': None,
'git_clone_url': None,
'url': self.repo.url,
})
......
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