From 7a9866116dca7d3c8df260ef606c9645bae755ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Kolbu?= Date: Fri, 27 Jan 2023 11:41:27 +0100 Subject: [PATCH 1/2] (feat) Repository: Update patchable fields to Gitea as of 1.18.3 Also add a commit method to be able to perform patching. --- gitea/apiobject.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gitea/apiobject.py b/gitea/apiobject.py index 2c64327..447a291 100644 --- a/gitea/apiobject.py +++ b/gitea/apiobject.py @@ -357,22 +357,40 @@ class Repository(ApiObject): return cls._request(gitea, {"owner": owner, "name": name}) _patchable_fields = { + "allow_manual_merge", "allow_merge_commits", "allow_rebase", "allow_rebase_explicit", + "allow_rebase_update", "allow_squash_merge", "archived", + "autodetect_manual_merge", "default_branch", + "default_delete_branch_after_merge", + "default_merge_style", "description", + "enable_prune", + "external_tracker", + "external_wiki", "has_issues", + "has_projects", "has_pull_requests", "has_wiki", "ignore_whitespace_conflicts", + "internal_tracker", + "mirror_interval", "name", "private", + "template", "website", } + def commit(self): + values = self.get_dirty_fields() + args = {"owner": self.owner.username, "name": self.name} + self.gitea.requests_patch(self.API_OBJECT.format(**args), data=values) + self.dirty_fields = {} + def get_branches(self) -> List['Branch']: """Get all the Branches of this Repository.""" results = self.gitea.requests_get( From d0c665b3e3835cb77a6b5fe8bfc011212c76253b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Kolbu?= Date: Fri, 27 Jan 2023 11:42:34 +0100 Subject: [PATCH 2/2] (testing) Test Repository patching --- tests/test_api.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/test_api.py b/tests/test_api.py index a06fbe7..f08dc51 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -127,6 +127,24 @@ def test_create_repo_orgowned(instance): assert repo.name == test_repo assert not repo.private + +def test_patch_repo(instance): + fields = { + "allow_rebase": False, + "description": "new description", + "has_projects": True, + "private": True, + } + org = Organization.request(instance, test_org) + repo = org.get_repository(test_repo) + for field, value in fields.items(): + setattr(repo, field, value) + repo.commit() + repo = org.get_repository(test_repo) + for field, value in fields.items(): + assert getattr(repo, field) == value + + def test_list_branches(instance): org = Organization.request(instance, test_org) repo = org.get_repository(test_repo)