kopia lustrzana https://github.com/Langenfeld/py-gitea
added ability to request paginated gitea api endpoints; fixed listing paginated organisation repository listing
rodzic
79276e94d1
commit
bd2371b1b6
|
@ -1,6 +1,5 @@
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import List, Tuple, Dict, Sequence, Optional
|
from typing import List, Tuple, Dict, Sequence, Optional
|
||||||
|
|
||||||
|
@ -50,7 +49,7 @@ class Organization(GiteaApiObject):
|
||||||
self.dirty_fields = {}
|
self.dirty_fields = {}
|
||||||
|
|
||||||
def get_repositories(self) -> List["Repository"]:
|
def get_repositories(self) -> List["Repository"]:
|
||||||
results = self.gitea.requests_get(
|
results = self.gitea.requests_get_paginated(
|
||||||
Organization.ORG_REPOS_REQUEST % self.username
|
Organization.ORG_REPOS_REQUEST % self.username
|
||||||
)
|
)
|
||||||
return [Repository.parse_response(self.gitea, result) for result in results]
|
return [Repository.parse_response(self.gitea, result) for result in results]
|
||||||
|
@ -658,6 +657,19 @@ class Gitea:
|
||||||
return json.loads(result.text)
|
return json.loads(result.text)
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
def requests_get_paginated(self, endpoint, params ={}, requests=None, sudo=None, page_key: str = "page"):
|
||||||
|
page = 1
|
||||||
|
combined_params = {}
|
||||||
|
combined_params.update(params)
|
||||||
|
aggregated_result = []
|
||||||
|
while True:
|
||||||
|
combined_params[page_key] = page
|
||||||
|
result = self.requests_get(endpoint, combined_params, requests, sudo)
|
||||||
|
aggregated_result.extend(result)
|
||||||
|
page += 1
|
||||||
|
if len(result) == 0:
|
||||||
|
return aggregated_result
|
||||||
|
|
||||||
def requests_get(self, endpoint, params={}, requests=None, sudo=None):
|
def requests_get(self, endpoint, params={}, requests=None, sudo=None):
|
||||||
combined_params = {}
|
combined_params = {}
|
||||||
combined_params.update(params)
|
combined_params.update(params)
|
||||||
|
|
|
@ -125,6 +125,16 @@ def test_create_repo_orgowned(instance):
|
||||||
assert repo.name == test_repo
|
assert repo.name == test_repo
|
||||||
assert not repo.private
|
assert not repo.private
|
||||||
|
|
||||||
|
def test_list_repos(instance):
|
||||||
|
org = Organization.request(instance, test_org)
|
||||||
|
repos = org.get_repositories()
|
||||||
|
assert len(repos) > 0
|
||||||
|
# test a number of repository listings larger than the pagination number (default 30)
|
||||||
|
for i in range(1, 34):
|
||||||
|
instance.create_repo(org, test_repo + "_" + str(i), str(i))
|
||||||
|
repos = org.get_repositories()
|
||||||
|
assert len(repos) >= 33
|
||||||
|
|
||||||
def test_list_branches(instance):
|
def test_list_branches(instance):
|
||||||
org = Organization.request(instance, test_org)
|
org = Organization.request(instance, test_org)
|
||||||
repo = org.get_repository(test_repo)
|
repo = org.get_repository(test_repo)
|
||||||
|
@ -204,6 +214,13 @@ def test_delete_team(instance):
|
||||||
with pytest.raises(NotFoundException) as e:
|
with pytest.raises(NotFoundException) as e:
|
||||||
team = org.get_team(test_team)
|
team = org.get_team(test_team)
|
||||||
|
|
||||||
|
def test_delete_teams(instance):
|
||||||
|
org = Organization.request(instance, test_org)
|
||||||
|
repos = org.get_repositories()
|
||||||
|
for repo in repos:
|
||||||
|
repo.delete()
|
||||||
|
repos = org.get_repositories()
|
||||||
|
assert len(repos) == 0
|
||||||
|
|
||||||
def test_delete_org(instance):
|
def test_delete_org(instance):
|
||||||
org = Organization.request(instance, test_org)
|
org = Organization.request(instance, test_org)
|
||||||
|
|
Ładowanie…
Reference in New Issue