Show More
@@ -34,6 +34,7 b' from .utils import (' | |||||
34 | evalrawexp = templateutil.evalrawexp |
|
34 | evalrawexp = templateutil.evalrawexp | |
35 | evalfuncarg = templateutil.evalfuncarg |
|
35 | evalfuncarg = templateutil.evalfuncarg | |
36 | evalboolean = templateutil.evalboolean |
|
36 | evalboolean = templateutil.evalboolean | |
|
37 | evaldate = templateutil.evaldate | |||
37 | evalinteger = templateutil.evalinteger |
|
38 | evalinteger = templateutil.evalinteger | |
38 | evalstring = templateutil.evalstring |
|
39 | evalstring = templateutil.evalstring | |
39 | evalstringliteral = templateutil.evalstringliteral |
|
40 | evalstringliteral = templateutil.evalstringliteral | |
@@ -373,12 +374,9 b' def localdate(context, mapping, args):' | |||||
373 | # i18n: "localdate" is a keyword |
|
374 | # i18n: "localdate" is a keyword | |
374 | raise error.ParseError(_("localdate expects one or two arguments")) |
|
375 | raise error.ParseError(_("localdate expects one or two arguments")) | |
375 |
|
376 | |||
376 |
date = eval |
|
377 | date = evaldate(context, mapping, args[0], | |
377 | try: |
|
378 | # i18n: "localdate" is a keyword | |
378 | date = dateutil.parsedate(date) |
|
379 | _("localdate expects a date information")) | |
379 | except AttributeError: # not str nor date tuple |
|
|||
380 | # i18n: "localdate" is a keyword |
|
|||
381 | raise error.ParseError(_("localdate expects a date information")) |
|
|||
382 | if len(args) >= 2: |
|
380 | if len(args) >= 2: | |
383 | tzoffset = None |
|
381 | tzoffset = None | |
384 | tz = evalfuncarg(context, mapping, args[1]) |
|
382 | tz = evalfuncarg(context, mapping, args[1]) |
@@ -16,6 +16,7 b' from . import (' | |||||
16 | util, |
|
16 | util, | |
17 | ) |
|
17 | ) | |
18 | from .utils import ( |
|
18 | from .utils import ( | |
|
19 | dateutil, | |||
19 | stringutil, |
|
20 | stringutil, | |
20 | ) |
|
21 | ) | |
21 |
|
22 | |||
@@ -318,6 +319,18 b' def evalboolean(context, mapping, arg):' | |||||
318 | # empty dict/list should be False as they are expected to be '' |
|
319 | # empty dict/list should be False as they are expected to be '' | |
319 | return bool(stringify(thing)) |
|
320 | return bool(stringify(thing)) | |
320 |
|
321 | |||
|
322 | def evaldate(context, mapping, arg, err=None): | |||
|
323 | """Evaluate given argument as a date tuple or a date string; returns | |||
|
324 | a (unixtime, offset) tuple""" | |||
|
325 | return unwrapdate(evalrawexp(context, mapping, arg), err) | |||
|
326 | ||||
|
327 | def unwrapdate(thing, err=None): | |||
|
328 | thing = _unwrapvalue(thing) | |||
|
329 | try: | |||
|
330 | return dateutil.parsedate(thing) | |||
|
331 | except AttributeError: | |||
|
332 | raise error.ParseError(err or _('not a date tuple nor a string')) | |||
|
333 | ||||
321 | def evalinteger(context, mapping, arg, err=None): |
|
334 | def evalinteger(context, mapping, arg, err=None): | |
322 | return unwrapinteger(evalrawexp(context, mapping, arg), err) |
|
335 | return unwrapinteger(evalrawexp(context, mapping, arg), err) | |
323 |
|
336 |
General Comments 0
You need to be logged in to leave comments.
Login now