===================
- Fixed a race condition when creating new users by using
``get_or_create`` instead of some homegrown ``exists`` and
``create`` trickery.
- Changed all locations to pass ``new_user`` as keyword argument to
``post_login_response``.
- Changed the ``admin/login.html`` template in ``authlib.admin_oauth``
to make the SSO button a bit more prominent. Also, replaced "SSO" with
"Google" because that is all that is supported right now.
- Added the possibility to use callables in ``ADMIN_OAUTH_PATTERNS``
instead of hard-coded staff email addresses.
- Extracted the confirmation code generation from
``get_confirmation_url`` as ``get_confirmation_code``.
- Fixed usage of deprecated Google OAuth2 scopes.
- Added compatibility with Python 2.
- Extracted the post login redirect cookie setting into a new
``set_next_cookie`` decorator.
- Dropped compatibility shims for Django<1.11.
- Changed the ``EmailBackend`` to use ``_default_manager`` instead of
assuming that the default manager is called ``objects``.
- Fixed an edge case bug where ``render_to_mail`` would crash when
encountering an empty text for the subject and body.
- Enforced keyword-only usage of the views and functions in
``authlib.views`` where it is appropriate.
- Removed the default messages emitted when creating a new user and when
logging out.
- Added a ``post_logout_response`` callable and argument to
``authlib.views.logout`` to customize messages and redirects after
logging an user out.
- Added a ``email_login`` callable and argument to the ``oauth2`` and
``email_registration`` view to customize the creation, authentication
and login of users.
- Changed the ``EmailRegistrationForm`` to save the request as
``self.request``, not ``self._request``. Made use of this for moving
the email sending to the form class as well, further shortening the
view.