Used the 🎫 syntax more extensively
This commit is contained in:
parent
6403e07c50
commit
742fba9455
|
@ -105,7 +105,7 @@ __ http://www.virtualenv.org
|
||||||
Rolling back to a previous revision of Django
|
Rolling back to a previous revision of Django
|
||||||
=============================================
|
=============================================
|
||||||
|
|
||||||
For this tutorial, we'll be using `ticket #17549`__ as a case study, so we'll
|
For this tutorial, we'll be using ticket :ticket:`17549` as a case study, so we'll
|
||||||
rewind Django's version history in git to before that ticket's patch was
|
rewind Django's version history in git to before that ticket's patch was
|
||||||
applied. This will allow us to go through all of the steps involved in writing
|
applied. This will allow us to go through all of the steps involved in writing
|
||||||
that patch from scratch, including running Django's test suite.
|
that patch from scratch, including running Django's test suite.
|
||||||
|
@ -121,7 +121,6 @@ development revision of Django when working on your own patch for a ticket!**
|
||||||
Consequently, we'll be using the revision of Django just prior to that,
|
Consequently, we'll be using the revision of Django just prior to that,
|
||||||
`commit 39f5bc7fc3a4bb43ed8a1358b17fe0521a1a63ac`__.
|
`commit 39f5bc7fc3a4bb43ed8a1358b17fe0521a1a63ac`__.
|
||||||
|
|
||||||
__ https://code.djangoproject.com/ticket/17549
|
|
||||||
__ https://github.com/django/django/commit/ac2052ebc84c45709ab5f0f25e685bf656ce79bc
|
__ https://github.com/django/django/commit/ac2052ebc84c45709ab5f0f25e685bf656ce79bc
|
||||||
__ https://github.com/django/django/commit/39f5bc7fc3a4bb43ed8a1358b17fe0521a1a63ac
|
__ https://github.com/django/django/commit/39f5bc7fc3a4bb43ed8a1358b17fe0521a1a63ac
|
||||||
|
|
||||||
|
@ -226,7 +225,7 @@ __ http://en.wikipedia.org/wiki/Test-driven_development
|
||||||
Writing some tests for ticket #17549
|
Writing some tests for ticket #17549
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
`Ticket #17549`__ describes the following, small feature addition:
|
Ticket :ticket:`17549` describes the following, small feature addition:
|
||||||
|
|
||||||
It's useful for URLField to give you a way to open the URL; otherwise you
|
It's useful for URLField to give you a way to open the URL; otherwise you
|
||||||
might as well use a CharField.
|
might as well use a CharField.
|
||||||
|
@ -287,7 +286,6 @@ correctly in a couple different situations.
|
||||||
* After reading those, if you want something a little meatier to sink
|
* After reading those, if you want something a little meatier to sink
|
||||||
your teeth into, there's always the `Python unittest documentation`__.
|
your teeth into, there's always the `Python unittest documentation`__.
|
||||||
|
|
||||||
__ https://code.djangoproject.com/ticket/17549
|
|
||||||
__ http://www.diveintopython.net/unit_testing/index.html
|
__ http://www.diveintopython.net/unit_testing/index.html
|
||||||
__ http://docs.python.org/library/unittest.html
|
__ http://docs.python.org/library/unittest.html
|
||||||
|
|
||||||
|
@ -310,7 +308,8 @@ class.
|
||||||
Writing the code for your ticket
|
Writing the code for your ticket
|
||||||
================================
|
================================
|
||||||
|
|
||||||
Next we'll be adding the functionality described in `ticket #17549`__ to Django.
|
Next we'll be adding the functionality described in ticket :ticket:`17549` to
|
||||||
|
Django.
|
||||||
|
|
||||||
Writing the code for ticket #17549
|
Writing the code for ticket #17549
|
||||||
----------------------------------
|
----------------------------------
|
||||||
|
@ -356,8 +355,6 @@ Re-run the tests and everything should pass. If it doesn't, make sure you
|
||||||
correctly modified the ``AdminURLFieldWidget`` class as shown above and
|
correctly modified the ``AdminURLFieldWidget`` class as shown above and
|
||||||
copied the new tests correctly.
|
copied the new tests correctly.
|
||||||
|
|
||||||
__ https://code.djangoproject.com/ticket/17549
|
|
||||||
|
|
||||||
Running Django's test suite for the second time
|
Running Django's test suite for the second time
|
||||||
===============================================
|
===============================================
|
||||||
|
|
||||||
|
|
|
@ -11,4 +11,4 @@ Bugfixes
|
||||||
|
|
||||||
* Restored the ability to :meth:`~django.core.urlresolvers.reverse` views
|
* Restored the ability to :meth:`~django.core.urlresolvers.reverse` views
|
||||||
created using :func:`functools.partial()`
|
created using :func:`functools.partial()`
|
||||||
(`#22486 <http://code.djangoproject.com/ticket/22486>`_)
|
(:ticket:`22486`)
|
||||||
|
|
|
@ -10,4 +10,4 @@ Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* Allowed inherited and m2m fields to be referenced in the admin
|
* Allowed inherited and m2m fields to be referenced in the admin
|
||||||
(`#22486 <http://code.djangoproject.com/ticket/23329>`_)
|
(:ticket:`22486`)
|
||||||
|
|
|
@ -11,10 +11,10 @@ Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* Allowed related many-to-many fields to be referenced in the admin
|
* Allowed related many-to-many fields to be referenced in the admin
|
||||||
(`#23604 <http://code.djangoproject.com/ticket/23604>`_).
|
(:ticket:`23604`).
|
||||||
|
|
||||||
* Allowed inline and hidden references to admin fields
|
* Allowed inline and hidden references to admin fields
|
||||||
(`#23431 <http://code.djangoproject.com/ticket/23431>`_).
|
(:ticket:`23431`).
|
||||||
|
|
||||||
* Fixed parsing of the GEOS version string
|
* Fixed parsing of the GEOS version string
|
||||||
(`#20036 <http://code.djangoproject.com/ticket/20036>`_).
|
(:ticket:`20036`).
|
||||||
|
|
|
@ -13,5 +13,4 @@ Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* Fixed a regression with dynamically generated inlines and allowed field
|
* Fixed a regression with dynamically generated inlines and allowed field
|
||||||
references in the admin
|
references in the admin (:ticket:`23754`).
|
||||||
(`#23754 <http://code.djangoproject.com/ticket/23754>`_).
|
|
||||||
|
|
|
@ -21,8 +21,5 @@ fix those issues.
|
||||||
Django 1.5.1 also includes a couple smaller fixes:
|
Django 1.5.1 also includes a couple smaller fixes:
|
||||||
|
|
||||||
* Module-level warnings emitted during tests are no longer silently hidden
|
* Module-level warnings emitted during tests are no longer silently hidden
|
||||||
(`#18985`__).
|
(:ticket:`18985`).
|
||||||
* Prevented filtering on password hashes in the user admin (`#20078`__).
|
* Prevented filtering on password hashes in the user admin (:ticket:`20078`).
|
||||||
|
|
||||||
__ https://code.djangoproject.com/ticket/18985
|
|
||||||
__ https://code.djangoproject.com/ticket/20078
|
|
||||||
|
|
|
@ -10,4 +10,4 @@ Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* Allowed inherited and m2m fields to be referenced in the admin
|
* Allowed inherited and m2m fields to be referenced in the admin
|
||||||
(`#22486 <http://code.djangoproject.com/ticket/23329>`_)
|
(:ticket:`22486`)
|
||||||
|
|
|
@ -10,7 +10,7 @@ Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* Allowed related many-to-many fields to be referenced in the admin
|
* Allowed related many-to-many fields to be referenced in the admin
|
||||||
(`#23604 <http://code.djangoproject.com/ticket/23604>`_).
|
(:ticket:`23604`).
|
||||||
|
|
||||||
* Allowed inline and hidden references to admin fields
|
* Allowed inline and hidden references to admin fields
|
||||||
(`#23431 <http://code.djangoproject.com/ticket/23431>`_).
|
(:ticket:`23431`).
|
||||||
|
|
|
@ -11,4 +11,4 @@ Bugfixes
|
||||||
|
|
||||||
* Fixed a regression with dynamically generated inlines and allowed field
|
* Fixed a regression with dynamically generated inlines and allowed field
|
||||||
references in the admin
|
references in the admin
|
||||||
(`#23754 <http://code.djangoproject.com/ticket/23754>`_).
|
(:ticket:`23754`).
|
||||||
|
|
|
@ -10,5 +10,4 @@ Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* Restored the ability to :meth:`~django.core.urlresolvers.reverse` views
|
* Restored the ability to :meth:`~django.core.urlresolvers.reverse` views
|
||||||
created using :func:`functools.partial()`
|
created using :func:`functools.partial()` (:ticket:`22486`).
|
||||||
(`#22486 <http://code.djangoproject.com/ticket/22486>`_)
|
|
||||||
|
|
|
@ -9,44 +9,44 @@ several bugs in 1.6.1:
|
||||||
|
|
||||||
* Prevented the base geometry object of a prepared geometry to be garbage
|
* Prevented the base geometry object of a prepared geometry to be garbage
|
||||||
collected, which could lead to crash Django
|
collected, which could lead to crash Django
|
||||||
(`#21662 <http://code.djangoproject.com/ticket/21662>`_).
|
(:ticket:`21662`).
|
||||||
|
|
||||||
* Fixed a crash when executing the :djadmin:`changepassword` command when the
|
* Fixed a crash when executing the :djadmin:`changepassword` command when the
|
||||||
user object representation contained non-ASCII characters
|
user object representation contained non-ASCII characters
|
||||||
(`#21627 <http://code.djangoproject.com/ticket/21627>`_).
|
(:ticket:`21627`).
|
||||||
|
|
||||||
* The :djadmin:`collectstatic` command will raise an error rather than
|
* The :djadmin:`collectstatic` command will raise an error rather than
|
||||||
default to using the current working directory if :setting:`STATIC_ROOT` is
|
default to using the current working directory if :setting:`STATIC_ROOT` is
|
||||||
not set. Combined with the ``--clear`` option, the previous behavior could
|
not set. Combined with the ``--clear`` option, the previous behavior could
|
||||||
wipe anything below the current working directory
|
wipe anything below the current working directory
|
||||||
(`#21581 <http://code.djangoproject.com/ticket/21581>`_).
|
(:ticket:`21581`).
|
||||||
|
|
||||||
* Fixed mail encoding on Python 3.3.3+
|
* Fixed mail encoding on Python 3.3.3+
|
||||||
(`#21093 <http://code.djangoproject.com/ticket/21093>`_).
|
(:ticket:`21093`).
|
||||||
|
|
||||||
* Fixed an issue where when
|
* Fixed an issue where when
|
||||||
``settings.DATABASES['default']['AUTOCOMMIT'] = False``, the connection
|
``settings.DATABASES['default']['AUTOCOMMIT'] = False``, the connection
|
||||||
wasn't in autocommit mode but Django pretended it was.
|
wasn't in autocommit mode but Django pretended it was.
|
||||||
|
|
||||||
* Fixed a regression in multiple-table inheritance ``exclude()`` queries
|
* Fixed a regression in multiple-table inheritance ``exclude()`` queries
|
||||||
(`#21787 <http://code.djangoproject.com/ticket/21787>`_).
|
(:ticket:`21787`).
|
||||||
|
|
||||||
* Added missing items to ``django.utils.timezone.__all__``
|
* Added missing items to ``django.utils.timezone.__all__``
|
||||||
(`#21880 <http://code.djangoproject.com/ticket/21880>`_).
|
(:ticket:`21880`).
|
||||||
|
|
||||||
* Fixed a field misalignment issue with ``select_related()`` and model
|
* Fixed a field misalignment issue with ``select_related()`` and model
|
||||||
inheritance
|
inheritance
|
||||||
(`#21413 <http://code.djangoproject.com/ticket/21413>`_).
|
(:ticket:`21413`).
|
||||||
|
|
||||||
* Fixed join promotion for negated ``AND`` conditions
|
* Fixed join promotion for negated ``AND`` conditions
|
||||||
(`#21748 <http://code.djangoproject.com/ticket/21748>`_).
|
(:ticket:`21748`).
|
||||||
|
|
||||||
* Oracle database introspection now works with boolean and float fields
|
* Oracle database introspection now works with boolean and float fields
|
||||||
(`#19884 <http://code.djangoproject.com/ticket/19884>`_).
|
(:ticket:`19884`).
|
||||||
|
|
||||||
* Fixed an issue where lazy objects weren't actually marked as safe when passed
|
* Fixed an issue where lazy objects weren't actually marked as safe when passed
|
||||||
through :func:`~django.utils.safestring.mark_safe` and could end up being
|
through :func:`~django.utils.safestring.mark_safe` and could end up being
|
||||||
double-escaped (`#21882 <http://code.djangoproject.com/ticket/21882>`_).
|
double-escaped (:ticket:`21882`).
|
||||||
|
|
||||||
Additionally, Django's vendored version of six, :mod:`django.utils.six` has been
|
Additionally, Django's vendored version of six, :mod:`django.utils.six` has been
|
||||||
upgraded to the latest release (1.5.2).
|
upgraded to the latest release (1.5.2).
|
||||||
|
|
|
@ -136,51 +136,50 @@ Other bugfixes and changes
|
||||||
|
|
||||||
* Content retrieved from the GeoIP library is now properly decoded from its
|
* Content retrieved from the GeoIP library is now properly decoded from its
|
||||||
default ``iso-8859-1`` encoding
|
default ``iso-8859-1`` encoding
|
||||||
(`#21996 <http://code.djangoproject.com/ticket/21996>`_).
|
(:ticket:`21996`).
|
||||||
|
|
||||||
* Fixed ``AttributeError`` when using
|
* Fixed ``AttributeError`` when using
|
||||||
:meth:`~django.db.models.query.QuerySet.bulk_create` with ``ForeignObject``
|
:meth:`~django.db.models.query.QuerySet.bulk_create` with ``ForeignObject``
|
||||||
(`#21566 <http://code.djangoproject.com/ticket/21566>`_).
|
(:ticket:`21566`).
|
||||||
|
|
||||||
* Fixed crash of ``QuerySet``\s that use ``F() + timedelta()`` when their query
|
* Fixed crash of ``QuerySet``\s that use ``F() + timedelta()`` when their query
|
||||||
was compiled more once
|
was compiled more once
|
||||||
(`#21643 <http://code.djangoproject.com/ticket/21643>`_).
|
(:ticket:`21643`).
|
||||||
|
|
||||||
* Prevented custom ``widget`` class attribute of
|
* Prevented custom ``widget`` class attribute of
|
||||||
:class:`~django.forms.IntegerField` subclasses from being overwritten by the
|
:class:`~django.forms.IntegerField` subclasses from being overwritten by the
|
||||||
code in their ``__init__`` method
|
code in their ``__init__`` method
|
||||||
(`#22245 <http://code.djangoproject.com/ticket/22245>`_).
|
(:ticket:`22245`).
|
||||||
|
|
||||||
* Improved :func:`~django.utils.html.strip_tags` accuracy (but it still cannot
|
* Improved :func:`~django.utils.html.strip_tags` accuracy (but it still cannot
|
||||||
guarantee an HTML-safe result, as stated in the documentation).
|
guarantee an HTML-safe result, as stated in the documentation).
|
||||||
|
|
||||||
* Fixed a regression in the :mod:`django.contrib.gis` SQL compiler for
|
* Fixed a regression in the :mod:`django.contrib.gis` SQL compiler for
|
||||||
non-concrete fields (`#22250 <http://code.djangoproject.com/ticket/22250>`_).
|
non-concrete fields (:ticket:`22250`).
|
||||||
|
|
||||||
* Fixed :attr:`ModelAdmin.preserve_filters
|
* Fixed :attr:`ModelAdmin.preserve_filters
|
||||||
<django.contrib.admin.ModelAdmin.preserve_filters>` when running a site with
|
<django.contrib.admin.ModelAdmin.preserve_filters>` when running a site with
|
||||||
a URL prefix (`#21795 <http://code.djangoproject.com/ticket/21795>`_).
|
a URL prefix (:ticket:`21795`).
|
||||||
|
|
||||||
* Fixed a crash in the ``find_command`` management utility when the ``PATH``
|
* Fixed a crash in the ``find_command`` management utility when the ``PATH``
|
||||||
environment variable wasn't set
|
environment variable wasn't set
|
||||||
(`#22256 <http://code.djangoproject.com/ticket/22256>`_).
|
(:ticket:`22256`).
|
||||||
|
|
||||||
* Fixed :djadmin:`changepassword` on Windows
|
* Fixed :djadmin:`changepassword` on Windows
|
||||||
(`#22364 <https://code.djangoproject.com/ticket/22364>`_).
|
(:ticket:`22364`).
|
||||||
|
|
||||||
* Avoided shadowing deadlock exceptions on MySQL
|
* Avoided shadowing deadlock exceptions on MySQL
|
||||||
(`#22291 <https://code.djangoproject.com/ticket/22291>`_).
|
(:ticket:`22291`).
|
||||||
|
|
||||||
* Wrapped database exceptions in ``_set_autocommit``
|
* Wrapped database exceptions in ``_set_autocommit``
|
||||||
(`#22321 <https://code.djangoproject.com/ticket/22321>`_).
|
(:ticket:`22321`).
|
||||||
|
|
||||||
* Fixed atomicity when closing a database connection or when the database server
|
* Fixed atomicity when closing a database connection or when the database server
|
||||||
disconnects (`#21239 <https://code.djangoproject.com/ticket/21239>`_ and
|
disconnects (:ticket:`21239` and :ticket:`21202`)
|
||||||
`#21202 <https://code.djangoproject.com/ticket/21202>`_)
|
|
||||||
|
|
||||||
* Fixed regression in ``prefetch_related`` that caused the related objects
|
* Fixed regression in ``prefetch_related`` that caused the related objects
|
||||||
query to include an unnecessary join
|
query to include an unnecessary join
|
||||||
(`#21760 <https://code.djangoproject.com/ticket/21760>`_).
|
(:ticket:`21760`).
|
||||||
|
|
||||||
Additionally, Django's vendored version of six, :mod:`django.utils.six` has been
|
Additionally, Django's vendored version of six, :mod:`django.utils.six` has been
|
||||||
upgraded to the latest release (1.6.1).
|
upgraded to the latest release (1.6.1).
|
||||||
|
|
|
@ -11,12 +11,12 @@ Bugfixes
|
||||||
|
|
||||||
* Added backwards compatibility support for the :mod:`django.contrib.messages`
|
* Added backwards compatibility support for the :mod:`django.contrib.messages`
|
||||||
cookie format of Django 1.4 and earlier to facilitate upgrading to 1.6 from
|
cookie format of Django 1.4 and earlier to facilitate upgrading to 1.6 from
|
||||||
1.4 (`#22426 <http://code.djangoproject.com/ticket/22426>`_).
|
1.4 (:ticket:`22426`).
|
||||||
|
|
||||||
* Restored the ability to :meth:`~django.core.urlresolvers.reverse` views
|
* Restored the ability to :meth:`~django.core.urlresolvers.reverse` views
|
||||||
created using :func:`functools.partial()`
|
created using :func:`functools.partial()`
|
||||||
(`#22486 <http://code.djangoproject.com/ticket/22486>`_).
|
(:ticket:`22486`).
|
||||||
|
|
||||||
* Fixed the ``object_id`` of the ``LogEntry`` that's created after a user
|
* Fixed the ``object_id`` of the ``LogEntry`` that's created after a user
|
||||||
password change in the admin
|
password change in the admin
|
||||||
(`#22515 <http://code.djangoproject.com/ticket/22515>`_).
|
(:ticket:`22515`).
|
||||||
|
|
|
@ -50,14 +50,14 @@ Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* Made the ``year_lookup_bounds_for_datetime_field`` Oracle backend method
|
* Made the ``year_lookup_bounds_for_datetime_field`` Oracle backend method
|
||||||
Python 3 compatible (`#22551 <http://code.djangoproject.com/ticket/22551>`_).
|
Python 3 compatible (:ticket:`22551`).
|
||||||
|
|
||||||
* Fixed ``pgettext_lazy`` crash when receiving bytestring content on Python 2
|
* Fixed ``pgettext_lazy`` crash when receiving bytestring content on Python 2
|
||||||
(`#22565 <http://code.djangoproject.com/ticket/22565>`_).
|
(:ticket:`22565`).
|
||||||
|
|
||||||
* Fixed the SQL generated when filtering by a negated ``Q`` object that contains
|
* Fixed the SQL generated when filtering by a negated ``Q`` object that contains
|
||||||
a ``F`` object. (`#22429 <http://code.djangoproject.com/ticket/22429>`_).
|
a ``F`` object. (:ticket:`22429`).
|
||||||
|
|
||||||
* Avoided overwriting data fetched by ``select_related()`` in certain cases
|
* Avoided overwriting data fetched by ``select_related()`` in certain cases
|
||||||
which could cause minor performance regressions
|
which could cause minor performance regressions
|
||||||
(`#22508 <http://code.djangoproject.com/ticket/22508>`_).
|
(:ticket:`22508`).
|
||||||
|
|
|
@ -1173,9 +1173,7 @@ errors are handled by different cache backends.
|
||||||
``django.core.cache.backends.locmem.LocMemCache`` used to fail silently when
|
``django.core.cache.backends.locmem.LocMemCache`` used to fail silently when
|
||||||
such an error occurs, which is inconsistent with other backends and leads to
|
such an error occurs, which is inconsistent with other backends and leads to
|
||||||
cache-specific errors. This has been fixed in Django 1.7, see
|
cache-specific errors. This has been fixed in Django 1.7, see
|
||||||
`Ticket #21200`_ for more details.
|
:ticket:`21200` for more details.
|
||||||
|
|
||||||
.. _Ticket #21200: https://code.djangoproject.com/ticket/21200
|
|
||||||
|
|
||||||
Cache keys are now generated from the request's absolute URL
|
Cache keys are now generated from the request's absolute URL
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -1199,11 +1197,9 @@ instance using default routing behavior, overriding any manually specified
|
||||||
database routing. In Django 1.7, a value of ``None`` passed to db_manager will
|
database routing. In Django 1.7, a value of ``None`` passed to db_manager will
|
||||||
produce a router that *retains* any manually assigned database routing -- the
|
produce a router that *retains* any manually assigned database routing -- the
|
||||||
manager will *not* be reset. This was necessary to resolve an inconsistency in
|
manager will *not* be reset. This was necessary to resolve an inconsistency in
|
||||||
the way routing information cascaded over joins. See `Ticket #13724`_ for more
|
the way routing information cascaded over joins. See :ticket:`13724` for more
|
||||||
details.
|
details.
|
||||||
|
|
||||||
.. _Ticket #13724: https://code.djangoproject.com/ticket/13724
|
|
||||||
|
|
||||||
pytz may be required
|
pytz may be required
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue