from django import template register = template.Library() @register.tag(name="link_to_date") def do_link_to_date(parser, token): try: tag_name, date_time, link_type = token.contents.split() except ValueError: msg = '%r tag requires a single argument' % token.contents[0] raise template.TemplateSyntaxError(msg) date_time = parser.compile_filter(date_time) return LinkToDateNode(date_time, link_type[1:-1]) class LinkToDateNode(template.Node): def __init__(self, date_time, link_type): self.date_time = date_time self.link_type = link_type def render(self, context): try: date_time = unicode(self.date_time.resolve(context, True)) except template.VariableDoesNotExist: date_time = u'' try: if self.link_type == 'day': date = date_time.split()[0] linkdate = u'/'.join(date.split('-')[0:3]) elif self.link_type == 'month': date = date_time.split()[0] linkdate = u'/'.join(date.split('-')[0:2]) elif self.link_type == 'year': date = date_time.split()[0] linkdate = u'/'.join(date.split('-')[0:1]) return u'%s %s' % (linkdate, date, date_time.split()[1]) except: return date_timek