Skip to content

Commit 5d9fc5c

Browse files
feat: add dumps util
1 parent 999f337 commit 5d9fc5c

File tree

1 file changed

+15
-2
lines changed
  • packages/notifications-library/src/notifications_library

1 file changed

+15
-2
lines changed
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,39 @@
1+
import functools
2+
import json
13
import logging
24
from pathlib import Path
5+
from typing import Any
36

47
import notifications_library
8+
from common_library.json_serialization import pydantic_encoder
59
from jinja2 import Environment, FileSystemLoader, PackageLoader, select_autoescape
10+
from models_library.utils._original_fastapi_encoders import jsonable_encoder
611

712
_logger = logging.getLogger(__name__)
813

914

15+
def _safe_json_dumps(obj: Any, **kwargs):
16+
return json.dumps(jsonable_encoder(obj), default=pydantic_encoder, **kwargs)
17+
18+
1019
def create_render_environment_from_notifications_library(**kwargs) -> Environment:
11-
return Environment(
20+
env = Environment(
1221
loader=PackageLoader(notifications_library.__name__, "templates"),
1322
autoescape=select_autoescape(["html", "xml"]),
1423
**kwargs
1524
)
25+
env.globals["dumps"] = functools.partial(_safe_json_dumps, indent=1)
26+
return env
1627

1728

1829
def create_render_environment_from_folder(top_dir: Path) -> Environment:
1930
assert top_dir.exists() # nosec
2031
assert top_dir.is_dir() # nosec
21-
return Environment(
32+
env = Environment(
2233
loader=FileSystemLoader(top_dir),
2334
autoescape=select_autoescape(
2435
["html", "xml"],
2536
),
2637
)
38+
env.globals["dumps"] = functools.partial(_safe_json_dumps, indent=1)
39+
return env

0 commit comments

Comments
 (0)