[Erp5-report] r18318 - /erp5/trunk/products/ERP5/Document/PaySheetModel.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Dec 13 21:41:29 CET 2007


Author: fabien
Date: Thu Dec 13 21:41:29 2007
New Revision: 18318

URL: http://svn.erp5.org?rev=18318&view=rev
Log:
add two method that permit to know all references depending on the model inheritance

Modified:
    erp5/trunk/products/ERP5/Document/PaySheetModel.py

Modified: erp5/trunk/products/ERP5/Document/PaySheetModel.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/PaySheetModel.py?rev=18318&r1=18317&r2=18318&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/PaySheetModel.py (original)
+++ erp5/trunk/products/ERP5/Document/PaySheetModel.py Thu Dec 13 21:41:29 2007
@@ -31,6 +31,7 @@
 from Products.ERP5Type import Permissions, PropertySheet
 from Products.ERP5.Document.TradeCondition import TradeCondition
 from Products.ERP5Type.XMLMatrix import XMLMatrix
+from zLOG import LOG, WARNING, DEBUG
 
 
 class PaySheetModel(TradeCondition, XMLMatrix):
@@ -65,3 +66,59 @@
                       , PropertySheet.DefaultAnnotationLine
                       )
 
+    def getReferenceList(self, portal_type_list):
+      '''
+        return all objects reference of the model wich portal_type is in the
+        portal_type_list
+      '''
+      reference_list = []
+      object_list = self.contentValues(portal_type=portal_type_list,
+          sort_on='id')
+
+      for object in object_list:
+        reference_method = getattr(object, 'getReference', None)
+        if reference_method is None:
+          LOG('PaySheetModel getReferenceList', 0, '%s have not '
+              'getReference method' % object.getTitle() or
+              object.getRelativeUrl())
+        else:
+          reference = reference_method()
+          if reference is not None:
+            reference_list.append(reference)
+          else:
+            LOG('PaySheetModel getReferenceList', 0, '%s reference '
+                'property is empty' % object.getTitle() or
+                object.getRelativeUrl())
+
+      return reference_list
+
+
+    def getInheritanceModelReferenceDict(self, model_reference_dict,
+        model_list, portal_type_list, reference_list):
+      '''
+        return a dict with the model url as key and a list of reference 
+        as value. Normaly, a Reference appear only one time in the final output
+      '''
+      # handle the case where just one model is given
+      if type(model_list) != type([]):
+        model_list = [model_list,]
+
+      for model in model_list:
+        model_reference_list=model.getReferenceList(portal_type_list)
+        unique_list = []
+
+        for reference in model_reference_list:
+          if reference not in reference_list:
+            reference_list.append(reference)
+            unique_list.append(reference)
+
+        model_reference_dict[model.getRelativeUrl()]=unique_list
+
+        new_model_list = model.getSpecialiseValueList()
+        model_reference_dict = self.getInheritanceModelReferenceDict(\
+            model_reference_dict=model_reference_dict,
+            model_list=new_model_list,
+            portal_type_list=portal_type_list,
+            reference_list=reference_list,)
+      return model_reference_dict
+




More information about the Erp5-report mailing list