Added finding projects by id and name using an indexer.
This commit is contained in:
		
							
								
								
									
										16
									
								
								devops.py
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								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"):
 | 
				
			||||||
            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",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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