from django.utils.encoding import smart_unicode
from django.utils.safestring import mark_safe
from forum.const import *
-from forum.models import Question, Answer, QuestionRevision, AnswerRevision
+from forum.models import Question, Answer, QuestionRevision, AnswerRevision, NodeRevision
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
+from django.utils import simplejson
from django.conf import settings
+from django.template.defaulttags import url as default_url
from forum import skins
register = template.Library()
post_type = 'question'
elif isinstance(post,Answer):
post_type = 'answer'
- elif isinstance(post,AnswerRevision) or isinstance(post,QuestionRevision):
+ elif isinstance(post,(AnswerRevision, QuestionRevision, NodeRevision)):
post_type = 'revision'
return {
'post':post,
'badgeword' : _('badges'),
})
-@register.simple_tag
-def get_user_vote_image(dic, key, arrow):
- if dic.has_key(key):
- if int(dic[key]) == int(arrow):
- return '-on'
- return ''
-
@register.simple_tag
def get_age(birthday):
current_time = datetime.datetime(*time.localtime()[0:6])
if next.contents == 'endblockmedia':
break
return BlockMediaUrlNode(nodelist)
+
+class FullUrlNode(template.Node):
+ def __init__(self, default_node):
+ self.default_node = default_node
+
+ def render(self, context):
+ domain = settings.APP_URL
+ #protocol = getattr(settings, "PROTOCOL", "http")
+ path = self.default_node.render(context)
+ return "%s%s" % (domain, path)
+
+@register.tag(name='fullurl')
+def fullurl(parser, token):
+ default_node = default_url(parser, token)
+ return FullUrlNode(default_node)
+
+@register.simple_tag
+def fullmedia(url):
+ domain = settings.APP_URL
+ #protocol = getattr(settings, "PROTOCOL", "http")
+ path = media(url)
+ return "%s%s" % (domain, path)
+
+class UserVarNode(template.Node):
+ def __init__(self, tokens):
+ self.tokens = tokens
+
+ def render(self, context):
+ return "{{ %s }}" % self.tokens
+
+@register.tag(name='user_var')
+def user_var(parser, token):
+ tokens = " ".join(token.split_contents()[1:])
+ return UserVarNode(tokens)
+
+
+class VariablesNode(template.Node):
+ def __init__(self, nodelist, var_name):
+ self.nodelist = nodelist
+ self.var_name = var_name
+
+ def render(self, context):
+ source = self.nodelist.render(context)
+ context[self.var_name] = simplejson.loads(source)
+ return ''
+
+@register.tag(name='var')
+def do_variables(parser, token):
+ try:
+ tag_name, arg = token.contents.split(None, 1)
+ except ValueError:
+ msg = '"%s" tag requires arguments' % token.contents.split()[0]
+ raise template.TemplateSyntaxError(msg)
+ m = re.search(r'as (\w+)', arg)
+ if m:
+ var_name, = m.groups()
+ else:
+ msg = '"%s" tag had invalid arguments' % tag_name
+ raise template.TemplateSyntaxError(msg)
+
+ nodelist = parser.parse(('endvar',))
+ parser.delete_first_token()
+ return VariablesNode(nodelist, var_name)