diff --git a/arkindex/dataimport/serializers/git.py b/arkindex/dataimport/serializers/git.py index e7124282bcfcc568eef00ef0ea08890b7455593b..e1334af085b64853cc1b0fa1b92fc0aa8a80543b 100644 --- a/arkindex/dataimport/serializers/git.py +++ b/arkindex/dataimport/serializers/git.py @@ -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}, diff --git a/arkindex/dataimport/tests/test_repos.py b/arkindex/dataimport/tests/test_repos.py index eb5d048d628195861851eeae12e9cc6300071068..931926eba81e73f9ad8d56a5752795a06d15b825 100644 --- a/arkindex/dataimport/tests/test_repos.py +++ b/arkindex/dataimport/tests/test_repos.py @@ -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, })