snipt/snipts/templatetags/snipt_tags.py

69 lines
1.5 KiB
Python
Raw Normal View History

2015-07-24 18:39:25 -07:00
import hashlib
2012-04-12 19:04:37 -07:00
2015-07-24 18:39:25 -07:00
from django import template
2012-04-16 15:52:49 -07:00
from snipts.models import Favorite, Snipt
2012-05-15 17:10:50 -07:00
from snipts.utils import get_lexers_list
2015-07-24 18:39:25 -07:00
from templatetag_sugar.parser import Variable, Constant
from templatetag_sugar.register import tag
2012-04-12 14:28:30 -07:00
2012-04-22 20:03:50 -07:00
register = template.Library()
2012-04-12 14:28:30 -07:00
2015-07-24 18:28:31 -07:00
2012-04-12 19:04:37 -07:00
@tag(register, [Constant('as'), Variable()])
def snipt_is_favorited_by_user(context, asvar):
user = context['request'].user
snipt = context['snipt']
is_favorited = False
if user.is_authenticated():
if snipt.user != user:
try:
is_favorited = Favorite.objects.get(snipt=snipt, user=user).id
except Favorite.DoesNotExist:
pass
context[asvar] = is_favorited
return ''
2012-04-13 10:01:28 -07:00
2015-07-24 18:28:31 -07:00
2012-04-16 15:52:49 -07:00
@tag(register, [])
def snipts_count_for_user(context):
user = context['request'].user
if user.is_authenticated():
snipts = Snipt.objects.filter(user=user).values('id').count()
else:
snipts = 0
return snipts
2015-07-24 18:28:31 -07:00
2012-04-22 20:03:50 -07:00
@tag(register, [Constant('as'), Variable()])
def get_lexers(context, asvar):
2012-05-15 17:10:50 -07:00
context[asvar] = get_lexers_list()
2012-04-22 20:03:50 -07:00
return ''
2015-07-24 18:28:31 -07:00
2012-07-23 07:43:19 -07:00
@tag(register, [Constant('for'), Variable()])
def generate_line_numbers(context, line_numbers):
html = ''
for i in range(1, line_numbers + 1):
html = html + '<span class="special">{}</span>'.format(i)
return html
2012-04-16 15:52:49 -07:00
2015-07-24 18:28:31 -07:00
2012-04-13 10:01:28 -07:00
@register.filter
def md5(string):
2015-11-13 12:48:57 -08:00
return hashlib.md5(string.lower().encode('utf-8')).hexdigest()
@register.filter
def is_authorized_user(snipt, user):
return snipt.is_authorized_user(user)