Ticket #7201: 7201.4.diff
File 7201.4.diff, 7.9 KB (added by , 16 years ago) |
---|
-
django/utils/timesince.py
27 27 ) 28 28 # Convert datetime.date to datetime.datetime for comparison 29 29 if d.__class__ is not datetime.datetime: 30 d = datetime.datetime(d.year, d.month, d.day) 31 if now: 32 t = now.timetuple() 33 else: 34 t = time.localtime() 35 if d.tzinfo: 36 tz = LocalTimezone(d) 37 else: 38 tz = None 39 now = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], tzinfo=tz) 30 d = datetime.datetime(d.year, d.month, d.day) 40 31 32 if not now: 33 if d.tzinfo: 34 now = datetime.datetime.now(LocalTimezone(d)) 35 else: 36 now = datetime.datetime.now() 37 41 38 # ignore microsecond part of 'd' since we removed it from 'now' 42 39 delta = now - (d - datetime.timedelta(0, 0, d.microsecond)) 43 40 since = delta.days * 24 * 60 * 60 + delta.seconds … … 62 59 Like timesince, but returns a string measuring the time until 63 60 the given time. 64 61 """ 65 if now == None: 66 now = datetime.datetime.now() 62 if not now: 63 if d.tzinfo: 64 now = datetime.datetime.now(LocalTimezone(d)) 65 else: 66 now = datetime.datetime.now() 67 67 return timesince(now, d) -
django/template/defaultfilters.py
642 642 from django.utils.timesince import timesince 643 643 if not value: 644 644 return u'' 645 if arg: 646 return timesince(value, arg) 647 return timesince(value) 645 try: 646 if arg: 647 return timesince(value, arg) 648 return timesince(value) 649 except (ValueError, TypeError): 650 return u'' 648 651 timesince.is_safe = False 649 652 650 653 def timeuntil(value, arg=None): 651 654 """Formats a date as the time until that date (i.e. "4 days, 6 hours").""" 652 from django.utils.timesince import time since655 from django.utils.timesince import timeuntil 653 656 from datetime import datetime 654 657 if not value: 655 658 return u'' 656 if arg: 657 return timesince(arg, value) 658 return timesince(datetime.now(), value) 659 try: 660 return timeuntil(value, arg) 661 except (ValueError, TypeError): 662 return u'' 659 663 timeuntil.is_safe = False 660 664 661 665 ################### -
tests/regressiontests/templates/filters.py
9 9 10 10 from datetime import datetime, timedelta 11 11 12 from django.utils.tzinfo import LocalTimezone 12 from django.utils.tzinfo import LocalTimezone, FixedOffset 13 13 from django.utils.safestring import mark_safe 14 14 15 15 # These two classes are used to test auto-escaping of __unicode__ output. … … 20 20 class SafeClass: 21 21 def __unicode__(self): 22 22 return mark_safe(u'you > me') 23 23 24 24 # RESULT SYNTAX -- 25 25 # 'template_name': ('template contents', 'context dict', 26 26 # 'expected string output' or Exception class) 27 27 def get_filter_tests(): 28 28 now = datetime.now() 29 29 now_tz = datetime.now(LocalTimezone(now)) 30 now_tz_i = datetime.now(FixedOffset((3 * 60) + 15)) # imaginary time zone 30 31 return { 31 32 # Default compare with datetime.now() 32 33 'filter-timesince01' : ('{{ a|timesince }}', {'a': datetime.now() + timedelta(minutes=-1, seconds = -10)}, '1 minute'), … … 46 47 'filter-timesince09': ('{{ later|timesince }}', { 'later': now + timedelta(days=7) }, '0 minutes'), 47 48 'filter-timesince10': ('{{ later|timesince:now }}', { 'now': now, 'later': now + timedelta(days=7) }, '0 minutes'), 48 49 50 # Ensures that differing timezones are calculated correctly 51 'filter-timesince11' : ('{{ a|timesince }}', {'a': now}, '0 minutes'), 52 'filter-timesince12' : ('{{ a|timesince }}', {'a': now_tz}, '0 minutes'), 53 'filter-timesince13' : ('{{ a|timesince }}', {'a': now_tz_i}, '0 minutes'), 54 'filter-timesince14' : ('{{ a|timesince:b }}', {'a': now_tz, 'b': now_tz_i}, '0 minutes'), 55 'filter-timesince15' : ('{{ a|timesince:b }}', {'a': now, 'b': now_tz_i}, ''), 56 'filter-timesince16' : ('{{ a|timesince:b }}', {'a': now_tz_i, 'b': now}, ''), 57 49 58 # Default compare with datetime.now() 50 59 'filter-timeuntil01' : ('{{ a|timeuntil }}', {'a':datetime.now() + timedelta(minutes=2, seconds = 10)}, '2 minutes'), 51 60 'filter-timeuntil02' : ('{{ a|timeuntil }}', {'a':(datetime.now() + timedelta(days=1, seconds = 10))}, '1 day'), … … 61 70 'filter-timeuntil08': ('{{ later|timeuntil }}', { 'later': now + timedelta(days=7, hours=1) }, '1 week'), 62 71 'filter-timeuntil09': ('{{ later|timeuntil:now }}', { 'now': now, 'later': now + timedelta(days=7) }, '1 week'), 63 72 73 # Ensures that differing timezones are calculated correctly 74 'filter-timeuntil10' : ('{{ a|timeuntil }}', {'a': now_tz_i}, '0 minutes'), 75 'filter-timeuntil11' : ('{{ a|timeuntil:b }}', {'a': now_tz_i, 'b': now_tz}, '0 minutes'), 64 76 65 77 'filter-addslash01': ("{% autoescape off %}{{ a|addslashes }} {{ b|addslashes }}{% endautoescape %}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"<a>\' <a>\'"), 66 78 'filter-addslash02': ("{{ a|addslashes }} {{ b|addslashes }}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"<a>\' <a>\'"), -
tests/regressiontests/utils/timesince.py
1 1 """ 2 2 >>> from datetime import datetime, timedelta 3 >>> from django.utils.timesince import timesince 3 >>> from django.utils.timesince import timesince, timeuntil 4 >>> from django.utils.tzinfo import LocalTimezone, FixedOffset 4 5 5 6 >>> t = datetime(2007, 8, 14, 13, 46, 0) 6 7 … … 74 75 u'0 minutes' 75 76 >>> timesince(t, t-4*oneday-5*oneminute) 76 77 u'0 minutes' 78 79 # When using two different timezones. 80 >>> now = datetime.now() 81 >>> now_tz = datetime.now(LocalTimezone(now)) 82 >>> now_tz_i = datetime.now(FixedOffset((3 * 60) + 15)) 83 >>> timesince(now) 84 u'0 minutes' 85 >>> timesince(now_tz) 86 u'0 minutes' 87 >>> timeuntil(now_tz, now_tz_i) 88 u'0 minutes' 77 89 """ -
AUTHORS
88 88 Juan Manuel Caicedo <juan.manuel.caicedo@gmail.com> 89 89 Trevor Caira <trevor@caira.com> 90 90 Ricardo Javier Cárdenes Medina <ricardo.cardenes@gmail.com> 91 Jeremy Carbaugh <jcarbaugh@gmail.com> 91 92 Graham Carlyle <graham.carlyle@maplecroft.net> 92 93 Antonio Cavedoni <http://cavedoni.com/> 93 94 C8E -
docs/ref/templates/builtins.txt
1332 1332 June 2006, and ``comment_date`` is a date instance for 08:00 on 1 June 2006, 1333 1333 then ``{{ blog_date|timesince:comment_date }}`` would return "8 hours". 1334 1334 1335 Comparing offset-naive and offset-aware datetimes will return an empty string. 1336 1335 1337 Minutes is the smallest unit used, and "0 minutes" will be returned for any 1336 1338 date that is in the future relative to the comparison point. 1337 1339 … … 1349 1351 the comparison point (instead of *now*). If ``from_date`` contains 22 June 1350 1352 2006, then ``{{ conference_date|timeuntil:from_date }}`` will return "1 week". 1351 1353 1354 Comparing offset-naive and offset-aware datetimes will return an empty string. 1355 1352 1356 Minutes is the smallest unit used, and "0 minutes" will be returned for any 1353 1357 date that is in the past relative to the comparison point. 1354 1358