from django.core.urlresolvers import reverse from django.shortcuts import get_object_or_404 from boards.models import Post from boards.views import thread, api from django import template register = template.Library() actions = [ { 'name': 'google', 'link': 'http://google.com/searchbyimage?image_url=%s', }, { 'name': 'iqdb', 'link': 'http://iqdb.org/?url=%s', }, ] @register.simple_tag(name='post_url') def post_url(*args, **kwargs): post_id = args[0] post = get_object_or_404(Post, id=post_id) if not post.is_opening(): link = reverse('thread', kwargs={ 'post_id': post.thread_new.get_opening_post().id}) + '#' + str( post_id) else: link = reverse('thread', kwargs={'post_id': post_id}) return link @register.simple_tag(name='image_actions') def image_actions(*args, **kwargs): image_link = args[0] if len(args) > 1: image_link = 'http://' + args[1] + image_link # TODO https? result = '' for action in actions: result += '[' + \ action['name'] + ']' return result @register.inclusion_tag('boards/post.html', name='post_view') def post_view(post, moderator=False, **kwargs): """ Get post """ if 'is_opening' in kwargs: is_opening = kwargs['is_opening'] else: is_opening = post.is_opening() if 'thread' in kwargs: thread = kwargs['thread'] else: thread = post.thread_new # if 'can_bump' in kwargs: # can_bump = kwargs['can_bump'] # else: can_bump = thread.can_bump() return { 'post': post, 'moderator': moderator, 'is_opening': is_opening, 'thread': thread, 'bumpable': can_bump, } @register.inclusion_tag('boards/post.html', name='post_view_truncated') def post_view_truncated(post, need_open_link=False, moderator=False, **kwargs): """ Get post with truncated text. If the 'open' or 'reply' link is needed, pass the second parameter as True. """ if 'is_opening' in kwargs: is_opening = kwargs['is_opening'] else: is_opening = post.is_opening() if 'thread' in kwargs: thread = kwargs['thread'] else: thread = post.thread_new if 'can_bump' in kwargs: can_bump = kwargs['can_bump'] else: can_bump = thread.can_bump() return { 'post': post, 'truncated': True, 'need_open_link': need_open_link, 'moderator': moderator, 'is_opening': is_opening, 'thread': thread, 'bumpable': can_bump, }