board.py
76 lines
| 1.8 KiB
| text/x-python
|
PythonLexer
neko259
|
r320 | from django.core.urlresolvers import reverse | ||
from django.shortcuts import get_object_or_404 | ||||
from boards.models import Post | ||||
neko259
|
r537 | from boards.views import thread, api | ||
neko259
|
r320 | from django import template | ||
register = template.Library() | ||||
neko259
|
r460 | actions = [ | ||
{ | ||||
'name': 'google', | ||||
'link': 'http://google.com/searchbyimage?image_url=%s', | ||||
}, | ||||
{ | ||||
'name': 'iqdb', | ||||
'link': 'http://iqdb.org/?url=%s', | ||||
}, | ||||
] | ||||
neko259
|
r320 | |||
@register.simple_tag(name='post_url') | ||||
def post_url(*args, **kwargs): | ||||
post_id = args[0] | ||||
post = get_object_or_404(Post, id=post_id) | ||||
neko259
|
r400 | if not post.is_opening(): | ||
neko259
|
r542 | link = reverse('thread', kwargs={ | ||
neko259
|
r400 | 'post_id': post.thread_new.get_opening_post().id}) + '#' + str( | ||
post_id) | ||||
neko259
|
r320 | else: | ||
neko259
|
r542 | link = reverse('thread', kwargs={'post_id': post_id}) | ||
neko259
|
r320 | |||
return link | ||||
neko259
|
r460 | |||
@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 | ||||
neko259
|
r537 | |||
@register.inclusion_tag('boards/post.html', name='post_view') | ||||
neko259
|
r540 | def post_view(post, moderator=False): | ||
neko259
|
r538 | """ | ||
Get post | ||||
""" | ||||
neko259
|
r540 | return { | ||
'post': post, | ||||
'moderator': moderator, | ||||
} | ||||
neko259
|
r537 | |||
@register.inclusion_tag('boards/post.html', name='post_view_truncated') | ||||
neko259
|
r540 | def post_view_truncated(post, need_open_link=False, moderator=False): | ||
neko259
|
r538 | """ | ||
Get post with truncated text. If the 'open' or 'reply' link is needed, pass | ||||
the second parameter as True. | ||||
""" | ||||
neko259
|
r537 | return { | ||
'post': post, | ||||
'truncated': True, | ||||
neko259
|
r540 | 'need_open_link': need_open_link, | ||
'moderator': moderator, | ||||
neko259
|
r571 | } | ||