Source code for gerrit.groups.subgroups

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Jialiang Shi
from typing import Any, Dict, List
from gerrit import GerritClient


[docs] class GerritGroupSubGroups: def __init__(self, group_id: str, gerrit: GerritClient) -> None: self.id = group_id self.gerrit = gerrit self.endpoint = f"/groups/{self.id}/groups"
[docs] def list(self) -> List[Any]: """ Lists the direct subgroups of a group. This endpoint is only allowed for Gerrit internal groups; attempting to call on a non-internal group will return 405 Method Not Allowed. :return: """ result = self.gerrit.get(self.endpoint + "/") subgroups = [] for item in result: group_id = item.get("id") subgroups.append(self.gerrit.groups.get(group_id)) return subgroups
[docs] def get(self, subgroup: Any) -> Any: """ Retrieves a subgroup. This endpoint is only allowed for Gerrit internal groups; attempting to call on a non-internal group will return 405 Method Not Allowed. :param subgroup: subgroup id or name :return: """ result = self.gerrit.get(self.endpoint + f"/{subgroup}") subgroup_id = result.get("id") return self.gerrit.groups.get(subgroup_id)
[docs] def add(self, subgroup: Any) -> Any: """ Adds an internal or external group as subgroup to a Gerrit internal group. This endpoint is only allowed for Gerrit internal groups; attempting to call on a non-internal group will return 405 Method Not Allowed. :param subgroup: subgroup id or name :return: """ result = self.gerrit.put(self.endpoint + f"/{subgroup}") subgroup_id = result.get("id") return self.gerrit.groups.get(subgroup_id)
[docs] def add_subgroups(self, input_: Dict[str, Any]) -> Any: """ Adds multiple groups as subgroups to a Gerrit internal group in a single request. This endpoint is only allowed for Gerrit internal groups; attempting to call on a non-internal group will return 405 Method Not Allowed. .. code-block:: python input_ = { "groups": ["MyGroup", "MyOtherGroup"] } group = client.groups.get('0017af503a22f7b3fa6ce2cd3b551734d90701b4') result = group.subgroup.add_subgroups(input_) :param input_: the GroupsInput entity, https://gerrit-review.googlesource.com/Documentation/rest-api-groups.html#add-subgroups :return: """ return self.gerrit.post( self.endpoint, json=input_, headers=self.gerrit.default_headers )
[docs] def remove(self, subgroup: Any) -> None: """ Removes a subgroup from a Gerrit internal group. This endpoint is only allowed for Gerrit internal groups; attempting to call on a non-internal group will return 405 Method Not Allowed. :param subgroup: subgroup id or name :return: """ self.gerrit.delete(self.endpoint + f"/{subgroup}")
[docs] def remove_subgroups(self, input_: Dict[str, Any]) -> None: """ Removes multiple subgroups from a Gerrit internal group in a single request. This endpoint is only allowed for Gerrit internal groups; attempting to call on a non-internal group will return 405 Method Not Allowed. .. code-block:: python input_ = { "groups": ["MyGroup", "MyOtherGroup"] } group = client.groups.get('0017af503a22f7b3fa6ce2cd3b551734d90701b4') group.subgroup.remove_subgroups(input_) :param input_: the GroupsInput entity, https://gerrit-review.googlesource.com/Documentation/rest-api-groups.html#remove-subgroups :return: """ self.gerrit.post( self.endpoint + ".delete", json=input_, headers=self.gerrit.default_headers, )