Added finding projects by id and name using an indexer.
This commit is contained in:
10
devops.py
10
devops.py
@@ -113,10 +113,18 @@ class Organization(DevOps):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def projects(self):
|
def projects(self):
|
||||||
return self._entities(
|
if not hasattr(self, "_projects"):
|
||||||
|
self._projects = self._entities(
|
||||||
entity_class=Project,
|
entity_class=Project,
|
||||||
key_name="id",
|
key_name="id",
|
||||||
list_url="_apis/projects")
|
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",
|
||||||
|
|||||||
@@ -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"])
|
||||||
|
|||||||
15
tests.py
15
tests.py
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user