My new version is more flexible, but very much longer. There must be a better way, but I don’t find a lot of documentation on jinja2, particularly on how to slice and dice strings. Anyway, here’s my new version, for who is interested. (Mind you, you still have to add the -l walltime = {{ evalclock(MAIN_CLOCK) }}
in the relevant section:
{% macro evalclock(iso8601duration) -%}
{% set duration = iso8601duration.split("P")[1] -%}
{% set totalseconds = 0 -%}
{% if "T" in duration -%}
{% set days_and_more, hours_and_less = duration.split("T") -%}
{% if "H" in hours_and_less -%}
{% set hours, minutes_and_less = hours_and_less.split("H") -%}
{% set totalseconds = (hours | int) * 60 * 60 -%}
{% else -%}
{% set minutes_and_less = hours_and_less -%}
{% endif -%}
{% if "M" in minutes_and_less -%}
{% set minutes, seconds = minutes_and_less.split("M") -%}
{% set totalseconds = totalseconds + (( minutes | int ) * 60 ) -%}
{% else -%}
{% set seconds = minutes_and_less -%}
{% endif -%}
{% if "S" in seconds -%}
{% set totalseconds = totalseconds + ( seconds.split("S")[0] | int ) -%}
{% endif -%}
{% else -%}
{% set days_and_more = duration -%}
{% endif -%}
{% if "W" in days_and_more -%}
{% set totalseconds = (days_and_more.split("W")[0] | int) * 7 * 24 * 60 * 60 -%}
{% else -%}
{% if "Y" in days_and_more -%}
{% set years, months_and_less = days_and_more.split("Y") -%}
{% set totalseconds = totalseconds + ((years | int) * 365 * 24 * 60 * 60 ) -%}
{% else -%}
{% set months_and_less = days_and_more -%}
{% endif -%}
{% if "M" in months_and_less -%}
{% set monts, days = months_and_less.split("M") -%}
{% set totalseconds = totalseconds + (( months | int ) * 30 * 24 * 60 * 60 ) -%}
{% else -%}
{% set days = months_and_less -%}
{% endif -%}
{% if "D" in days -%}
{% set totalseconds = totalseconds + (( days.split("D")[0] | int ) * 24 * 60 * 60 ) -%}
{% endif -%}
{% endif -%}
{{ totalseconds }}