Code

Added additional shortcut functions
authorcajus <cajus@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 20 Nov 2009 10:00:14 +0000 (10:00 +0000)
committercajus <cajus@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 20 Nov 2009 10:00:14 +0000 (10:00 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14828 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-si/contrib/90_gosa.conf

index 53beacdeba7b5a31901e93d2b0927dba35f5a5d7..1ae7362c77758afc2c2c04f8f6776aa3b52ec2bf 100644 (file)
@@ -1,6 +1,8 @@
 ''' Add a couple of additional functions to retrieve needed information with
     just one call. '''
 
+logger= Logger()
+
 def getClientsInformation_listOfHashes(self, serverId=None, depotIds=[], groupId=None, productId=None, installationStatus=None, actionRequest=None, productVersion=None, packageVersion=None):
 
     # Get backend instance and load client list
@@ -14,6 +16,7 @@ def getClientsInformation_listOfHashes(self, serverId=None, depotIds=[], groupId
     return clients
 
 
+
 def getProductHostInformation_list(self, objectId=None, installationStatus=None, type='localboot'):
     result = []
 
@@ -42,6 +45,7 @@ def getProductHostInformation_list(self, objectId=None, installationStatus=None,
     return result
 
 
+
 def getProductInformation_list(self, installationStatus=None, type='localboot'):
     result = []
 
@@ -58,3 +62,74 @@ def getProductInformation_list(self, installationStatus=None, type='localboot'):
 
     return result
 
+
+def getFullProductHostInformation_list(self, objectId=None, installationStatus=None, type='localboot'):
+    result = []
+
+    # Load product ids
+    productIds= self.getProductIds_list(type, None, installationStatus)
+    
+    # Load product states
+    productStates= self.getProductStates_hash(objectId)
+
+    # Extend every entry by name and description
+    for productId in productIds:
+
+        # Add missing information to the productInfo
+        productInfo= self.getProduct_hash(productId)
+        productInfo['productId']= productId
+
+        # Find product entry
+        currentState= None
+        for state in productStates[objectId]:
+            if state['productId'] == productId:
+                currentState= state
+                break
+
+        # Add missing information to the productInfo
+        if currentState['installationStatus'] != "not_installed" or \
+            currentState['actionRequest'] == "setup":
+
+            # Add state for enabled products
+            productInfo['installationStatus']= currentState['installationStatus']
+            productInfo['actionRequest']= currentState['actionRequest']
+
+            # Add properties
+            productInfo['action']= self.getPossibleProductActions_list(productId)
+
+            # Load actual property values
+            propertyDefinitions= self.getProductPropertyDefinitions_listOfHashes(productId)
+            propertyValues= dict()
+            propertyDescriptions= dict()
+            propertyDefaults= dict()
+            
+            for property in propertyDefinitions:
+                if property.has_key('values'):
+                    propertyValues[property['name']]= property['values']
+                if property.has_key('description'):
+                    propertyDescriptions[property['name']]= property['description']
+                if property.has_key('default'):
+                    propertyDefaults[property['name']]= property['default']
+
+            # Load all properties and complete with values/descriptions
+            combinedProperties= dict()
+            productProperties= self.getProductProperties_hash(productId, objectId)
+            properties= productProperties.keys()
+            for property in properties:
+                combinedProperties[property]= dict()
+                if propertyDescriptions.has_key(property):
+                    combinedProperties[property]['description']= propertyDescriptions[property]
+                if propertyValues.has_key(property):
+                    combinedProperties[property]['values']= propertyValues[property]
+                if propertyDefaults.has_key(property):
+                    combinedProperties[property]['default']= propertyDefaults[property]
+                combinedProperties[property]['current']= productProperties[property]
+
+            # Add product properties to current product info
+            productInfo['properties']= combinedProperties
+
+        # Push information
+        result.append(productInfo)
+
+    return result
+