[Erp5-report] r24523 - in /erp5/trunk/products/ERP5Type: DateUtils.py tests/testDateUtils.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Nov 7 12:31:43 CET 2008
Author: nicolas
Date: Fri Nov 7 12:31:42 2008
New Revision: 24523
URL: http://svn.erp5.org?rev=24523&view=rev
Log:
* strftime return a string representation of date in timezone server.
This bug leads to produce unexpected result if timezone of day is changing.
use ISO() string representation instead
* rename some variables
* add test
Modified:
erp5/trunk/products/ERP5Type/DateUtils.py
erp5/trunk/products/ERP5Type/tests/testDateUtils.py
Modified: erp5/trunk/products/ERP5Type/DateUtils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/DateUtils.py?rev=24523&r1=24522&r2=24523&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/DateUtils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/DateUtils.py [utf8] Fri Nov 7 12:31:42 2008
@@ -242,31 +242,36 @@
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]))
-
- returned_value = {}
- for key, value in diff_value.items():
+ 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_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):
"""
Modified: erp5/trunk/products/ERP5Type/tests/testDateUtils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testDateUtils.py?rev=24523&r1=24522&r2=24523&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testDateUtils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testDateUtils.py [utf8] Fri Nov 7 12:31:42 2008
@@ -53,6 +53,7 @@
from DateTime import DateTime
from Products.ERP5Type.DateUtils import addToDate
+from Products.ERP5Type.DateUtils import getIntervalListBetweenDates
class TestDateUtils(unittest.TestCase):
"""
@@ -124,6 +125,41 @@
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))
More information about the Erp5-report
mailing list