mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #7443: Corrected a long standing mistake in the timesince/timeuntil filters when using a parameter for 'now'. Thanks to Andrew Shearer <ashearerw@shearersoftware.com> for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8481 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -643,7 +643,7 @@ def timesince(value, arg=None): | |||||||
|     if not value: |     if not value: | ||||||
|         return u'' |         return u'' | ||||||
|     if arg: |     if arg: | ||||||
|         return timesince(arg, value) |         return timesince(value, arg) | ||||||
|     return timesince(value) |     return timesince(value) | ||||||
| timesince.is_safe = False | timesince.is_safe = False | ||||||
|  |  | ||||||
|   | |||||||
| @@ -373,6 +373,15 @@ u'12' | |||||||
| >>> timesince(datetime.datetime.now() - datetime.timedelta(1)) | >>> timesince(datetime.datetime.now() - datetime.timedelta(1)) | ||||||
| u'1 day' | u'1 day' | ||||||
|  |  | ||||||
|  | >>> timesince(datetime.datetime(2005, 12, 29), datetime.datetime(2005, 12, 30)) | ||||||
|  | u'1 day' | ||||||
|  |  | ||||||
|  | >>> timeuntil(datetime.datetime.now() + datetime.timedelta(1)) | ||||||
|  | u'1 day' | ||||||
|  |  | ||||||
|  | >>> timeuntil(datetime.datetime(2005, 12, 30), datetime.datetime(2005, 12, 29)) | ||||||
|  | u'1 day' | ||||||
|  |  | ||||||
| >>> default(u"val", u"default") | >>> default(u"val", u"default") | ||||||
| u'val' | u'val' | ||||||
|  |  | ||||||
|   | |||||||
| @@ -34,11 +34,17 @@ def get_filter_tests(): | |||||||
|         'filter-timesince03' : ('{{ a|timesince }}', {'a': datetime.now() - timedelta(hours=1, minutes=25, seconds = 10)}, '1 hour, 25 minutes'), |         'filter-timesince03' : ('{{ a|timesince }}', {'a': datetime.now() - timedelta(hours=1, minutes=25, seconds = 10)}, '1 hour, 25 minutes'), | ||||||
|  |  | ||||||
|         # Compare to a given parameter |         # Compare to a given parameter | ||||||
|         'filter-timesince04' : ('{{ a|timesince:b }}', {'a':now + timedelta(days=2), 'b':now + timedelta(days=1)}, '1 day'), |         'filter-timesince04' : ('{{ a|timesince:b }}', {'a':now - timedelta(days=2), 'b':now - timedelta(days=1)}, '1 day'), | ||||||
|         'filter-timesince05' : ('{{ a|timesince:b }}', {'a':now + timedelta(days=2, minutes=1), 'b':now + timedelta(days=2)}, '1 minute'), |         'filter-timesince05' : ('{{ a|timesince:b }}', {'a':now - timedelta(days=2, minutes=1), 'b':now - timedelta(days=2)}, '1 minute'), | ||||||
|  |  | ||||||
|         # Check that timezone is respected |         # Check that timezone is respected | ||||||
|         'filter-timesince06' : ('{{ a|timesince:b }}', {'a':now_tz + timedelta(hours=8), 'b':now_tz}, '8 hours'), |         'filter-timesince06' : ('{{ a|timesince:b }}', {'a':now_tz - timedelta(hours=8), 'b':now_tz}, '8 hours'), | ||||||
|  |  | ||||||
|  |         # Regression for #7443 | ||||||
|  |         'filter-timesince07': ('{{ earlier|timesince }}', { 'earlier': now - timedelta(days=7) }, '1 week'), | ||||||
|  |         'filter-timesince08': ('{{ earlier|timesince:now }}', { 'now': now, 'earlier': now - timedelta(days=7) }, '1 week'), | ||||||
|  |         'filter-timesince09': ('{{ later|timesince }}', { 'later': now + timedelta(days=7) }, '0 minutes'), | ||||||
|  |         'filter-timesince10': ('{{ later|timesince:now }}', { 'now': now, 'later': now + timedelta(days=7) }, '0 minutes'), | ||||||
|  |  | ||||||
|         # Default compare with datetime.now() |         # Default compare with datetime.now() | ||||||
|         'filter-timeuntil01' : ('{{ a|timeuntil }}', {'a':datetime.now() + timedelta(minutes=2, seconds = 10)}, '2 minutes'), |         'filter-timeuntil01' : ('{{ a|timeuntil }}', {'a':datetime.now() + timedelta(minutes=2, seconds = 10)}, '2 minutes'), | ||||||
| @@ -49,6 +55,13 @@ def get_filter_tests(): | |||||||
|         'filter-timeuntil04' : ('{{ a|timeuntil:b }}', {'a':now - timedelta(days=1), 'b':now - timedelta(days=2)}, '1 day'), |         'filter-timeuntil04' : ('{{ a|timeuntil:b }}', {'a':now - timedelta(days=1), 'b':now - timedelta(days=2)}, '1 day'), | ||||||
|         'filter-timeuntil05' : ('{{ a|timeuntil:b }}', {'a':now - timedelta(days=2), 'b':now - timedelta(days=2, minutes=1)}, '1 minute'), |         'filter-timeuntil05' : ('{{ a|timeuntil:b }}', {'a':now - timedelta(days=2), 'b':now - timedelta(days=2, minutes=1)}, '1 minute'), | ||||||
|  |  | ||||||
|  |         # Regression for #7443 | ||||||
|  |         'filter-timeuntil06': ('{{ earlier|timeuntil }}', { 'earlier': now - timedelta(days=7) }, '0 minutes'), | ||||||
|  |         'filter-timeuntil07': ('{{ earlier|timeuntil:now }}', { 'now': now, 'earlier': now - timedelta(days=7) }, '0 minutes'), | ||||||
|  |         'filter-timeuntil08': ('{{ later|timeuntil }}', { 'later': now + timedelta(days=7) }, '1 week'), | ||||||
|  |         'filter-timeuntil09': ('{{ later|timeuntil:now }}', { 'now': now, 'earlier': now - timedelta(days=7) }, '1 week'), | ||||||
|  |  | ||||||
|  |  | ||||||
|         'filter-addslash01': ("{% autoescape off %}{{ a|addslashes }} {{ b|addslashes }}{% endautoescape %}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"<a>\' <a>\'"), |         'filter-addslash01': ("{% autoescape off %}{{ a|addslashes }} {{ b|addslashes }}{% endautoescape %}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"<a>\' <a>\'"), | ||||||
|         'filter-addslash02': ("{{ a|addslashes }} {{ b|addslashes }}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"<a>\' <a>\'"), |         'filter-addslash02': ("{{ a|addslashes }} {{ b|addslashes }}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"<a>\' <a>\'"), | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user