comparison piecrust/templating/jinjaengine.py @ 662:cbd5cdec0695

jinja: Add `md5` filter.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 01 Mar 2016 22:27:04 -0800
parents 7df0a959791c
children a14371c5cda7
comparison
equal deleted inserted replaced
661:2f780b191541 662:cbd5cdec0695
1 import re 1 import re
2 import time 2 import time
3 import os.path 3 import os.path
4 import hashlib
4 import logging 5 import logging
5 import threading 6 import threading
6 import email.utils 7 import email.utils
7 import strict_rfc3339 8 import strict_rfc3339
8 from jinja2 import Environment, FileSystemLoader, TemplateNotFound 9 from jinja2 import Environment, FileSystemLoader, TemplateNotFound
219 'nocache': add_no_cache_parameter, 220 'nocache': add_no_cache_parameter,
220 'wordcount': get_word_count, 221 'wordcount': get_word_count,
221 'stripoutertag': strip_outer_tag, 222 'stripoutertag': strip_outer_tag,
222 'stripslash': strip_slash, 223 'stripslash': strip_slash,
223 'titlecase': title_case, 224 'titlecase': title_case,
225 'md5': make_md5,
224 'atomdate': get_xml_date, 226 'atomdate': get_xml_date,
225 'xmldate': get_xml_date, 227 'xmldate': get_xml_date,
226 'emaildate': get_email_date, 228 'emaildate': get_email_date,
227 'date': get_date}) 229 'date': get_date})
228 230
308 310
309 def title_case(value): 311 def title_case(value):
310 return value.title() 312 return value.title()
311 313
312 314
315 def make_md5(value):
316 return hashlib.md5(value.lower().encode('utf8')).hexdigest()
317
318
313 def get_xml_date(value): 319 def get_xml_date(value):
320 """ Formats timestamps like 1985-04-12T23:20:50.52Z
321 """
314 if value == 'now': 322 if value == 'now':
315 value = time.time() 323 value = time.time()
316 return strict_rfc3339.timestamp_to_rfc3339_localoffset(int(value)) 324 return strict_rfc3339.timestamp_to_rfc3339_localoffset(int(value))
317 325
318 326
319 def get_email_date(value, localtime=False): 327 def get_email_date(value, localtime=False):
328 """ Formats timestamps like Fri, 09 Nov 2001 01:08:47 -0000
329 """
320 if value == 'now': 330 if value == 'now':
321 value = time.time() 331 value = time.time()
322 return email.utils.formatdate(value, localtime=localtime) 332 return email.utils.formatdate(value, localtime=localtime)
323 333
324 334