gzip.compress and gzip.decompress were introduced in Python 3.2
Added gzip_compress and gzip_decompress to frappe.utils to add this functionality
to both Python 2 and 3
In regards to PDF generation, if developer_mode was set to true, the PDF
generated used to lack css styling. This was because the URL to the CSS
assets used to contain the webserver port number, but given the system
was running in production, the URL was invalid, thereby not being able
to load CSS assets. This fix does not rely on the value of
developer_mode to identify if the system is running in production,
rather, it uses the value of restart_superviosor or systemd_on_update,
to check for the same.
* feat(markdown-editor): Add new fieldtype - MarkdownEditor
* feat(markdown-editor): Add MarkdownEditor control
* fix(markdown-editor): Fix placement of "Show Preview" button
* fix(markdown-editor): Render HTML in prints
RedisWrapper inherits from Redis which inherits from StrictRedis
In redis-py 3.0.0 StrictRedis was renamed to Redis.
This seems like a harmless change, but, instead of using
`self(RedisWrapper ...`, all methods use `self(Redis ...`
which assumes previous hierarchy (i.e. RedisWrapper <- Redis <- StrictRedis)
Previous email is appended to the next reply, but was not rendered by
splitting it with a hardcoded comment string. Since Quill does not
support comments, created a new HiddenBlock for it.
* refactor: Deduplicate setup_perms_for
`setup_perms_for` has two identical definitions in
frappe/utils/reset_doc.py and
frappe/patches/v7_2/setup_custom_perms.py
Remove definition from setup_custom_perms.py, use import instead
* refactor: Deduplicate get_parent_doc and set_timeline_doc
`get_parent_doc` and `set_timeline_doc` are accidentally defined twice in
frappe/core/utils.py and
frappe/core/doctype/communication/communication.py
Remove definition from communication.py, use import instead
* fix(python3): Replace urlopen import with six.moves.urllib.request.urlopen