diff --git a/product/ERP5Type/DateUtils.py b/product/ERP5Type/DateUtils.py index 46888925238182c92ac9ff1bb3e01b93ce3454c7..c5c9e94a22c3012148d6baf6b56d78ac093a7bad 100644 --- a/product/ERP5Type/DateUtils.py +++ b/product/ERP5Type/DateUtils.py @@ -242,31 +242,36 @@ def getIntervalListBetweenDates(from_date=None, to_date=None, else: to_inverse = 0 - diff_value = {} - for key in keys.keys(): - if key: - diff_value[key] = [] + diff_value_dict = {} for current_key in ('year', 'month', 'week', 'day'): if keys.get(current_key, None): new_date = from_date while new_date <= to_date: - diff_value[current_key].append(new_date.strftime(format_dict[current_key])) + if current_key == 'day': + new_strftime = new_date.ISO() + new_strftime = new_strftime[:new_strftime.index(' ')] + diff_value_dict.setdefault(current_key, []).append(new_strftime) + else: + diff_value_dict.setdefault(current_key, + []).append(new_date.strftime(format_dict[current_key])) if current_key == "week": new_date = addToDate(new_date, to_add={'day':7}) else: new_date = addToDate(new_date, to_add={current_key:1}) - if to_date.strftime(format_dict[current_key]) not in diff_value[current_key]: - diff_value[current_key].append(to_date.strftime(format_dict[current_key])) + if to_date.strftime(format_dict[current_key]) not in\ + diff_value_dict[current_key]: + diff_value_dict.setdefault(current_key, + []).append(to_date.strftime(format_dict[current_key])) - returned_value = {} - for key, value in diff_value.items(): + returned_value_dict = {} + for key, value in diff_value_dict.iteritems(): if to_inverse: value.reverse() - returned_value[key] = value + returned_value_dict[key] = value else: - returned_value[key] = value - return returned_value + returned_value_dict[key] = value + return returned_value_dict def getMonthAndDaysBetween(from_date=None, to_date=None): """ diff --git a/product/ERP5Type/tests/testDateUtils.py b/product/ERP5Type/tests/testDateUtils.py index dce3eb94b76d61792ba6662c4ffa53a1885f344c..ad4b5e9e167ed1c1b0b74ac8602a8183020dfcbc 100644 --- a/product/ERP5Type/tests/testDateUtils.py +++ b/product/ERP5Type/tests/testDateUtils.py @@ -53,6 +53,7 @@ ZopeTestCase.installProduct('ERP5Type') from DateTime import DateTime from Products.ERP5Type.DateUtils import addToDate +from Products.ERP5Type.DateUtils import getIntervalListBetweenDates class TestDateUtils(unittest.TestCase): """ @@ -124,6 +125,41 @@ class TestDateUtils(unittest.TestCase): self.assertEqual(DateTime('2004/09/16 01:23:54 %s' % self.timezone).toZone('UTC').ISO(), addToDate(complex_date, year=0.5).toZone('UTC').ISO()) + def test_interval_list_between_dates(self): + from_date = DateTime('2008/10/23') + to_date = DateTime('2008/11/03') + aggregation_level = 'day' + interval_list_dict = getIntervalListBetweenDates(from_date=from_date, + to_date=to_date, + keys={'day':True}) + date_list = interval_list_dict.get('day') + self.assertEqual(len(date_list), 12) + for index, date in enumerate(date_list): + if index == 0: + self.assertEqual(date, '2008-10-23') + elif index == 1: + self.assertEqual(date, '2008-10-24') + elif index == 2: + self.assertEqual(date, '2008-10-25') + elif index == 3: + self.assertEqual(date, '2008-10-26') + elif index == 4: + self.assertEqual(date, '2008-10-27') + elif index == 5: + self.assertEqual(date, '2008-10-28') + elif index == 6: + self.assertEqual(date, '2008-10-29') + elif index == 7: + self.assertEqual(date, '2008-10-30') + elif index == 8: + self.assertEqual(date, '2008-10-31') + elif index == 9: + self.assertEqual(date, '2008-11-01') + elif index == 10: + self.assertEqual(date, '2008-11-02') + elif index == 11: + self.assertEqual(date, '2008-11-03') + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestDateUtils))