home
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'<a href="/date/%s/">%s</a> %s' % (linkdate, date, date_time.split()[1])
except:
return date_time