Mercurial > piecrust2
comparison piecrust/templating/jinjaengine.py @ 41:1a30e3d7ee47
Error out if `date` filter is used with PHP date formats.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 21 Aug 2014 22:29:03 -0700 |
parents | 19f3ac27c3d5 |
children | 002fa58f54dc |
comparison
equal
deleted
inserted
replaced
40:4bc166d3a830 | 41:1a30e3d7ee47 |
---|---|
11 from pygments.lexers import get_lexer_by_name, guess_lexer | 11 from pygments.lexers import get_lexer_by_name, guess_lexer |
12 from piecrust.data.paginator import Paginator | 12 from piecrust.data.paginator import Paginator |
13 from piecrust.rendering import format_text | 13 from piecrust.rendering import format_text |
14 from piecrust.routing import CompositeRouteFunction | 14 from piecrust.routing import CompositeRouteFunction |
15 from piecrust.templating.base import TemplateEngine, TemplateNotFoundError | 15 from piecrust.templating.base import TemplateEngine, TemplateNotFoundError |
16 from piecrust.uriutil import multi_replace | |
16 | 17 |
17 | 18 |
18 logger = logging.getLogger(__name__) | 19 logger = logging.getLogger(__name__) |
19 | 20 |
20 | 21 |
166 | 167 |
167 | 168 |
168 def get_date(value, fmt): | 169 def get_date(value, fmt): |
169 if value == 'now': | 170 if value == 'now': |
170 value = time.time() | 171 value = time.time() |
172 if '%' not in fmt: | |
173 suggest = php_format_to_strftime_format(fmt) | |
174 raise Exception("PieCrust 1 date formats won't work in PieCrust 2. " | |
175 "You probably want a format that look like '%s'. " | |
176 "Please check the `strftime` formatting page here: " | |
177 "https://docs.python.org/3/library/datetime.html" | |
178 "#strftime-and-strptime-behavior" % | |
179 suggest) | |
171 return time.strftime(fmt, time.localtime(value)) | 180 return time.strftime(fmt, time.localtime(value)) |
172 | 181 |
173 | 182 |
174 class PieCrustHighlightExtension(Extension): | 183 class PieCrustHighlightExtension(Extension): |
175 tags = set(['highlight', 'geshi']) | 184 tags = set(['highlight', 'geshi']) |
270 return rv | 279 return rv |
271 rv = caller() | 280 rv = caller() |
272 self.environment.piecrust_cache[key] = rv | 281 self.environment.piecrust_cache[key] = rv |
273 return rv | 282 return rv |
274 | 283 |
284 | |
285 def php_format_to_strftime_format(fmt): | |
286 replacements = { | |
287 'd': '%d', | |
288 'D': '%a', | |
289 'j': '%d', | |
290 'l': '%A', | |
291 'w': '%w', | |
292 'z': '%j', | |
293 'W': '%W', | |
294 'F': '%B', | |
295 'm': '%m', | |
296 'M': '%b', | |
297 'n': '%m', | |
298 'y': '%Y', | |
299 'Y': '%y', | |
300 'g': '%I', | |
301 'G': '%H', | |
302 'h': '%I', | |
303 'H': '%H', | |
304 'i': '%M', | |
305 's': '%S', | |
306 'e': '%Z', | |
307 'O': '%z', | |
308 'c': '%Y-%m-%dT%H:%M:%SZ'} | |
309 return multi_replace(fmt, replacements) | |
310 |