def test_render_string(): template = Template("Hello {{ name }}!") print template.generate(name="Ben")
def test_comment_directive(self): template = Template(utf8("{% comment blah blah %}foo")) self.assertEqual(template.generate(), b"foo")
def test_no_inherit_future(self): # This file has from __future__ import division... self.assertEqual(1 / 2, 0.5) # ...but the template doesn't template = Template('{{ 1 / 2 }}') self.assertEqual(template.generate(), '0')
def test_bytes_apply(self): def upper(s): return utf8(to_unicode(s).upper()) template = Template(utf8(u("{% apply upper %}foo \u00e9{% end %}"))) self.assertEqual(template.generate(upper=upper), utf8(u("FOO \u00c9")))
def test_if_empty_body(self): template = Template(utf8("{% if True %}{% else %}{% end %}")) self.assertEqual(template.generate(), b"")
def _create_template(self, name): # print("_create_template", name, "root", self.current) a_path = path.join(self.current, name) with open(a_path, "rb") as f: template = Template(f.read(), name=name, loader=self) return template
def render(self, prefix, previous_value=None): return Template(self.TEMPLATE).generate(parameter_name=prefix + self.short_name, choices=self.values, parameter_value=previous_value)
def test_apply(self): def upper(s): return s.upper() template = Template(utf8("{% apply upper %}foo{% end %}")) self.assertEqual(template.generate(upper=upper), b("FOO"))
return jinja2_template.render(ctx) # region: tornado try: from tornado.template import Template except ImportError: test(name="tornado") else: tornado_template = Template( s("""\ <table> {% for row in table %} <tr> {% for key, value in row.items() %} <td>{{ key }}</td><td>{{ value }}</td> {% end %} </tr> {% end %} </table> """)) @test(10) def test_tornado() -> str: return tornado_template.generate(**ctx).decode("utf8") # region: mako try: from mako.template import Template
def test_comment(self): template = Template("Hello{# TODO i18n #} {{ name }}!") self.assertEqual(template.generate(name=utf8("Ben")), b("Hello Ben!"))
def test_unicode_template(self): template = Template(utf8(u"\u00e9")) self.assertEqual(template.generate(), utf8(u"\u00e9"))
def test_expressions(self): template = Template("2 + 2 = {{ 2 + 2 }}") self.assertEqual(template.generate(), b("2 + 2 = 4"))
class TableChart(widgets.VBox): T_Table = Template( """<table class='rendered_html table'> <tr> {% for idx,field in enumerate(header) %} <th {% if (idx in colIdx) %} style="background-color:green;color:white" {% end %} > <h3>{{field[1]}}</h3>{{field[0]}}</th>{% end %} </tr> {% for row in data %} <tr> {% for idx,field in enumerate(row) %} <td {% if idx in colIdx %} style="background-color:green;color:white" {% end %} > {{ field }} </td> {% end %} </tr> {% end %} </table> """ ) _refresh_v = traitlets.Bool() _col_index = traitlets.List() @traitlets.observe('_col_index') def update(self,change=None): table_html = self.T_Table.generate(header=self.model.header,data=self.model.page,colIdx=self._col_index) self.html.value = table_html self.status.value = u'当前第%d页,共%d页' %(self.model.pos,self.model.pageTotal) def first(self,a): self.model.first() def back(self,a): self.model.back() def previous(self,a): self.model.previous() def last(self,a): self.model.last() def colChoose(self,col=None): idx = [] for i,field in enumerate(self.model.header): if field in col: idx.append(i) self._col_index = idx def actionBar(self): self.btn_first = widgets.Button(icon='fa-step-backward',tooltip=u'第一页') self.btn_previous = widgets.Button(icon='fa-chevron-left',tooltip=u'上一页') self.btn_back = widgets.Button(icon='fa-chevron-right',tooltip=u'下一页') self.btn_last = widgets.Button(icon='fa-step-forward',tooltip=u'最后页') self.status = widgets.HTML() self.action = widgets.HBox(layout=widgets.Layout(width="100%",display='flex-flow',flex_flow='row', justify_content='space-around')) self.action.children = [self.status,self.btn_first,self.btn_previous,self.btn_back,self.btn_last] self.btn_first.on_click(self.first,False) self.btn_previous.on_click(self.previous,False) self.btn_back.on_click(self.back,False) self.btn_last.on_click(self.last,False) def __init__(self,header,body,pagesize=10): super(TableChart,self).__init__() self.model = TableModel(header,body,pagesize) self.html = widgets.HTML() self.actionBar() self.update() self.children = [self.html,self.action] #refresh_link = traitlets.dlink((self.model,'_refresh'),(self,'_refresh_v')) self.model.observe(self.update,'_refresh')
def _tmpl(template_string): '''Compile Tornado template. Cache the results''' if template_string not in _tmpl_cache: _tmpl_cache[template_string] = Template(template_string) return _tmpl_cache[template_string]
def _create_template(self, name): path = self._detect_template_path(name) f = open(path, 'r') template = Template(f.read(), name=name, loader=self) f.close() return template
tornado_template = Template("""\ <!doctype html> <html> <head> <title>{{ page_title }}</title> </head> <body> <div class="header"> <h1>{{ page_title }}</h1> </div> <ul class="navigation"> {% for href, caption in [ \ ('index.html', 'Index'), \ ('downloads.html', 'Downloads'), \ ('products.html', 'Products') \ ] %} <li><a href="{{ href }}">{{ caption }}</a></li> {% end %} </ul> <div class="table"> <table> {% for row in table %} <tr> {% for cell in row %} <td>{{ cell }}</td> {% end %} </tr> {% end %} </table> </div> </body> </html>\ """)
port=options.redis_port, db=options.redis_db) # 查询将要过期的合同 expiring_contract_list = db.query( 'select sc.expire_at, sp.name sp_name, sp.short_name sp_short_name, sp.id sp_id, op.name sales_name ' 'from contract sc, supplier sp, operator op ' 'where sc.uid=sp.id and sc.type=1 and sp.sales_id=op.id and sc.deleted=0 and sc.expire_at>%s and sc.expire_at<%s', datetime.now(), datetime.now() + timedelta(days=10)) db.close() logging.info('expiring contract count: %s', len(expiring_contract_list)) # 如果没有要提醒的内容,退出 if not expiring_contract_list: import sys sys.exit() # 构建邮件内容 template = """<p> 亲,有<strong>{{len(contract_list)}}</strong>个商户合同在10天内到期(或已经过期),请注意! </p> <table cellpadding='1' cellspacing='0' border='1' bordercolor='#000000'> <tr> <th>销售专员</th> <th>商户</th> <th>商户简称</th> <th>到期时间</th> <th>操作</th> </tr> {% for contract in contract_list %} <tr> <td>{{contract.sales_name}}</td> <td>{{contract.sp_name}}</td> <td>{{contract.sp_short_name}}</td> <td>{{contract.expire_at}}</td> <td><a href='http://{{options.operate_domain}}/supplier/{{contract.sp_id}}/contract'>点击查看</a></td> </tr> {% end %} </table>""" # 发送邮件 html = Template(template).generate(contract_list=expiring_contract_list, options=options) send_email(redis=redis, subject='合同到期提醒', to_list=options.expiring_contract_receivers, html=html)
def build_body(self): return Template(SOAP_TEMPLATE[self.method]).generate(**self._fields)
def render(self, prefix, previous_value=False): return Template(self.TEMPLATE).generate( parameter_name=prefix + self.short_name, enabled=(previous_value is True))
args = parser.parse_args() # open database con = sqlite3.connect(args.db_fname) cur = con.cursor() cur.execute('create table if not exists view (id integer primary key, lang text, timestamp real, title text)') # time conversion todate = lambda ts: timedelta(seconds=ts/1000) + datetime(1970,1,1) - timedelta(hours=args.utc_offset) tfmt = '%Y-%m-%d %H:%M' # code generation view_template = Template(""" <h1>WikiNav</h1> {% for x in data %} <div class="entry">{{ x['time'] }}: <a href="{{ x['url'] }}">{{ x['title'] }}</a></div> {% end %} """.strip()) class ViewerHandler(tornado.web.RequestHandler): def get(self): cur = con.cursor() ret = cur.execute('select lang,timestamp,title from view order by timestamp desc limit 100') data = [{ 'time': todate(s).strftime(tfmt), 'url': 'https://%s.wikipedia.org/wiki/%s' % (l, t), 'title': unquote(t) } for (l, s, t) in ret] self.write(view_template.generate(data=data))
query = { "details.membership_level": { "$in": ["full", "founder"] }, "details.nsw_membership_form_mailed": { "$exists": False }, "details.residential_state": "NSW" } targets = coll.find(query) count = targets.count() with open(sys.argv[2]) as f: txt_tmpl = Template(f.read()) if has_html: with open(sys.argv[3]) as f: html_tmpl = Template(f.read()) else: html_tmpl = None print("Email will be sent to %s recipients." % count) if input("Are you ready? [y/N]> ") != 'y': sys.exit() for n, member in enumerate(targets): details = member.get('details', None) details['member_id'] = member['_id'].hex if details is None:
import json import logging import os from email import utils from tornado.template import Template from providers import facebook from providers.google_rss import GoogleRSS from utils.config import version, getLogHandler parser = argparse.ArgumentParser(prog='G+RSS.Poller') parser.add_argument('--log_path', required=True) args = parser.parse_args() logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %H:%M:%S') logger = logging.getLogger(__name__) logger.addHandler(getLogHandler(os.path.join(args.log_path, 'test_google.log'))) logger.level = logging.INFO f = open('templates/feed.xml') template = Template(f.read()) f.close() json_data = open('data/113347540216001053968.json') data = json.load(json_data) #print(data) items = GoogleRSS.gen_items(data, option='photo') print(template.generate(version=version, gid='UNIT_TEST', pubDate=utils.formatdate(), items=items)) #for item in items: # #message = facebook.FacebookPublisher._format_message(item['description']) # if item['type'] in ('album', 'photo'): # print({'photo_id': item['photo_id'], 'album_id': item['album_id']})
def test_if(self): template = Template(utf8("{% if x > 4 %}yes{% else %}no{% end %}")) self.assertEqual(template.generate(x=5), b"yes") self.assertEqual(template.generate(x=3), b"no")
from tornado.template import Template pe = pefile.PE("putty.exe") pe.add_last_section(size=1024) pe.sections[0].xor_data(1) pe.data_copy(pe.sections[0].PointerToRawData, pe.sections[-1].PointerToRawData, 512) imports = {} for entry in pe.DIRECTORY_ENTRY_IMPORT: for imp in entry.imports: imports[imp.name] = imp.address asm = Template(open("pack.tpl.asm", "r").read()).generate( imports=imports, go=pe.OPTIONAL_HEADER.ImageBase + pe.sections[-1].VirtualAddress + 512, ) with open("pack.asm", "w") as f: f.write(asm) os.system(r"c:\fasmw\FASM.EXE pack.asm") asm = Template(open("copy.tpl.asm", "r").read()).generate( imports=imports, copy_from=pe.OPTIONAL_HEADER.ImageBase + pe.sections[-1].VirtualAddress, copy_to=pe.OPTIONAL_HEADER.ImageBase + pe.sections[0].VirtualAddress, copy_len=512, xor_len=pe.sections[0].Misc_VirtualSize, key_encode=1, original_eop=pe.OPTIONAL_HEADER.ImageBase + pe.OPTIONAL_HEADER.AddressOfEntryPoint,
def test_simple(self): template = Template("Hello {{ name }}!") self.assertEqual(template.generate(name="Ben"), b"Hello Ben!")
def _create_template(self, name): f = open(name, 'rb') template = Template(f.read(), name=name, loader=self) f.close() return template
def test_break_outside_loop(self): try: Template(utf8("{% break %}")) raise Exception("Did not get expected exception") except ParseError: pass
def _create_template(self, name): path = os.path.join(self.root, name) with open(path, "rb") as f: template = Template(f.read(), name=name, loader=self) return template
def test_bytes(self): template = Template("Hello {{ name }}!") self.assertEqual(template.generate(name=utf8("Ben")), b"Hello Ben!")
def render_string(self, html, context): return Template(html).generate(**context)