Changeset 255 for trunk/datetime

Show
Ignore:
Timestamp:
07/04/08 15:10:54 (2 years ago)
Author:
akaihola
Message:

[ambidatetime] Re-factored the duration formatting filter and added one with an alternate syntax (apostrophe for minutes).

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/datetime/templatetags/ambidatetime.py

    r131 r255  
    55from django.utils.translation import ungettext 
    66from django.template import Library 
     7from django.utils.safestring import mark_safe 
    78register = Library() 
    89 
     
    4041 
    4142 
    42 @register.filter 
    43 def durationHMIN(value): 
     43def format_duration(value, hour_symbol, minute_symbol): 
    4444    try: 
    4545        value = Duration(value) 
     
    4747        pass 
    4848    if value.hour and value.minute: 
    49         return '%dh%dmin' % (value.hour, value.minute) 
     49        return '%d%s%d%s' % ( 
     50            value.hour, hour_symbol, value.minute, minute_symbol) 
    5051    elif value.hour: 
    51         return '%dh' % value.hour 
     52        return '%d%s' % (value.hour, hour_symbol) 
    5253    else: 
    53         return '%dmin' % value.minute 
     54        return '%d%s' % (value.minute, minute_symbol) 
     55 
     56 
     57@register.filter 
     58def durationHMIN(value): 
     59    """ 
     60    >>> from datetime import timedelta 
     61    >>> print durationHMIN(timedelta(0, 7205)) 
     62    2h 
     63    >>> print durationHMIN(timedelta(0, 3590)) 
     64    59min 
     65    >>> print durationHMIN(timedelta(0, 359)) 
     66    5min 
     67    """ 
     68    return format_duration(value, 'h', 'min') 
     69 
     70 
     71@register.filter 
     72def durationHMINsymb(value): 
     73    """ 
     74    >>> from datetime import timedelta 
     75    >>> print durationHMINsymb(timedelta(0, 7205)) 
     76    2h 
     77    >>> print durationHMINsymb(timedelta(0, 3590)) 
     78    59' 
     79    >>> print durationHMINsymb(timedelta(0, 359)) 
     80    5' 
     81    """ 
     82    return mark_safe(format_duration(value, "h", "'")) 
     83durationHMINsymb.is_safe = True 
     84 
     85 
     86if __name__ == '__main__': 
     87    from doctest import testmod 
     88    testmod()