[Erp5-report] r43489 jm - in /erp5/trunk/products: ERP5Form/ ERP5Type/tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Feb 19 11:30:37 CET 2011


Author: jm
Date: Sat Feb 19 11:30:36 2011
New Revision: 43489

URL: http://svn.erp5.org?rev=43489&view=rev
Log:
Do not use hasattr to test a persistent object

Modified:
    erp5/trunk/products/ERP5Form/Report.py
    erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py

Modified: erp5/trunk/products/ERP5Form/Report.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/Report.py?rev=43489&r1=43488&r2=43489&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/Report.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/Report.py [utf8] Sat Feb 19 11:30:36 2011
@@ -322,12 +322,15 @@ class ReportSection:
     selection_list = [self.selection_name]
     # when the Form which is specified by form_id, has a listbox, make prefixed_selection_name.
     # which is based on specified selection_name in the listbox.
-    if self.getFormId() and hasattr(context[self.getFormId()], 'listbox') :
-      selection_name = context[self.getFormId()].listbox.get_value('selection_name')
-      if render_prefix is not None:
-        selection_name = '%s_%s' % (render_prefix, selection_name)
-        REQUEST.other['prefixed_selection_name'] = selection_name
-      selection_list += [selection_name]
+    form_id = self.getFormId()
+    if form_id:
+      listbox = getattr(context[form_id], 'listbox', None)
+      if listbox is not None:
+        selection_name = listbox.get_value('selection_name')
+        if render_prefix is not None:
+          selection_name = '%s_%s' % (render_prefix, selection_name)
+          REQUEST.other['prefixed_selection_name'] = selection_name
+        selection_list.append(selection_name)
     # save report's selection and orignal form's selection,
     #as ListBox will overwrite it
     for selection_name in filter(lambda x: x is not None, selection_list):
@@ -387,10 +390,12 @@ class ReportSection:
 
     portal_selections = context.portal_selections
     selection_list = []
-    if self.getFormId() and hasattr(context[self.getFormId()], 'listbox') :
-      selection_name = context[self.getFormId()].listbox.get_value('selection_name')
-      selection_list += [selection_name]
-    selection_list += [self.selection_name]
+    form_id = self.getFormId()
+    if form_id:
+      listbox = getattr(context[form_id], 'listbox', None)
+      if listbox is not None:
+        selection_list.append(listbox.get_value('selection_name'))
+    selection_list.append(self.selection_name)
     if self.temporary_selection:
       for selection_name in selection_list:
         if selection_name is not None:

Modified: erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py?rev=43489&r1=43488&r2=43489&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/ERP5TypeTestCase.py [utf8] Sat Feb 19 11:30:36 2011
@@ -1151,15 +1151,13 @@ class ERP5ReportTestCase(ERP5TypeTestCas
   def getReportSectionList(self, context, report_name):
     """Get the list of report sections in a report called on context."""
     report = getattr(context, report_name)
-    if hasattr(report, 'report_method'):
-      report_method = getattr(context, report.report_method)
-      return report_method()
-    else:
-      report_item_list = []
-      for reportbox in [field for field in report.get_fields()
-                        if field.getRecursiveTemplateField().meta_type == 'ReportBox']:
-        report_item_list.extend(reportbox.render())
-      return report_item_list
+    report_method = getattr(report, 'report_method', None)
+    if report_method:
+      return getattr(context, report_method)()
+    return sum([field.render()
+                for field in report.get_fields()
+                if field.getRecursiveTemplateField().meta_type == 'ReportBox'],
+               [])
 
   def getListBoxLineList(self, report_section):
     """Render the listbox in a report section, return None if no listbox exists



More information about the Erp5-report mailing list