mirror of
				https://github.com/django/django.git
				synced 2025-10-30 09:06:13 +00:00 
			
		
		
		
	[1.8.x] Fixed #24897 -- Allowed using choices longer than 1 day with DurationField
Backport of 262d4db8c4 from master
			
			
This commit is contained in:
		| @@ -29,7 +29,7 @@ datetime_re = re.compile( | ||||
|  | ||||
| standard_duration_re = re.compile( | ||||
|     r'^' | ||||
|     r'(?:(?P<days>-?\d+) )?' | ||||
|     r'(?:(?P<days>-?\d+) (days?, )?)?' | ||||
|     r'((?:(?P<hours>\d+):)(?=\d+:\d+))?' | ||||
|     r'(?:(?P<minutes>\d+):)?' | ||||
|     r'(?P<seconds>\d+)' | ||||
|   | ||||
| @@ -40,3 +40,6 @@ Bugfixes | ||||
|  | ||||
| * Fixed queryset pickling when using ``prefetch_related()`` after deleting | ||||
|   objects (:ticket:`24831`). | ||||
|  | ||||
| * Allowed using ``choices`` longer than 1 day with ``DurationField`` | ||||
|   (:ticket:`24897`). | ||||
|   | ||||
| @@ -51,6 +51,20 @@ class DateParseTests(unittest.TestCase): | ||||
|  | ||||
|  | ||||
| class DurationParseTests(unittest.TestCase): | ||||
|  | ||||
|     def test_parse_python_format(self): | ||||
|         timedeltas = [ | ||||
|             timedelta(days=4, minutes=15, seconds=30, milliseconds=100),  # fractions of seconds | ||||
|             timedelta(hours=10, minutes=15, seconds=30),  # hours, minutes, seconds | ||||
|             timedelta(days=4, minutes=15, seconds=30),  # multiple days | ||||
|             timedelta(days=1, minutes=00, seconds=00),  # single day | ||||
|             timedelta(days=-4, minutes=15, seconds=30),  # negative durations | ||||
|             timedelta(minutes=15, seconds=30),  # minute & seconds | ||||
|             timedelta(seconds=30),  # seconds | ||||
|         ] | ||||
|         for delta in timedeltas: | ||||
|             self.assertEqual(parse_duration(format(delta)), delta) | ||||
|  | ||||
|     def test_seconds(self): | ||||
|         self.assertEqual(parse_duration('30'), timedelta(seconds=30)) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user