protect fields not changable via api

pull/1/head
Langenfeld 2019-06-12 17:43:19 +02:00 zatwierdzone przez Langenfeld
rodzic b26d5b0210
commit ef93d185d1
1 zmienionych plików z 16 dodań i 5 usunięć

Wyświetl plik

@ -21,7 +21,7 @@ class GiteaApiObject:
GET_API_OBJECT = "FORMAT/STINING/{argument}"
def __init__(self, gitea, id: int):
self.id = id
self.__id = id
self.gitea = gitea
self.deleted = False # set if .delete was called, so that an exception is risen
@ -40,7 +40,7 @@ class GiteaApiObject:
def request(cls, gitea, id):
"""Use for ginving a nice e.g. 'request(gita, orgname, repo, ticket)'.
All args are put into an args tuple for passing around"""
return cls._request(gitea, {"id":id})
return cls._request(gitea, {"id": id})
@classmethod
def _request(cls, gitea, args):
@ -64,15 +64,21 @@ class GiteaApiObject:
"""Retrieving an object always as GET_API_OBJECT """
return gitea.requests_get(cls.GET_API_OBJECT.format(**args))
editable_fields = []
@classmethod
def _initialize(cls, gitea, api_object, result):
for name, value in result.items():
if name in cls.fields_to_parsers and value is not None:
parse_func = cls.fields_to_parsers[name]
value = parse_func(gitea, value)
prop = property(
(lambda name: lambda self: self.__get_var(name))(name),
(lambda name: lambda self, v: self.__set_var(name, v))(name))
if name in cls.editable_fields:
prop = property(
(lambda name: lambda self: self.__get_var(name))(name),
(lambda name: lambda self, v: self.__set_var(name, v))(name))
else:
prop = property(
(lambda name: lambda self: self.__get_var(name))(name))
setattr(cls, name, prop)
setattr(api_object, "__"+name, value)
@ -101,6 +107,8 @@ class Organization(GiteaApiObject):
def request(cls, gitea, name):
return cls._request(gitea, {"name": name})
editable_fields = ["description", "full_name", "location", "visibility", "website"]
# oldstuff
def get_repositories(self):
@ -192,6 +200,9 @@ class User(GiteaApiObject):
def request(cls, gitea, name):
return cls._request(gitea, {"name": name})
editable_fields = ["active", "admin", "allow_create_organization", "allow_git_hook", "allow_import_local",
"email", "full_name", "location", "login_name", "max_repo_creation", "must_change_password",
"password", "prohibit_login", "source_id", "website"]
def get_repositories(self):
""" Get all Repositories owned by this User.