kopia lustrzana https://github.com/Langenfeld/py-gitea
adding functionality to move repos to other orgs (see #9)
rodzic
bd2371b1b6
commit
8f5f22842b
|
@ -1,7 +1,7 @@
|
|||
import json
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from typing import List, Tuple, Dict, Sequence, Optional
|
||||
from typing import List, Tuple, Dict, Sequence, Optional, Union
|
||||
|
||||
import requests
|
||||
from httpcache import CachingHTTPAdapter
|
||||
|
@ -236,6 +236,7 @@ class Repository(GiteaApiObject):
|
|||
REPO_TIMES = """/repos/%s/%s/times""" # <owner>, <reponame>
|
||||
REPO_USER_TIME = """/repos/%s/%s/times/%s""" # <owner>, <reponame>, <username>
|
||||
REPO_COMMITS = "/repos/%s/%s/commits" # <owner>, <reponame>
|
||||
REPO_TRANSFER = "/repos/{owner}/{repo}/transfer"
|
||||
|
||||
def __init__(self, gitea, id: int):
|
||||
super(Repository, self).__init__(gitea, id=id)
|
||||
|
@ -400,13 +401,20 @@ class Repository(GiteaApiObject):
|
|||
url = f"/repos/{self.owner.username}/{self.name}/collaborators/{user_name}"
|
||||
self.gitea.requests_delete(url)
|
||||
|
||||
def transfer_ownership(self, new_owner: Union["User","Organization"], new_teams: List["Team"]):
|
||||
url = Repository.REPO_TRANSFER.format(owner = self.owner.username, repo = self.name)
|
||||
new_team_ids = [team.id for team in new_teams if isinstance(new_owner,User) or team in new_owner.get_teams()]
|
||||
self.gitea.requests_post(
|
||||
url, data={"new_owner": new_owner.username, "team_ids": new_team_ids}
|
||||
)
|
||||
#TODO: make sure this instance is either updated or discarded
|
||||
|
||||
def delete(self):
|
||||
self.gitea.requests_delete(
|
||||
Repository.REPO_DELETE % (self.owner.username, self.name)
|
||||
)
|
||||
self.deleted = True
|
||||
|
||||
|
||||
class Milestone(GiteaApiObject):
|
||||
GET_API_OBJECT = (
|
||||
"""/repos/{owner}/{repo}/milestones/{number}""" # <owner, repo, id>
|
||||
|
|
|
@ -207,6 +207,17 @@ def test_delete_repo_orgowned(instance):
|
|||
Repository.request(instance, test_user, test_repo)
|
||||
|
||||
|
||||
def test_change_repo_ownership(instance):
|
||||
old_org = Organization.request(instance, test_org)
|
||||
user = User.request(instance, test_user)
|
||||
new_org = instance.create_org(user,test_org+"_repomove", "Org for testing moving repositories")
|
||||
new_team = instance.create_team(new_org, test_team + "_repomove", "descr")
|
||||
repo = instance.create_repo(old_org, test_repo+"_repomove", "descr")
|
||||
repo.transfer_ownership(new_org, [new_team])
|
||||
assert len(new_org.get_teams()) > 1
|
||||
assert test_repo + "_repomove" in [team.name for team in new_org.get_repositories()]
|
||||
|
||||
|
||||
def test_delete_team(instance):
|
||||
org = Organization.request(instance, test_org)
|
||||
team = org.get_team(test_team)
|
||||
|
|
Ładowanie…
Reference in New Issue