Implemented item indexer on Repository class.
This commit is contained in:
		
							
								
								
									
										46
									
								
								devops.py
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								devops.py
									
									
									
									
									
								
							@@ -1,3 +1,4 @@
 | 
			
		||||
from __future__ import annotations
 | 
			
		||||
import requests
 | 
			
		||||
import urllib.parse
 | 
			
		||||
from uuid import UUID
 | 
			
		||||
@@ -120,7 +121,7 @@ class Organization(DevOps):
 | 
			
		||||
                list_url="_apis/projects")
 | 
			
		||||
        return self._projects
 | 
			
		||||
 | 
			
		||||
    def __getitem__(self, key: str) -> 'Project':
 | 
			
		||||
    def __getitem__(self, key: str) -> Project:
 | 
			
		||||
        for project in self.projects:
 | 
			
		||||
            if project.id == key or project.name == key:
 | 
			
		||||
                return project
 | 
			
		||||
@@ -157,10 +158,18 @@ class Project(DevOps):
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def repositories(self):
 | 
			
		||||
        return self._entities(
 | 
			
		||||
            entity_class=Repository,
 | 
			
		||||
            key_name="id",
 | 
			
		||||
            list_url=f"{self._id}/_apis/git/repositories")
 | 
			
		||||
        if not hasattr(self, "_repositories"):
 | 
			
		||||
            self._repositories = self._entities(
 | 
			
		||||
                entity_class=Repository,
 | 
			
		||||
                key_name="id",
 | 
			
		||||
                list_url=f"{self._id}/_apis/git/repositories")
 | 
			
		||||
        return self._repositories
 | 
			
		||||
 | 
			
		||||
    def __getitem__(self, key: str) -> Repository:
 | 
			
		||||
        for repo in self.repositories:
 | 
			
		||||
            if repo.id == key or repo.name == key:
 | 
			
		||||
                return repo
 | 
			
		||||
        raise KeyError(f"Repository with ID or name '{key}' not found.")
 | 
			
		||||
 | 
			
		||||
@auto_properties({
 | 
			
		||||
    "name": "name",
 | 
			
		||||
@@ -209,16 +218,23 @@ class Repository(DevOps):
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def items(self):
 | 
			
		||||
        # GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?api-version=7.1
 | 
			
		||||
        return self._entities(
 | 
			
		||||
            entity_class=Item,
 | 
			
		||||
            key_name="path",
 | 
			
		||||
            list_url=f"{self._project.id}/_apis/git/repositories/{self._id}/items",
 | 
			
		||||
            params={
 | 
			
		||||
                "scopePath": "/",
 | 
			
		||||
                "recursionLevel": "oneLevel"
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
        if not hasattr(self, "_items"):
 | 
			
		||||
            self._items = self._entities(
 | 
			
		||||
                entity_class=Item,
 | 
			
		||||
                key_name="path",
 | 
			
		||||
                list_url=f"{self._project.id}/_apis/git/repositories/{self._id}/items",
 | 
			
		||||
                params={
 | 
			
		||||
                    "scopePath": "/",
 | 
			
		||||
                    "recursionLevel": "oneLevel"
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
        return self._items
 | 
			
		||||
 | 
			
		||||
    def __getitem__(self, key: str) -> Item:
 | 
			
		||||
        for item in self.items:
 | 
			
		||||
            if item.path == key:
 | 
			
		||||
                return item
 | 
			
		||||
        raise KeyError(f"Item with path '{key}' not found.")
 | 
			
		||||
 | 
			
		||||
@auto_properties({
 | 
			
		||||
    "object_id":       "objectId",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user