Added get_child_items to Item class.
This commit is contained in:
64
sk/devops.py
64
sk/devops.py
@@ -32,11 +32,15 @@ def auto_properties(mapping: dict[str,str]):
|
|||||||
self.get_auto_properties()
|
self.get_auto_properties()
|
||||||
return getattr(self, private_var)
|
return getattr(self, private_var)
|
||||||
|
|
||||||
return property(fget=getter)
|
def setter(self, value):
|
||||||
|
setattr(self, private_var, value)
|
||||||
|
|
||||||
|
return property(fget=getter, fset=setter)
|
||||||
|
|
||||||
def from_args(self, **kwargs):
|
def from_args(self, **kwargs):
|
||||||
for name in kwargs:
|
for name in kwargs:
|
||||||
if name in self.__class__.__auto_properties__.values():
|
if name in self.__class__.__auto_properties__:
|
||||||
|
log.debug(f"Setting property '{name}' for {self.__class__.__name__} from args", extra={"property_name": name})
|
||||||
setattr(self, f"_{name}", kwargs.get(name, None))
|
setattr(self, f"_{name}", kwargs.get(name, None))
|
||||||
|
|
||||||
def from_json(self, json_data: dict):
|
def from_json(self, json_data: dict):
|
||||||
@@ -207,18 +211,8 @@ class Repository():
|
|||||||
def items(self):
|
def items(self):
|
||||||
log.debug(f"Fetching items for repository '{self.name}'", extra={"repository_name": self.name})
|
log.debug(f"Fetching items for repository '{self.name}'", extra={"repository_name": self.name})
|
||||||
if not hasattr(self, "_items"):
|
if not hasattr(self, "_items"):
|
||||||
objects = self._project.organization.get_path(
|
root = Item(repository=self, path="/", git_object_type="tree")
|
||||||
path=f"{self._project.id}/_apis/git/repositories/{self.id}/items",
|
self._items = root.get_child_items()
|
||||||
params={
|
|
||||||
"scopePath": "/",
|
|
||||||
"recursionLevel": "oneLevel"
|
|
||||||
}
|
|
||||||
).get("value", [])
|
|
||||||
self._items = []
|
|
||||||
for obj in objects:
|
|
||||||
i = Item(repository=self, path=obj.get("path"))
|
|
||||||
i.from_json(obj)
|
|
||||||
self._items.append(i)
|
|
||||||
|
|
||||||
return self._items
|
return self._items
|
||||||
|
|
||||||
@@ -257,21 +251,31 @@ class Item():
|
|||||||
def path(self):
|
def path(self):
|
||||||
return self._path
|
return self._path
|
||||||
|
|
||||||
# @property
|
def get_child_items(self) -> list[Item]:
|
||||||
# def children(self):
|
"""Get child items if this item is a folder."""
|
||||||
# """List items under this item if it is a folder."""
|
if self.git_object_type != "tree":
|
||||||
# if self.git_object_type == "tree":
|
raise ValueError("Child items can only be fetched for folder items.")
|
||||||
# return self._entities(
|
|
||||||
# entity_class=Item,
|
# Fetch child objects
|
||||||
# key_name="path",
|
objects = self._repository._project.organization.get_path(
|
||||||
# list_url=f"{self._repository._project.id}/_apis/git/repositories/{self._repository.id}/items",
|
path=f"{self._repository._project.id}/_apis/git/repositories/{self._repository.id}/items",
|
||||||
# params={
|
params={
|
||||||
# "scopePath": self._path,
|
"scopePath": self.path,
|
||||||
# "recursionLevel": "oneLevel"
|
"recursionLevel": "oneLevel"
|
||||||
# }
|
}
|
||||||
# )
|
).get("value", [])
|
||||||
# else:
|
child_items = []
|
||||||
# raise ValueError("Items can only be listed for folder items.")
|
for obj in objects:
|
||||||
|
i = Item(repository=self._repository, path=obj.get("path"))
|
||||||
|
i.from_json(obj)
|
||||||
|
child_items.append(i)
|
||||||
|
return child_items
|
||||||
|
|
||||||
|
@property
|
||||||
|
def children(self):
|
||||||
|
if not hasattr(self, "_children"):
|
||||||
|
self._children = self.get_child_items()
|
||||||
|
return self._children
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"Item(path=\"{self._path}\" type={self.git_object_type} commit_id={self.commit_id})"
|
return f"Item(path=\"{self._path}\" type={self.git_object_type})"
|
||||||
|
|||||||
Reference in New Issue
Block a user