예제 #1
0
def test_render_string():
    template = Template("Hello {{ name }}!")
    print template.generate(name="Ben")
예제 #2
0
 def test_comment_directive(self):
     template = Template(utf8("{% comment blah blah %}foo"))
     self.assertEqual(template.generate(), b"foo")
예제 #3
0
 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')
예제 #4
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")))
예제 #5
0
 def test_if_empty_body(self):
     template = Template(utf8("{% if True %}{% else %}{% end %}"))
     self.assertEqual(template.generate(), b"")
예제 #6
0
 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
예제 #7
0
 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)
예제 #8
0
    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"))
예제 #9
0
        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
예제 #10
0
 def test_comment(self):
     template = Template("Hello{# TODO i18n #} {{ name }}!")
     self.assertEqual(template.generate(name=utf8("Ben")), b("Hello Ben!"))
예제 #11
0
 def test_unicode_template(self):
     template = Template(utf8(u"\u00e9"))
     self.assertEqual(template.generate(), utf8(u"\u00e9"))
예제 #12
0
 def test_expressions(self):
     template = Template("2 + 2 = {{ 2 + 2 }}")
     self.assertEqual(template.generate(), b("2 + 2 = 4"))
예제 #13
0
파일: table_v3.py 프로젝트: Neilfu/etl
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')
         
예제 #14
0
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]
예제 #15
0
 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
예제 #16
0
    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>\
""")
예제 #17
0
                          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)
예제 #18
0
 def build_body(self):
     return Template(SOAP_TEMPLATE[self.method]).generate(**self._fields)
예제 #19
0
 def render(self, prefix, previous_value=False):
     return Template(self.TEMPLATE).generate(
         parameter_name=prefix + self.short_name,
         enabled=(previous_value is True))
예제 #20
0
파일: wikinav.py 프로젝트: iamlemec/nemonic
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))
예제 #21
0
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:
예제 #22
0
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']})
예제 #23
0
 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")
예제 #24
0
파일: packer.py 프로젝트: polyzer/ExePacker
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,
예제 #25
0
 def test_simple(self):
     template = Template("Hello {{ name }}!")
     self.assertEqual(template.generate(name="Ben"),
                      b"Hello Ben!")
예제 #26
0
 def _create_template(self, name):
     f = open(name, 'rb')
     template = Template(f.read(), name=name, loader=self)
     f.close()
     return template
예제 #27
0
 def test_break_outside_loop(self):
     try:
         Template(utf8("{% break %}"))
         raise Exception("Did not get expected exception")
     except ParseError:
         pass
예제 #28
0
 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
예제 #29
0
 def test_bytes(self):
     template = Template("Hello {{ name }}!")
     self.assertEqual(template.generate(name=utf8("Ben")),
                      b"Hello Ben!")
예제 #30
0
 def render_string(self, html, context):
     return Template(html).generate(**context)