From 47a84a7cdd3c257c56947e27c0584f5d91c2a43a Mon Sep 17 00:00:00 2001 From: Eva Bardou <ebardou@teklia.com> Date: Thu, 27 Aug 2020 07:11:29 +0000 Subject: [PATCH] Add git_clone_url attribute on Repository serializer --- arkindex/dataimport/serializers/git.py | 10 ++++++---- arkindex/dataimport/tests/test_repos.py | 10 +++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/arkindex/dataimport/serializers/git.py b/arkindex/dataimport/serializers/git.py index e7124282bc..e1334af085 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 eb5d048d62..931926eba8 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, }) -- GitLab