mirror of
https://github.com/openSUSE/osc.git
synced 2025-01-01 04:36:13 +01:00
Add obs_api.Person class
This commit is contained in:
parent
36dd0401ee
commit
149c7f799f
@ -1,4 +1,5 @@
|
|||||||
from .package import Package
|
from .package import Package
|
||||||
from .package_sources import PackageSources
|
from .package_sources import PackageSources
|
||||||
|
from .person import Person
|
||||||
from .project import Project
|
from .project import Project
|
||||||
from .request import Request
|
from .request import Request
|
||||||
|
@ -7,6 +7,11 @@ class BlockModes(str, Enum):
|
|||||||
NEVER = "never"
|
NEVER = "never"
|
||||||
|
|
||||||
|
|
||||||
|
class BoolString(str, Enum):
|
||||||
|
TRUE = "true"
|
||||||
|
FALSE = "false"
|
||||||
|
|
||||||
|
|
||||||
class BuildArch(str, Enum):
|
class BuildArch(str, Enum):
|
||||||
NOARCH = "noarch"
|
NOARCH = "noarch"
|
||||||
AARCH64 = "aarch64"
|
AARCH64 = "aarch64"
|
||||||
|
71
osc/obs_api/person.py
Normal file
71
osc/obs_api/person.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
from ..util.models import * # pylint: disable=wildcard-import,unused-wildcard-import
|
||||||
|
from .enums import BoolString
|
||||||
|
from .person_owner import PersonOwner
|
||||||
|
from .person_watchlist import PersonWatchlist
|
||||||
|
|
||||||
|
|
||||||
|
class Person(XmlModel):
|
||||||
|
XML_TAG = "person"
|
||||||
|
|
||||||
|
login: str = Field(
|
||||||
|
)
|
||||||
|
|
||||||
|
email: Optional[str] = Field(
|
||||||
|
)
|
||||||
|
|
||||||
|
realname: Optional[str] = Field(
|
||||||
|
)
|
||||||
|
|
||||||
|
owner: Optional[PersonOwner] = Field(
|
||||||
|
)
|
||||||
|
|
||||||
|
state: Optional[str] = Field(
|
||||||
|
)
|
||||||
|
|
||||||
|
globalrole_list: Optional[List[str]] = Field(
|
||||||
|
xml_name="globalrole",
|
||||||
|
)
|
||||||
|
|
||||||
|
watchlist: Optional[PersonWatchlist] = Field(
|
||||||
|
)
|
||||||
|
|
||||||
|
ignore_auth_services: Optional[BoolString] = Field(
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_api(cls, apiurl: str, username: str):
|
||||||
|
url_path = ["person", username]
|
||||||
|
url_query = {}
|
||||||
|
response = cls.xml_request("GET", apiurl, url_path, url_query)
|
||||||
|
return cls.from_file(response, apiurl=apiurl)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def search(
|
||||||
|
cls,
|
||||||
|
apiurl: str,
|
||||||
|
login: Optional[str] = None,
|
||||||
|
email: Optional[str] = None,
|
||||||
|
realname: Optional[str] = None,
|
||||||
|
state: Optional[str] = None,
|
||||||
|
**kwargs,
|
||||||
|
) -> List["Person"]:
|
||||||
|
from xml.etree import ElementTree as ET
|
||||||
|
from ..util.xpath import XPathQuery as Q
|
||||||
|
|
||||||
|
url_path = ["search", "person"]
|
||||||
|
url_query = {
|
||||||
|
"match": Q(
|
||||||
|
login=login,
|
||||||
|
email=email,
|
||||||
|
realname=realname,
|
||||||
|
state=state,
|
||||||
|
**kwargs,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
response = cls.xml_request("GET", apiurl, url_path, url_query)
|
||||||
|
root = ET.parse(response).getroot()
|
||||||
|
assert root.tag == "collection"
|
||||||
|
result = []
|
||||||
|
for node in root:
|
||||||
|
result.append(cls.from_xml(node, apiurl=apiurl))
|
||||||
|
return result
|
9
osc/obs_api/person_owner.py
Normal file
9
osc/obs_api/person_owner.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from ..util.models import * # pylint: disable=wildcard-import,unused-wildcard-import
|
||||||
|
|
||||||
|
|
||||||
|
class PersonOwner(XmlModel):
|
||||||
|
XML_TAG = "owner"
|
||||||
|
|
||||||
|
userid: str = Field(
|
||||||
|
xml_attribute=True,
|
||||||
|
)
|
20
osc/obs_api/person_watchlist.py
Normal file
20
osc/obs_api/person_watchlist.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
from ..util.models import * # pylint: disable=wildcard-import,unused-wildcard-import
|
||||||
|
from .person_watchlist_package import PersonWatchlistPackage
|
||||||
|
from .person_watchlist_project import PersonWatchlistProject
|
||||||
|
from .person_watchlist_request import PersonWatchlistRequest
|
||||||
|
|
||||||
|
|
||||||
|
class PersonWatchlist(XmlModel):
|
||||||
|
XML_TAG = "watchlist"
|
||||||
|
|
||||||
|
project_list: Optional[List[PersonWatchlistProject]] = Field(
|
||||||
|
xml_name="project",
|
||||||
|
)
|
||||||
|
|
||||||
|
package_list: Optional[List[PersonWatchlistPackage]] = Field(
|
||||||
|
xml_name="package",
|
||||||
|
)
|
||||||
|
|
||||||
|
request_list: Optional[List[PersonWatchlistRequest]] = Field(
|
||||||
|
xml_name="request",
|
||||||
|
)
|
13
osc/obs_api/person_watchlist_package.py
Normal file
13
osc/obs_api/person_watchlist_package.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
from ..util.models import * # pylint: disable=wildcard-import,unused-wildcard-import
|
||||||
|
|
||||||
|
|
||||||
|
class PersonWatchlistPackage(XmlModel):
|
||||||
|
XML_TAG = "package"
|
||||||
|
|
||||||
|
name: str = Field(
|
||||||
|
xml_attribute=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
project: str = Field(
|
||||||
|
xml_attribute=True,
|
||||||
|
)
|
9
osc/obs_api/person_watchlist_project.py
Normal file
9
osc/obs_api/person_watchlist_project.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from ..util.models import * # pylint: disable=wildcard-import,unused-wildcard-import
|
||||||
|
|
||||||
|
|
||||||
|
class PersonWatchlistProject(XmlModel):
|
||||||
|
XML_TAG = "project"
|
||||||
|
|
||||||
|
name: str = Field(
|
||||||
|
xml_attribute=True,
|
||||||
|
)
|
9
osc/obs_api/person_watchlist_request.py
Normal file
9
osc/obs_api/person_watchlist_request.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from ..util.models import * # pylint: disable=wildcard-import,unused-wildcard-import
|
||||||
|
|
||||||
|
|
||||||
|
class PersonWatchlistRequest(XmlModel):
|
||||||
|
XML_TAG = "request"
|
||||||
|
|
||||||
|
number: str = Field(
|
||||||
|
xml_attribute=True,
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user