diff --git a/product/ERP5/Tool/SimulationTool.py b/product/ERP5/Tool/SimulationTool.py index e1e2ee6721d23efd5b0cdbe61b3a3790a91ff922..9ef341f8801b839892195ba8ead7198e85c27795 100644 --- a/product/ERP5/Tool/SimulationTool.py +++ b/product/ERP5/Tool/SimulationTool.py @@ -272,138 +272,142 @@ class SimulationTool (BaseTool): new_kw[table + '.node_uid'] = node_uid resource_uid_list = self._generatePropertyUidList(resource) - if len(resource_uid_list) : + if resource_uid_list: new_kw[table + '.resource_uid'] = resource_uid_list item_uid_list = self._generatePropertyUidList(item) - if len(item_uid_list) : + if item_uid_list: new_kw[table + '.aggregate_uid'] = item_uid_list node_uid_list = self._generatePropertyUidList(node) - if len(node_uid_list) : + if node_uid_list: new_kw[table + '.node_uid'] = node_uid_list payment_uid_list = self._generatePropertyUidList(payment) - if len(payment_uid_list) : + if payment_uid_list: new_kw[table + '.payment_uid'] = payment_uid_list section_uid_list = self._generatePropertyUidList(section) - if len(section_uid_list) : + if section_uid_list: new_kw[table + '.section_uid'] = section_uid_list mirror_section_uid_list = self._generatePropertyUidList(mirror_section) - if len(mirror_section_uid_list) : + if mirror_section_uid_list: new_kw[table + '.mirror_section_uid'] = mirror_section_uid_list variation_text_list = self._generatePropertyUidList(variation_text, as_text=1) - if len(variation_text_list) : + if variation_text_list: new_kw[table + '.variation_text'] = variation_text_list sub_variation_text_list = self._generatePropertyUidList( sub_variation_text, as_text=1) - if len(sub_variation_text_list) : + if sub_variation_text_list: new_kw[table + '.sub_variation_text'] = sub_variation_text_list # category membership resource_category_uid_list = self._generatePropertyUidList( resource_category) - if len(resource_category_uid_list) : + if resource_category_uid_list: new_kw[table + '_resource_category_uid'] = resource_category_uid_list node_category_uid_list = self._generatePropertyUidList(node_category) - if len(node_category_uid_list) : + if node_category_uid_list: new_kw[table + '_node_category_uid'] = node_category_uid_list payment_category_uid_list = self._generatePropertyUidList(payment_category) - if len(payment_category_uid_list) : + if payment_category_uid_list: new_kw[table + '_payment_category_uid'] = payment_category_uid_list section_category_uid_list = self._generatePropertyUidList(section_category) - if len(section_category_uid_list) : + if section_category_uid_list: new_kw[table + '_section_category_uid'] = section_category_uid_list mirror_section_category_uid_list = self._generatePropertyUidList( mirror_section_category) - if len(mirror_section_category_uid_list) : + if mirror_section_category_uid_list: new_kw[table + '_mirror_section_category_uid'] =\ mirror_section_category_uid_list # category strict membership resource_category_strict_membership_uid_list =\ self._generatePropertyUidList(resource_category_strict_membership) - if len(resource_category_strict_membership_uid_list) : + if resource_category_strict_membership_uid_list: new_kw[table + '_resource_category_strict_membership_uid'] =\ resource_category_strict_membership_uid_list node_category_strict_membership_uid_list =\ self._generatePropertyUidList(node_category_strict_membership) - if len(node_category_strict_membership_uid_list) : + if node_category_strict_membership_uid_list: new_kw[table + '_node_category_strict_membership_uid'] =\ node_category_strict_membership_uid_list payment_category_strict_membership_uid_list =\ self._generatePropertyUidList(payment_category_strict_membership) - if len(payment_category_strict_membership_uid_list) : + if payment_category_strict_membership_uid_list: new_kw[table + '_payment_category_strict_membership_uid'] =\ payment_category_strict_membership_uid_list section_category_strict_membership_uid_list =\ self._generatePropertyUidList(section_category_strict_membership) - if len(section_category_strict_membership_uid_list) : + if section_category_strict_membership_uid_list: new_kw[table + '_section_category_strict_membership_uid'] =\ section_category_strict_membership_uid_list mirror_section_category_strict_membership_uid_list =\ self._generatePropertyUidList( mirror_section_category_strict_membership) - if len(mirror_section_category_strict_membership_uid_list) : + if mirror_section_category_strict_membership_uid_list: new_kw[table + '_mirror_section_category_strict_membership_uid'] =\ mirror_section_category_strict_membership_uid_list #variation_category_uid_list = self._generatePropertyUidList(variation_category) #if len(variation_category_uid_list) : # new_kw['variationCategory'] = variation_category_uid_list - + + string_or_list = (str, list, tuple) # Simulation States # If strict_simulation_state is set, we directly put it into the dictionary if strict_simulation_state: - if type(simulation_state) in [type(''),type([]),type(())]: - if len(simulation_state): - new_kw['simulation_state'] = simulation_state + if isinstance(simulation_state, string_or_list)\ + and simulation_state: + new_kw['simulation_state'] = simulation_state else: # first, we evaluate simulation_state - if (type(simulation_state) is type('')) or (type(simulation_state) is type([])) or (type(simulation_state) is type(())) : - if len(simulation_state) : - sql_kw['input_simulation_state'] = simulation_state - sql_kw['output_simulation_state'] = simulation_state - # then, if omit_transit == 1, we evaluate (simulation_state - transit_simulation_state) for input_simulation_state - if omit_transit == 1 : - if (type(simulation_state) is type('')) or (type(simulation_state) is type([])) or (type(simulation_state) is type(())) : - if len(simulation_state) : - if (type(transit_simulation_state) is type('')) or (type(transit_simulation_state) is type([])) or (type(transit_simulation_state) is type(())) : - if len(transit_simulation_state) : - # when we know both are usable, we try to calculate (simulation_state - transit_simulation_state) - if type(simulation_state) is type('') : - simulation_state = [simulation_state] - if type(transit_simulation_state) is type('') : - transit_simulation_state = [transit_simulation_state] - delivered_simulation_state_list = [] - for state in simulation_state : - if state not in transit_simulation_state : - delivered_simulation_state_list.append(state) - sql_kw['input_simulation_state'] = delivered_simulation_state_list - # alternatively, the user can directly define input_simulation_state and output_simulation_state - if (type(input_simulation_state) is type('')) or (type(input_simulation_state) is type([])) or (type(input_simulation_state) is type(())) : - if len(input_simulation_state) : - sql_kw['input_simulation_state'] = input_simulation_state - if (type(output_simulation_state) is type('')) or (type(output_simulation_state) is type([])) or (type(output_simulation_state) is type(())) : - if len(output_simulation_state) : - sql_kw['output_simulation_state'] = output_simulation_state - if type(sql_kw.get('input_simulation_state')) is type('') : - sql_kw['input_simulation_state'] = [sql_kw['input_simulation_state']] - if type(sql_kw.get('output_simulation_state')) is type('') : - sql_kw['output_simulation_state'] = [sql_kw['output_simulation_state']] + if simulation_state and isinstance(simulation_state, string_or_list): + sql_kw['input_simulation_state'] = simulation_state + sql_kw['output_simulation_state'] = simulation_state + # then, if omit_transit == 1, we evaluate (simulation_state - + # transit_simulation_state) for input_simulation_state + if omit_transit: + if isinstance(simulation_state, string_or_list)\ + and simulation_state: + if isinstance(transit_simulation_state, string_or_list)\ + and transit_simulation_state: + # when we know both are usable, we try to calculate + # (simulation_state - transit_simulation_state) + if isinstance(simulation_state, str): + simulation_state = [simulation_state] + if isinstance(transit_simulation_state, str) : + transit_simulation_state = [transit_simulation_state] + delivered_simulation_state_list = [] + for state in simulation_state : + if state not in transit_simulation_state : + delivered_simulation_state_list.append(state) + sql_kw['input_simulation_state'] = delivered_simulation_state_list + + # alternatively, the user can directly define input_simulation_state + # and output_simulation_state + if input_simulation_state and isinstance(input_simulation_state, + string_or_list): + if isinstance(input_simulation_state, str): + input_simulation_state = [input_simulation_state] + sql_kw['input_simulation_state'] = input_simulation_state + if output_simulation_state and isinstance(output_simulation_state, + string_or_list): + if isinstance(output_simulation_state, str): + output_simulation_state = [output_simulation_state] + sql_kw['output_simulation_state'] = output_simulation_state # It is necessary to use here another SQL query (or at least a subquery) # to get _DISTINCT_ uid from predicate_category table. @@ -412,7 +416,7 @@ class SimulationTool (BaseTool): # inventory is false # XXX Perhaps is there a better solution add_kw = {} - if variation_category is not None and len(variation_category)>0: + if variation_category is not None and variation_category: where_expression = self.getPortalObject().portal_categories\ .buildSQLSelector( category_list = variation_category,