From 8b34682e5901d174645657e1c236ed79603fc0b7 Mon Sep 17 00:00:00 2001 From: Jason Secula Date: Sat, 25 Apr 2026 21:56:37 +0200 Subject: [PATCH] Added entities selection methods and updated profile selection methods --- GLPIAPI.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/GLPIAPI.py b/GLPIAPI.py index 9916b18..321ff62 100644 --- a/GLPIAPI.py +++ b/GLPIAPI.py @@ -12,6 +12,8 @@ class GLPIAPI: self.StatusCode = None self.Headers = None self.ActiveProfile = None + self.ActiveEntity = None + self.RecurseEntity = True self.InitConnection() if(Profile == None): self.ActiveProfile = self.GetActiveProfile()[0] @@ -40,11 +42,19 @@ class GLPIAPI: "App-Token": self.AppToken } if(self.GetActiveProfile()[0] != self.ActiveProfile and self.ActiveProfile != None): - profile = [p for p in self.GetUserProfiles()['myprofiles'] if p["name"] == self.ActiveProfile] + profile = [p for p in self.GetUserProfiles() if p["name"] == self.ActiveProfile] if(profile != []): self.SetActiveProfile(profile[0]["id"]) else: raise Exception(f"{self.ActiveProfile} is not in user profiles") + + ActiveEntities = self.GetActiveEntity() + if((ActiveEntities[0] != self.ActiveEntity or ActiveEntities[1] != self.RecurseEntity) and self.ActiveEntity != None): + entity = [e for e in self.GetUserEntities() if e["id"] == self.ActiveEntity] + if(entity != []): + self.SetActiveEntity(entity[0]["id"], self.RecurseEntity) + else: + raise Exception(f"{self.ActiveEntity} is not in user entities") else: raise Exception(f"{result.status_code} - {result.json()[0]}") @@ -60,7 +70,7 @@ class GLPIAPI: uri = f"{self.Server}/apirest.php/getMyProfiles" req = requests.get(uri, headers=self.Headers) if(req.status_code == 200): - return req.json() + return req.json()['myprofiles'] else: return req.status_code @@ -76,9 +86,8 @@ class GLPIAPI: def SetActiveProfile(self, profile): self.CheckConnection() if(type(profile) == str): - profileFound = [p for p in self.GetUserProfiles()['myprofiles'] if p["name"] == profile] + profileFound = [p for p in self.GetUserProfiles() if p["name"] == profile] if(profileFound != []): - print(profileFound) profileId = profileFound[0]["id"] else: profileId = profile @@ -87,7 +96,49 @@ class GLPIAPI: } uri = f"{self.Server}/apirest.php/changeActiveProfile" - return requests.post(uri, headers=self.Headers, json=body) + req = requests.post(uri, headers=self.Headers, json=body) + if(req.status_code == 200): + self.ActiveProfile = self.GetActiveProfile()[0] + return req.status_code + + def GetUserEntities(self): + self.CheckConnection() + uri = f"{self.Server}/apirest.php/getMyEntities" + req = requests.get(uri, headers=self.Headers) + if(req.status_code == 200): + return req.json()["myentities"] + else: + return req.status_code + + def GetActiveEntity(self): + self.CheckConnection() + uri = f"{self.Server}/apirest.php/getActiveEntities" + req = requests.get(uri, headers=self.Headers) + if(req.status_code == 200): + return (req.json()['active_entity']['id'], req.json()['active_entity']['active_entity_recursive'], req.json()['active_entity']['active_entities']) + else: + return req.status_code + + def SetActiveEntity(self, entity, recurse=True): + self.CheckConnection() + if(type(entity) == str): + entityFound = [e for e in self.GetUserEntities() if e["name"] == entity] + if(entityFound != []): + entityId = entityFound[0]["id"] + else: + entityId = entity + body = { + "entities_id" : entityId, + "is_recursive" : recurse + } + + uri = f"{self.Server}/apirest.php/changeActiveEntities" + req = requests.post(uri, headers=self.Headers, json=body) + if(req.status_code == 200): + ActiveEntities = self.GetActiveEntity() + self.ActiveEntity = ActiveEntities[0] + self.RecurseEntity = ActiveEntities[1] + return req.status_code def GetComputers(self, deviceName=None, serialNumber=None, user=None, imei=None, airwatchDevice=None, fieldsToDisplay=[], trashbin=0): '''