Fixed a typo in 1.6 release notes.
Fixed #23789 -- TemplateResponse handles context differently from render
Simplified MySQL storage engine detection using INFORMATION_SCHEMA.ENGINES table

Query the table introduced in MySQL 5.1; refs #23144.
Removed legacy code from old transaction system
Merge pull request #3489 from tchaumeny/testcases_cleanup

Removed legacy code from old transaction system
Fixed negligible formatting error.
Fix a typo in 1.7 release notes
Simplified Query.build_lookup()
Fixed #23750 -- Allowed core.checks.register to be used as a function
Fixed spelling errors in docs.
Raised SuspiciousFileOperation in safe_join.

Added a test for the condition safe_join is designed to prevent.

Previously, a generic ValueError was raised. It was impossible to tell
an intentional exception raised to implement safe_join's contract from
an unintentional exception caused by incorrect inputs or unexpected
conditions. That resulted in bizarre exception catching patterns, which
this patch removes.

Since safe_join is a private API and since the change is unlikely to
create security issues for users who use it anyway -- at worst, an
uncaught SuspiciousFileOperation exception will bubble up -- it isn't
documented.
Fixed #23788 -- Used new JavaScript support in recent gettext

JavaScript string extraction support has been added in gettext
0.18.3.
Thanks Aymeric Augustin for the review.
Removed import forgotten in previous commit.
Normalized opening a file and decoding its content.

`io.open` is required on Python 2.7. Just `open` would work on Python 3.
Fixed #9893 -- Filename could exceed max_length on a collision

Passing max_length argument into the Storage's save() and
get_available_name() methods.
Rewriting get_available_name() so filenames do not exceed max_length
when there is a collision.
Writing tests for the case.