Removed dumpdata --natural option and serializers use_natural_keys parameter.

Per deprecation timeline; refs #13252.
This commit is contained in:
Tim Graham 2015-01-17 20:18:34 -05:00
parent 1d975ff44b
commit c3336e7e4f
5 changed files with 4 additions and 45 deletions

View File

@ -1,12 +1,9 @@
import warnings
from collections import OrderedDict from collections import OrderedDict
from django.apps import apps from django.apps import apps
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
from django.core import serializers from django.core import serializers
from django.db import router, DEFAULT_DB_ALIAS from django.db import router, DEFAULT_DB_ALIAS
from django.utils.deprecation import RemovedInDjango19Warning
class Command(BaseCommand): class Command(BaseCommand):
@ -28,8 +25,6 @@ class Command(BaseCommand):
parser.add_argument('-e', '--exclude', dest='exclude', action='append', default=[], parser.add_argument('-e', '--exclude', dest='exclude', action='append', default=[],
help='An app_label or app_label.ModelName to exclude ' help='An app_label or app_label.ModelName to exclude '
'(use multiple --exclude to exclude multiple apps/models).') '(use multiple --exclude to exclude multiple apps/models).')
parser.add_argument('-n', '--natural', action='store_true', dest='use_natural_keys', default=False,
help='Use natural keys if they are available (deprecated: use --natural-foreign instead).')
parser.add_argument('--natural-foreign', action='store_true', dest='use_natural_foreign_keys', default=False, parser.add_argument('--natural-foreign', action='store_true', dest='use_natural_foreign_keys', default=False,
help='Use natural foreign keys if they are available.') help='Use natural foreign keys if they are available.')
parser.add_argument('--natural-primary', action='store_true', dest='use_natural_primary_keys', default=False, parser.add_argument('--natural-primary', action='store_true', dest='use_natural_primary_keys', default=False,
@ -51,11 +46,7 @@ class Command(BaseCommand):
excludes = options.get('exclude') excludes = options.get('exclude')
output = options.get('output') output = options.get('output')
show_traceback = options.get('traceback') show_traceback = options.get('traceback')
use_natural_keys = options.get('use_natural_keys') use_natural_foreign_keys = options.get('use_natural_foreign_keys')
if use_natural_keys:
warnings.warn("``--natural`` is deprecated; use ``--natural-foreign`` instead.",
RemovedInDjango19Warning)
use_natural_foreign_keys = options.get('use_natural_foreign_keys') or use_natural_keys
use_natural_primary_keys = options.get('use_natural_primary_keys') use_natural_primary_keys = options.get('use_natural_primary_keys')
use_base_manager = options.get('use_base_manager') use_base_manager = options.get('use_base_manager')
pks = options.get('primary_keys') pks = options.get('primary_keys')

View File

@ -1,11 +1,8 @@
""" """
Module for abstract serializer/unserializer base classes. Module for abstract serializer/unserializer base classes.
""" """
import warnings
from django.db import models from django.db import models
from django.utils import six from django.utils import six
from django.utils.deprecation import RemovedInDjango19Warning
class SerializerDoesNotExist(KeyError): class SerializerDoesNotExist(KeyError):
@ -40,11 +37,7 @@ class Serializer(object):
self.stream = options.pop("stream", six.StringIO()) self.stream = options.pop("stream", six.StringIO())
self.selected_fields = options.pop("fields", None) self.selected_fields = options.pop("fields", None)
self.use_natural_keys = options.pop("use_natural_keys", False) self.use_natural_foreign_keys = options.pop('use_natural_foreign_keys', False)
if self.use_natural_keys:
warnings.warn("``use_natural_keys`` is deprecated; use ``use_natural_foreign_keys`` instead.",
RemovedInDjango19Warning)
self.use_natural_foreign_keys = options.pop('use_natural_foreign_keys', False) or self.use_natural_keys
self.use_natural_primary_keys = options.pop('use_natural_primary_keys', False) self.use_natural_primary_keys = options.pop('use_natural_primary_keys', False)
self.start_serialization() self.start_serialization()

View File

@ -304,15 +304,6 @@ When this option is specified, Django will not provide the primary key in the
serialized data of this object since it can be calculated during serialized data of this object since it can be calculated during
deserialization. deserialization.
.. django-admin-option:: --natural
.. deprecated:: 1.7
Equivalent to the :djadminopt:`--natural-foreign` option; use that instead.
Use :ref:`natural keys <topics-serialization-natural-keys>` to represent
any foreign key and many-to-many relationship with a model that provides
a natural key definition.
.. django-admin-option:: --pks .. django-admin-option:: --pks
By default, ``dumpdata`` will output all the records of the model, but By default, ``dumpdata`` will output all the records of the model, but

View File

@ -479,19 +479,6 @@ line flags to generate natural keys.
natural keys during serialization, but *not* be able to load those natural keys during serialization, but *not* be able to load those
key values, just don't define the ``get_by_natural_key()`` method. key values, just don't define the ``get_by_natural_key()`` method.
.. versionchanged:: 1.7
Previously there was only a ``use_natural_keys`` argument for
``serializers.serialize()`` and the `-n` or `--natural` command line flags.
These have been deprecated in favor of the ``use_natural_foreign_keys`` and
``use_natural_primary_keys`` arguments and the corresponding
:djadminopt:`--natural-foreign` and :djadminopt:`--natural-primary` options
for :djadmin:`dumpdata`.
The original argument and command line flags remain for backwards
compatibility and map to the new ``use_natural_foreign_keys`` argument and
`--natural-foreign` command line flag. They'll be removed in Django 1.9.
Dependencies during serialization Dependencies during serialization
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -23,9 +23,8 @@ from django.core.serializers.base import DeserializationError
from django.core.serializers.xml_serializer import DTDForbidden from django.core.serializers.xml_serializer import DTDForbidden
from django.db import connection, models from django.db import connection, models
from django.http import HttpResponse from django.http import HttpResponse
from django.test import ignore_warnings, skipUnlessDBFeature, TestCase from django.test import skipUnlessDBFeature, TestCase
from django.utils import six from django.utils import six
from django.utils.deprecation import RemovedInDjango19Warning
from django.utils.functional import curry from django.utils.functional import curry
from .models import (BinaryData, BooleanData, CharData, DateData, DateTimeData, EmailData, from .models import (BinaryData, BooleanData, CharData, DateData, DateTimeData, EmailData,
@ -483,7 +482,6 @@ def serializerTest(format, self):
self.assertEqual(count, klass.objects.count()) self.assertEqual(count, klass.objects.count())
@ignore_warnings(category=RemovedInDjango19Warning) # for use_natural_keys
def naturalKeySerializerTest(format, self): def naturalKeySerializerTest(format, self):
# Create all the objects defined in the test data # Create all the objects defined in the test data
objects = [] objects = []
@ -496,10 +494,9 @@ def naturalKeySerializerTest(format, self):
for klass in instance_count: for klass in instance_count:
instance_count[klass] = klass.objects.count() instance_count[klass] = klass.objects.count()
# use_natural_keys is deprecated and to be removed in Django 1.9
# Serialize the test database # Serialize the test database
serialized_data = serializers.serialize(format, objects, indent=2, serialized_data = serializers.serialize(format, objects, indent=2,
use_natural_keys=True) use_natural_foreign_keys=True)
for obj in serializers.deserialize(format, serialized_data): for obj in serializers.deserialize(format, serialized_data):
obj.save() obj.save()