diff --git a/gitea/basicGiteaApiObject.py b/gitea/basicGiteaApiObject.py index b64d9d5..edc52f4 100644 --- a/gitea/basicGiteaApiObject.py +++ b/gitea/basicGiteaApiObject.py @@ -63,6 +63,15 @@ class BasicGiteaApiObject: (lambda name: lambda self: self.__get_var(name))(name)) setattr(cls, name, prop) setattr(api_object, "_" + name, value) + # add all patchable fields to be watched if changed + for name in cls.patchable_fields: + if not hasattr(api_object,name): + prop = property( + (lambda name: lambda self: self.__get_var(name))(name), + (lambda name: lambda self, v: self.__set_var(name, v))(name)) + setattr(cls, name, prop) + setattr(api_object, "_" + name, None) + def __set_var(self, name, i): if self.deleted: diff --git a/gitea/gitea.py b/gitea/gitea.py index ed6a7ba..406394d 100644 --- a/gitea/gitea.py +++ b/gitea/gitea.py @@ -692,8 +692,8 @@ class Gitea: ) if request.status_code not in [200, 201]: if ( - "already exists" in request.text - or "e-mail already in use" in request.text + "already exists" in request.text + or "e-mail already in use" in request.text ): self.logger.warning(request.text) raise AlreadyExistsException() @@ -777,7 +777,7 @@ class Gitea: return self.requests_get(path) def post_org_repos( - self, name, description, private, auto_init, gitignores, license, readme, org + self, name, description, private, auto_init, gitignores, license, readme, org ): path = "/org/" + org + "/repos" return self.requests_post( @@ -809,15 +809,15 @@ class Gitea: return self.requests_get(path) def post_repos_migrate( - self, - clone_addr, - auth_username, - auth_password, - uid, - repo_name, - mirror, - private, - description, + self, + clone_addr, + auth_username, + auth_password, + uid, + repo_name, + mirror, + private, + description, ): path = "/repos/migrate" return self.requests_post( @@ -835,7 +835,7 @@ class Gitea: ) def post_user_repos( - self, name, description, private, auto_init, gitignores, license, readme + self, name, description, private, auto_init, gitignores, license, readme ): path = "/user/repos" return self.requests_post( @@ -880,14 +880,14 @@ class Gitea: return None def create_user( - self, - user_name: str, - email: str, - password: str, - login_name: str = None, - change_pw=True, - send_notify=True, - source_id=0, + self, + user_name: str, + email: str, + password: str, + login_name: str = None, + change_pw=True, + send_notify=True, + source_id=0, ): """ Create User. Throws: @@ -923,16 +923,16 @@ class Gitea: return user def create_repo( - self, - repoOwner, - repoName: str, - description: str = "", - private: bool = False, - autoInit=True, - gitignores: str = None, - license: str = None, - readme: str = "Default", - issue_labels: str = None, + self, + repoOwner, + repoName: str, + description: str = "", + private: bool = False, + autoInit=True, + gitignores: str = None, + license: str = None, + readme: str = "Default", + issue_labels: str = None, ): """ Create a Repository. Throws: @@ -964,13 +964,13 @@ class Gitea: return Repository.parse_response(self, result) def create_org( - self, - owner: User, - orgName: str, - description: str, - location="", - website="", - full_name="", + self, + owner: User, + orgName: str, + description: str, + location="", + website="", + full_name="", ): assert isinstance(owner, User) result = self.requests_post( @@ -998,20 +998,20 @@ class Gitea: return Organization.parse_response(self, result) def create_team( - self, - org: Organization, - name: str, - description: str = "", - permission: str = "read", - units=( - "repo.code", - "repo.issues", - "repo.ext_issues", - "repo.wiki", - "repo.pulls", - "repo.releases", - "repo.ext_wiki", - ), + self, + org: Organization, + name: str, + description: str = "", + permission: str = "read", + units=( + "repo.code", + "repo.issues", + "repo.ext_issues", + "repo.wiki", + "repo.pulls", + "repo.releases", + "repo.ext_wiki", + ), ): """ Creates a Team. diff --git a/tests/test_api.py b/tests/test_api.py index 27a5ea1..7ab1294 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -61,6 +61,15 @@ def test_create_user(instance): assert user.email == email assert not user.is_admin +def test_change_user(instance): + user = instance.get_user_by_name(test_user) + user.website = "other_testname" + user.full_name = "other_description" + user.commit() + del(user) + user = instance.get_user_by_name(test_user) + assert user.full_name == "other_description" + def test_create_org(instance): user = instance.get_user()