Added finding projects by id and name using an indexer.

This commit is contained in:
2025-11-03 01:55:43 +01:00
parent 6bc913d43e
commit f43564d019
3 changed files with 31 additions and 8 deletions

View File

@@ -113,10 +113,18 @@ class Organization(DevOps):
@property @property
def projects(self): def projects(self):
return self._entities( if not hasattr(self, "_projects"):
entity_class=Project, self._projects = self._entities(
key_name="id", entity_class=Project,
list_url="_apis/projects") key_name="id",
list_url="_apis/projects")
return self._projects
def __getitem__(self, key: str) -> 'Project':
for project in self.projects:
if project.id == key or project.name == key:
return project
raise KeyError(f"Project with ID or name '{key}' not found.")
@auto_properties({ @auto_properties({
"name": "name", "name": "name",

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from devops import Organization, Project, Repository, Item, DEVOPS_SCOPE from devops import Organization
from azure.identity import DefaultAzureCredential org = Organization("https://dev.azure.com/mcovsandbox")
from json import dumps
import tests
# print(org.projects["bafe0cf1-6c97-4088-864a-ea6dc02b2727"].repositories["feac266f-84d2-41bc-839b-736925a85eaa"].items["/generate-pat.py"])
print(org["ADO Sandbox"])

View File

@@ -15,6 +15,21 @@ class Test01(unittest.TestCase):
org = self.org org = self.org
projects = list(org.projects) projects = list(org.projects)
self.assertGreater(len(projects), 0) self.assertGreater(len(projects), 0)
def test_02(self):
"""Getting a specific project by ID (object instantiation)"""
project = Project(self.org, id="bafe0cf1-6c97-4088-864a-ea6dc02b2727")
self.assertEqual(project.id, "bafe0cf1-6c97-4088-864a-ea6dc02b2727")
self.assertEqual(project.name, "ADO Sandbox")
def test_03(self):
"""Getting a specific project by name using org indexing (object retrieval)"""
project = self.org["ADO Sandbox"]
self.assertEqual(project.id, "bafe0cf1-6c97-4088-864a-ea6dc02b2727")
self.assertEqual(project.name, "ADO Sandbox")
def test_04(self):
"""Getting a specific project by ID using org indexing (object retrieval)"""
project = self.org["bafe0cf1-6c97-4088-864a-ea6dc02b2727"]
self.assertEqual(project.id, "bafe0cf1-6c97-4088-864a-ea6dc02b2727")
self.assertEqual(project.name, "ADO Sandbox")
class Test02(unittest.TestCase): class Test02(unittest.TestCase):
def setUp(self): def setUp(self):