:orphan:

=========
Changelog
=========

* :release:`1.15.0 <2021-11-05>`
* :support:`-` Formatted project with black
* :support:`-` Updated README
* :feature:`265` Drop old Python and Django versions, bring in newer ones
* :release:`1.14.0 <2019-12-30>`
* :support:`260` Fixes the goshdang Travis tests.
* :support:`250` Include documentation Makefile and conf.py in source distribution.
* :support:`246` README more accurately explains the supported Django versions.
* :release:`1.13.0 <2018-04-06>`
* :support:`243` Adds support for Python 3.7 and Django 2.1.
* :support:`244` Documentation link fix.
* :support:`236` Refines the Django and Python versions tested against.
* :support:`241` Fixes a documentation typo, "altenate" should be "alternate".
* :release:`1.12.0 <2018-04-06>`
* :support:`237` Updates for Django 2.0.
* :support:`232` Updates for Django 1.11.
* :support:`227` Use SVG in README instead of PNG.
* :support:`221` Renamed a duplicative method name.
* :support:`220` Adds a warning for cases where ``prefetch_related`` or ``select_related`` are empty in their respective mixins.
* :release:`1.11.0 <2017-02-01>`
* :bug:`215 major` Imports for 1.11 and 2.x ``reverse`` and ``reverse_lazy`` functions.
* :support:`248` Include some files necessary for testing in the source distribution.
* :feature:`228` Adds an ``object_level_permissions`` attribute to the ``PermissionRequiredMixin`` to allow for object-level permission checks instead of just view-level checks.
* :bug:`224 major` Allows ``OPTIONS`` requests to be body-less.
* :bug:`218 major` ``AccessMixin.handle_no_permission` now accepts a ``request`` parameter.
* :feature:`198` New :ref:`OrderableListMixin` allows to switch the default ordering setting from `asc` to `desc`.
* :support:`215` Imports updated for Django 2.0.
* :feature:`204` New :ref:`HeaderMixin` that allows custom headers to be set on a view.
* :release:`1.10.0 <2016-10-24>`
* :bug:`212 major` Small changes for Django 1.10 compatibility.
* :bug:`211 major` ReadTheDocs links updated.
* :bug:`209 major` Django documentation link updated.
* :release:`1.9.0 <2016-05-31>`
* :bug:`208 major` Fixed errors from combining certain access mixins.
* :bug:`196 major` Refactor how users without permissions are handled.
* :bug:`181 major` Fixed redirect loops based on user permissions.
* :bug:`161 major` Fixed redirect loop for users without proper groups for ``MultipleGroupRequiredMixin`` and ``GroupRequiredMixin``.
* :support:`209` Fixed link to Django documentation for ``user_passes_test`` decorator.
* :feature:`203` Use Django's supplied version of ``six`` to remove an external dependency.
* :support:`202` Fixed typo in ``PermissionsRequiredMixin`` and ``MultiplePermissionsRequiredMixin``.
* :support:`201` Fixed typo in ``SuccessURLRedirectListMixin``.
* :support:`192` Added example for ``OrderableListView``.
* :release:`1.8.1 <2015-07-12>`
* :bug:`176` Only check time delta for authenticated users in :ref:`RecentLoginRequiredMixin`.
* :bug:`-` Changed :ref:`JsonRequestResponseMixin` docs to not use `ugettext_lazy`.
* :bug:`-` Updated tests to include Python 3.2.
* :bug:`185` Removed `u` prefixes to allow Python 3.2 support.
* :support:`-` Added note to docs about Python and Django versions used in tests.
* :bug:`-` Fix small issue in docs for :ref:JsonResponseMixin. The accepted kwarg for the render_to_response method is status not status_code.
* :release:`1.8.0 <2015-04-16>`
* :support:`145` Allow custom exceptions to be raised by all AccessMixins.
* :feature:`171` New ``SSLRequiredMixin``. Redirect http -> https.
* :feature:`138` New :ref:`RecentLoginRequiredMixin` to require user sessions to have a given freshness.
* :bug:`164 major` Use `resolve_url` to handle `LOGIN_REDIRECT_URL`s in `settings.py` that are just URL names.
* :bug:`130 major` New attribute on :ref:`JSONResponseMixin` to allow setting a custom JSON encoder class.
* :bug:`131 major` New attribute on :ref:`LoginRequiredMixin` so it's possible to redirect unauthenticated users while
  using ``AccessMixin``-derived mixins instead of throwing an exception.
* :release:`1.4.0 <2014-03-04>`
* :support:`129` Split ``views.py`` out into multiple files since it was approaching 1000 LoC.
* :feature:`119` :ref:`SetHeadlineMixin` now accepts ``headline`` with ``ugettext_lazy()``-wrapped strings.
* :bug:`94 major` Fixed a bug where :ref:`JSONResponseMixin` would override the ``content_type`` of Django's ``TemplateView`` in Django 1.6.
* :bug:`- major` Fixed bug in :ref:`PermissionRequiredMixin` where if ``PermissionRequiredMixin.no_permissions_fail`` returned a false-y value, the user lacking the permission would pass instead of being denied access.
* :support:`73` Added doc for how to contribute.
* :feature:`120` Added :ref:`MessageMixin` to allow easier access to Django's ``contrib.messages`` messages. :ref:`FormValidMessageMixin` and :ref:`FormInvalidMessageMixin` were updated to use it.
* :bug:`98 major` Fixed bug in :ref:`CanonicalSlugDetailMixin` to allow it to use custom URL kwargs.
* :bug:`105 major` Fixed bug in :ref:`GroupRequiredMixin` where superusers were blocked by lack of group memberships.
* :bug:`106 major` Fixed bug in :ref:`GroupRequiredMixin` which now correctly checks for group membership against a list.
* :feature:`102` Added new :ref:`StaticContextMixin` mixin which lets you pass in ``static_context`` as a property of the view.
* :feature:`89` Added new :ref:`AnonymousRequiredMixin` which redirects authenticated users to another view.
* :feature:`104` Added new :ref:`AllVerbsMixin` which allows a single method to response to all HTTP verbs.
* :bug:`- major` Provided ``JSONRequestResponseMixin`` as a mirror of :ref:`JsonRequestResponseMixin` because we're not PHP.
* :feature:`107` :ref:`FormValidMessageMixin`, :ref:`FormInvalidMessageMixin`, and :ref:`FormMessagesMixin` all allow ``ugettext_lazy``-wrapped strings.
* :feature:`67` Extended :ref:`PermissionRequiredMixin` and :ref:`MultiplePermissionsRequiredMixin` to accept django-guardian-style custom/object permissions.
* :release:`1.3.1 <2014-01-04>`
* :bug:`95` Removed accidentally-added breakpoint.
* :support:`96 backported` Added ``build/`` to ``.gitignore``
* :release:`1.3.0 <2014-01-03>`
* :support:`59` Removed ``CreateAndRedirectToEditView`` mixin which was marked for deprecation and removal since 1.0.0.
* :feature:`51` Added :ref:`JsonRequestResponseMixin` which attempts to parse requests as JSON.
* :feature:`61` Added :ref:`CanonicalSlugDetailMixin` mixin which allows for the specification of a canonical slug on a ``DetailView`` to help with SEO by redirecting on non-canonical requests.
* :feature:`76` Added :ref:`UserPassesTestMixin` mixin to replicate the behavior of Django's ``@user_passes_test`` decorator.
* :bug:`- major` Some fixes for :ref:`CanonicalSlugDetailMixin`.
* :feature:`92` ``AccessMixin`` now has a runtime-overridable ``login_url`` attribute.
* :bug:`- major` Fixed problem with :ref:`GroupRequiredMixin` that made it not actually work.
* :support:`-` All tests pass for Django versions 1.4 through 1.6 and Python versions 2.6, 2.7, and 3.3 (Django 1.4 and 1.5 not tested with Python 3.3).
* :release:`1.2.2 <2013-08-07>`
* :support:`-` Uses ``six.string_types`` instead of explicitly relying on ``str`` and ``unicode`` types.
* :release:`1.2.1 <2013-07-28>`
* :bug:`-` Fix to allow ``reverse_lazy`` to work for all ``AccessMixin``-derived mixins.
* :release:`1.2.0 <2013-07-27>`
* :feature:`57` :ref:`FormValidMessageMixin` which provides a ``messages`` message when the processed form is valid.
* :feature:`-` :ref:`FormInvalidMessageMixin` which provides a ``messages`` message when the processed form is invalid.
* :feature:`-` :ref:`FormMessagesMixin` which provides the functionality of both of the above mixins.
* :feature:`-` :ref:`GroupRequiredMixin` which is a new access-level mixin which requires that a user be part of a specified group to access a view.
* :release:`1.1.0 <2013-07-18>`
* :bug:`52 major` :ref:`JSONResponseMixin` ``.render_json_response`` method updated to accept a status code.
* :bug:`43 major` :ref:`JSONResponseMixin` added ``json_dumps_kwargs`` attribute & get method to pass args to the JSON encoder.
* :feature:`45` New :ref:`OrderableListMixin` allows ordering of list views by GET params.
* :support:`-` Tests updated to test against latest stable Django release (1.5.1)
* :support:`-` Small fixes and additions to documentation.
* :release:`1.0.0 <2013-02-28>`
* :feature:`-` New 'abstract' ``AccessMixin`` which provides overridable ``get_login_url`` and ``get_redirect_field_name`` methods for all access-based mixins.
* :feature:`32` Rewritten :ref:`LoginRequiredMixin` which provides same customization as other access mixins with ``login_url``, ``raise_exception`` & ``redirect_field_name``.
* :feature:`33` New :ref:`PrefetchRelatedMixin`. Works the same as :ref:`SelectRelatedMixin` but uses Django's ``prefetch_related`` method.
* :support:`-` ``CreateAndRedirectToEditView`` is marked for deprecation.
* :bug:`- major` :ref:`PermissionRequiredMixin` no longer requires dot syntax for permission names.
* :support:`-` Marked package as supporting 2.6 thru 3.3 (from rafales).
* :support:`-` Fixes to documentation.
* :support:`-` Tests to cover new additions and changes.
* :release:`0.2.3 <2013-02-22>`
* :support:`30 backported` Tests for all mixins (from rafales).
* :feature:`26 backported` New :ref:`CsrfExemptMixin` for marking views as being CSRF exempt (from jarcoal).
* :support:`- backported` Some documentation updates and a spelling error correction (from shabda).
* :bug:`-` :ref:`SuccessURLRedirectListMixin` raises ``ImproperlyConfigured`` if no ``success_list_url`` attribute is supplied (from kennethlove).
* :release:`0.2.2 <2013-01-21>`
* :bug:`25` Try importing the built-in ``json`` module first, drop back to Django if necessary.
* :support:`- backported` Django 1.5 compatibility.
* :release:`0.2.1 <2012-12-10>`
* :bug:`21 major` Fixed signature of :ref:`UserFormKwargsMixin` ``.get_form_kwargs``
* :feature:`22` Updated :ref:`JSONResponseMixin` to work with non-ASCII characters and other datatypes (such as datetimes)
* :bug:`- major` Fixed all mixins that have ``raise_exception`` as an argument to properly raise a ``PermissionDenied`` exception to allow for custom 403s.
