|
|
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 += '[<a href="' + action['link'] % image_link + '">' + \
|
|
|
action['name'] + '</a>]'
|
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
@register.inclusion_tag('boards/post.html', name='post_view')
|
|
|
def post_view(post, moderator=False):
|
|
|
"""
|
|
|
Get post
|
|
|
"""
|
|
|
|
|
|
return {
|
|
|
'post': post,
|
|
|
'moderator': moderator,
|
|
|
}
|
|
|
|
|
|
|
|
|
@register.inclusion_tag('boards/post.html', name='post_view_truncated')
|
|
|
def post_view_truncated(post, need_open_link=False, moderator=False):
|
|
|
"""
|
|
|
Get post with truncated text. If the 'open' or 'reply' link is needed, pass
|
|
|
the second parameter as True.
|
|
|
"""
|
|
|
|
|
|
return {
|
|
|
'post': post,
|
|
|
'truncated': True,
|
|
|
'need_open_link': need_open_link,
|
|
|
'moderator': moderator,
|
|
|
}
|