Commit 0b2df3e6 authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki Committed by Jérome Perrin

py2/py3: explicitly cast dict keys to list.

parent fc3afbe3
......@@ -32,6 +32,7 @@ from DateTime import DateTime
from erp5.component.module.DateUtils import centis, getClosestDate, addToDate
from erp5.component.module.DateUtils import getDecimalNumberOfYearsBetween
from Products.ERP5Type import Permissions
from Products.ERP5Type.Utils import ensure_list
from erp5.component.mixin.RuleMixin import RuleMixin
from Products.CMFCore.utils import getToolByName
from erp5.component.document.ImmobilisationMovement import NO_CHANGE_METHOD
......@@ -659,8 +660,8 @@ class AmortisationRule(RuleMixin):
# according to these ratio : the highest ratio gets the priority, then the next
# highest is taken into account if corresponding resources are free, and so on
matching_ratio_list.sort(key=lambda x: x['ratio'], reverse=True)
calculated_to_match = calculated_period_dict.keys()
aggregated_to_match = aggregated_period_dict.keys()
calculated_to_match = ensure_list(calculated_period_dict.keys())
aggregated_to_match = ensure_list(aggregated_period_dict.keys())
match_dict = {}
for matching_ratio in matching_ratio_list:
calculated = matching_ratio['calculated_period']
......
......@@ -2947,7 +2947,7 @@ class TestImmobilisationMixin(ERP5TypeTestCase):
e_line = e_line_list[e_line_cursor]
wrong_line = 0
key_cursor = 0
key_list = e_line.keys()
key_list = list(e_line.keys())
while key_cursor < len(key_list) and not wrong_line:
key = key_list[key_cursor]
e_value = e_line[key]
......
......@@ -30,6 +30,7 @@
import zope.interface
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5Type.Utils import ensure_list
from Products.ERP5Type.XMLObject import XMLObject
from Products.CMFActivity.ActiveProcess import ActiveProcess
from Products.ERP5Type.UnrestrictedMethod import UnrestrictedMethod
......@@ -100,8 +101,7 @@ class SolverProcess(XMLObject, ActiveProcess):
if solver is None:
continue
solver_conviguration_dict = decision.getConfigurationPropertyDict()
configuration_mapping = solver_conviguration_dict.items()
configuration_mapping.sort() # Make sure the list is sorted in canonical way
configuration_mapping = sorted(solver_conviguration_dict.items()) # Make sure the list is sorted in canonical way
configuration_mapping = tuple(configuration_mapping)
for movement in decision.getDeliveryValueList():
# Detect incompatibilities
......@@ -164,8 +164,8 @@ class SolverProcess(XMLObject, ActiveProcess):
for solver, solver_key_dict in grouped_solver_dict.items():
for solver_key, solver_movement_dict in solver_key_dict.items():
solver_instance = self.newContent(portal_type=solver.getId())
solver_instance._setDeliveryValueList(solver_movement_dict.keys())
for movement, configuration_list in solver_movement_dict.iteritems():
solver_instance._setDeliveryValueList(ensure_list(solver_movement_dict.keys()))
for movement, configuration_list in six.iteritems(solver_movement_dict):
for configuration_mapping in configuration_list:
if len(configuration_mapping):
solver_instance.updateConfiguration(**dict(configuration_mapping))
......
......@@ -34,6 +34,7 @@ from AccessControl import ClassSecurityInfo
from DateTime import DateTime
from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5Type.Utils import ensure_list
from erp5.component.interface.IImmobilisationItem import IImmobilisationItem
from erp5.component.module.DateUtils import addToDate, getClosestDate, roundDate
from erp5.component.module.DateUtils import getRoundedMonthBetween, millis
......@@ -569,7 +570,7 @@ class ImmobilisableItem(Item, Amount):
extra_cost_price = current_immo_period.get('start_extra_cost_price')
main_price = current_immo_period.get('start_main_price')
current_immo_period['start_price'] = (main_price or 0.) + (extra_cost_price or 0.)
key_list = current_immo_period.keys()
key_list = ensure_list(current_immo_period.keys())
for key in key_list:
value = current_immo_period[key]
if key.find('_') != -1:
......@@ -578,7 +579,7 @@ class ImmobilisableItem(Item, Amount):
else:
# A period wich is alone only copies start values to initial ones
# So it may be invalid later
key_list = current_immo_period.keys()
key_list = ensure_list(current_immo_period.keys())
for key in key_list:
value = current_immo_period[key]
if key.find('_') != -1:
......
......@@ -32,6 +32,7 @@ from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, interfaces
from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
from Products.ERP5Type.Utils import ensure_list
from erp5.component.document.Movement import Movement
from erp5.component.module.ExpandPolicy import policy_dict, TREE_DELIVERED_CACHE_KEY
......@@ -287,7 +288,7 @@ class SimulationMovement(PropertyRecordableMixin, Movement, ExplainableMixin):
# applicable rule per reference. It indicates a configuration error.
applicable_rule_dict.setdefault(reference, rule)
applicable_rule_list = applicable_rule_dict.values()
applicable_rule_list = ensure_list(applicable_rule_dict.values())
for applied_rule in list(self.objectValues()):
rule = applied_rule.getSpecialiseValue()
try:
......
......@@ -30,6 +30,7 @@
from warnings import warn
from Products.PythonScripts.Utility import allow_class
from Products.ERP5Type.Utils import ensure_list
class FakeMovementError(Exception) : pass
class MovementGroupError(Exception) : pass
......@@ -110,7 +111,7 @@ class MovementGroupNode:
Get property dict for the futur created object
"""
property_dict = getattr(self, '_property_dict', {}).copy()
for key in property_dict.keys():
for key in ensure_list(property_dict.keys()):
if key.startswith('_'):
del(property_dict[key])
return property_dict
......
......@@ -43,7 +43,7 @@ class TestOOoParser(unittest.TestCase):
parser = OOoParser()
parser.openFile(open(makeFilePath('import_data_list.ods'), 'rb'))
mapping = parser.getSpreadsheetsMapping()
self.assertEqual(['Person'], mapping.keys())
self.assertEqual(['Person'], list(mapping.keys()))
person_mapping = mapping['Person']
self.assertTrue(isinstance(person_mapping, list))
self.assertTrue(102, len(person_mapping))
......@@ -57,13 +57,13 @@ class TestOOoParser(unittest.TestCase):
parser.openFromString(
open(makeFilePath('import_data_list.ods'), 'rb').read())
mapping = parser.getSpreadsheetsMapping()
self.assertEqual(['Person'], mapping.keys())
self.assertEqual(['Person'], list(mapping.keys()))
def test_getSpreadSheetMappingStyle(self):
parser = OOoParser()
parser.openFile(open(makeFilePath('import_data_list_with_style.ods'), 'rb'))
mapping = parser.getSpreadsheetsMapping()
self.assertEqual(['Feuille1'], mapping.keys())
self.assertEqual(['Feuille1'], list(mapping.keys()))
self.assertEqual(mapping['Feuille1'][1],
['a line with style'])
self.assertEqual(mapping['Feuille1'][2],
......@@ -77,7 +77,7 @@ class TestOOoParser(unittest.TestCase):
parser = OOoParser()
parser.openFile(open(makeFilePath('import_data_list_data_type.ods'), 'rb'))
mapping = parser.getSpreadsheetsMapping()
self.assertEqual(['Feuille1'], mapping.keys())
self.assertEqual(['Feuille1'], list(mapping.keys()))
self.assertEqual(mapping['Feuille1'][0],
['1234.5678'])
self.assertEqual(mapping['Feuille1'][1],
......@@ -110,7 +110,7 @@ class TestOOoParser(unittest.TestCase):
parser = OOoParser()
parser.openFile(open(makeFilePath('complex_text.ods'), 'rb'))
mapping = parser.getSpreadsheetsMapping()
self.assertEqual(['Feuille1'], mapping.keys())
self.assertEqual(['Feuille1'], list(mapping.keys()))
self.assertEqual(mapping['Feuille1'][0], [' leading space'])
self.assertEqual(mapping['Feuille1'][1], [' leading space'])
self.assertEqual(mapping['Feuille1'][2], ['tab\t'])
......@@ -120,7 +120,7 @@ class TestOOoParser(unittest.TestCase):
parser = OOoParser()
parser.openFile(open(makeFilePath('empty_cells.ods'), 'rb'))
mapping = parser.getSpreadsheetsMapping()
self.assertEqual(['Feuille1'], mapping.keys())
self.assertEqual(['Feuille1'], list(mapping.keys()))
self.assertEqual(mapping['Feuille1'],
[
['A1', None, 'C1'],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment