[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