Plain is headed towards 1.0! Subscribe for development updates →

 1import datetime
 2from itertools import islice
 3
 4from plain.utils.html import json_script
 5from plain.utils.timesince import timesince, timeuntil
 6from plain.utils.timezone import localtime
 7
 8
 9def localtime_filter(value, timezone=None):
10    """Converts a datetime to local time in a template."""
11    if not value:
12        # Without this, we get the current localtime
13        # which doesn't make sense as a filter
14        raise ValueError("localtime filter requires a datetime")
15    return localtime(value, timezone)
16
17
18default_filters = {
19    # The standard Python ones
20    "strftime": datetime.datetime.strftime,
21    "strptime": datetime.datetime.strptime,
22    "fromtimestamp": datetime.datetime.fromtimestamp,
23    "fromisoformat": datetime.datetime.fromisoformat,
24    # To convert to user time zone
25    "localtime": localtime_filter,
26    "timeuntil": timeuntil,
27    "timesince": timesince,
28    "json_script": json_script,
29    "islice": islice,  # slice for dict.items()
30}