Due to security issues we decided to migrate from jinja to mustache and faced some problems with writing custom lambdas. Adding custom serialization of python objects would help a lot.
Toy example, on what is impossible to elegantly achieve now.
Dictionary data data = {"text": "text", "datetime": datetime(2000, 1, 1)} arrives;
We want to render both date (using custom lambda for example) and JSON representation of the whole dictionary, e.g., received on 2000-01-01T00:00:00: {"text": "text", "datetime": "2000-01-01T00:00:00" };
Without custom serialization, we would need to pass both data itself as X and its JSON representation as Y to render function as follows: render(data={'X': data, 'Y': json.dumps(data, ...)}) and then use a template received on {{ X.datetime }}: {{ Y }}. It is clumsy and requires special server-side pre-processing for every such case;
Instead, we would like to be able to serialize any data to JSON string and pass it to custom lambdas that will be able to process them accordingly.
Due to security issues we decided to migrate from jinja to mustache and faced some problems with writing custom lambdas. Adding custom serialization of python objects would help a lot.
Toy example, on what is impossible to elegantly achieve now.
data = {"text": "text", "datetime": datetime(2000, 1, 1)}
arrives;received on 2000-01-01T00:00:00: {"text": "text", "datetime": "2000-01-01T00:00:00" }
;data
itself asX
and its JSON representation asY
torender
function as follows:render(data={'X': data, 'Y': json.dumps(data, ...)})
and then use a templatereceived on {{ X.datetime }}: {{ Y }}
. It is clumsy and requires special server-side pre-processing for every such case;Complete example of what we want to achieve:
gives
'03-11-2021: {"dt": "2021-11-03T16:05:29.477125", "text": "text"}'
instead of
"03-11-2021: {'dt': datetime.datetime(2021, 11, 3, 16, 6, 42, 483261), 'text': 'text'}"
without custom serialization.