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}