from google.appengine.ext.webapp import template register = template.create_template_register() def fbconnect_button(button_size="medium"): return """ <fb:login-button size="medium" background="light" length="long" onlogin="******"></fb:login-button> """ register.simple_tag(fbconnect_button)
from google.appengine.ext.webapp import template from urllib import unquote register = template.create_template_register() @register.filter def unquote_raw(value): v = value.replace('=', '%') return unquote(v) register.filter('unquote_raw', unquote_raw)
# -*- coding: utf-8 -*- import os from django import template from model import * import django.template.defaultfilters as defaultfilters import urllib from google.appengine.ext.webapp import template as templatex register = template.Library() gae_register = templatex.create_template_register() from datetime import * @register.filter def datetz(date,format): #datetime with timedelta t=timedelta(seconds=3600*g_blog.timedelta) return defaultfilters.date(date+t,format) @register.filter def TimestampISO8601(t): """Seconds since epoch (1970-01-01) --> ISO 8601 time string.""" return time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(t)) @register.filter def urlencode(value): return urllib.quote(value.encode('utf8')) @register.filter def check_current(v1,v2): if v1==v2: return "current" else: return ""
# -*- coding: utf-8 -*- """Some additional filters for our templates.""" from __future__ import absolute_import, division, print_function, unicode_literals from google.appengine.ext.webapp import template # The name *has* to be `register`, for `register_template_library` to work elsewhere. register = template.create_template_register() # pylint: disable=invalid-name @register.filter def pre_fixed(content): # # Hack: pre ignores first newline, so we add an additional one. # if content and content[0] == '\n': # content = '\n' + content return content
from google.appengine.api import images from google.appengine.ext.webapp.template import create_template_register register = create_template_register() def thumbnail(file_path): pass register.filter(thumbnail)
_GRAVATAR_HTML_TEMPLATE = ('<a href="http://www.gravatar.com/%s">' '<img src="http://www.gravatar.com/avatar/%s?%s" ' 'alt="gravatar"/>' '</a>') def gravatar(email, size=80, rating='g', default_image='monsterid'): '''{% gravatar [email protected] %}''' if size < 1 or size > 512: raise ValueError('Size must be between 1 and 512 inclusive, got %r' % size) if rating not in ('g', 'pg', 'r', 'x'): raise ValueError( "rating must be one of 'g', 'pg', 'r' or 'x', got %r" % rating) # Gravatar supports a '404' default options. However, we're not supporting # it so that the site still looks nice even when things are broken. if default_image not in ('mm', 'identicon', 'wavatar', 'monsterid', 'retro'): raise ValueError('default_image is not valid, got %r' % default_image) email_hash = hashlib.md5(email.strip().lower()).hexdigest() return _GRAVATAR_HTML_TEMPLATE % (email_hash, email_hash, urllib.urlencode({ 's': size, 'r': rating, 'd': default_image })) register = create_template_register() register.simple_tag(gravatar)
import re import cgi import random import urllib2 import google.appengine.ext.webapp.template as tpl from typographus import Typographus import defs register = tpl.create_template_register() # define a stub for tag 'profiler_includes' if profiling is off try: import appengine_config dummy = appengine_config.webapp_add_wsgi_middleware except AttributeError: def profiler_includes(*args): return '' register.simple_tag(profiler_includes) def link(url): display = url display = re.sub('^mailto:\s*', '', display) return '<a href="%s">%s</a>' % (url, display) register.simple_tag(link) # print a tag def blog_tag(blog_tag_name, blog_tag_title = None): if not blog_tag_title: blog_tag_title = blog_tag_name return '<a href="/tag/%s">%s</a>' % (blog_tag_name, blog_tag_title)