Changeset 8579
- Timestamp:
- 08/26/08 03:08:55 (3 months ago)
- Files:
-
- django/trunk/AUTHORS (modified) (1 diff)
- django/trunk/django/template/defaultfilters.py (modified) (1 diff)
- django/trunk/django/utils/timesince.py (modified) (2 diffs)
- django/trunk/docs/ref/templates/builtins.txt (modified) (2 diffs)
- django/trunk/tests/regressiontests/templates/filters.py (modified) (4 diffs)
- django/trunk/tests/regressiontests/utils/timesince.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/AUTHORS
r8578 r8579 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/> django/trunk/django/template/defaultfilters.py
r8577 r8579 647 647 if not value: 648 648 return u'' 649 if arg: 650 return timesince(value, arg) 651 return timesince(value) 649 try: 650 if arg: 651 return timesince(value, arg) 652 return timesince(value) 653 except (ValueError, TypeError): 654 return u'' 652 655 timesince.is_safe = False 653 656 654 657 def timeuntil(value, arg=None): 655 658 """Formats a date as the time until that date (i.e. "4 days, 6 hours").""" 656 from django.utils.timesince import time since659 from django.utils.timesince import timeuntil 657 660 from datetime import datetime 658 661 if not value: 659 662 return u'' 660 if arg: 661 return timesince(arg, value) 662 return timesince(datetime.now(), value) 663 try: 664 return timeuntil(value, arg) 665 except (ValueError, TypeError): 666 return u'' 663 667 timeuntil.is_safe = False 664 668 django/trunk/django/utils/timesince.py
r6368 r8579 29 29 if d.__class__ is not datetime.datetime: 30 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) 31 32 if not now: 33 if d.tzinfo: 34 now = datetime.datetime.now(LocalTimezone(d)) 35 else: 36 now = datetime.datetime.now() 40 37 41 38 # ignore microsecond part of 'd' since we removed it from 'now' … … 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/trunk/docs/ref/templates/builtins.txt
r8535 r8579 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. … … 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". 1353 1354 Comparing offset-naive and offset-aware datetimes will return an empty string. 1351 1355 1352 1356 Minutes is the smallest unit used, and "0 minutes" will be returned for any django/trunk/tests/regressiontests/templates/filters.py
r8577 r8579 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 … … 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() … … 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'), … … 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>\'"), django/trunk/tests/regressiontests/utils/timesince.py
r7294 r8579 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) … … 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 """
