summaryrefslogtreecommitdiff
path: root/django/core/serializers
diff options
context:
space:
mode:
authorVytis Banaitis <vytis.banaitis@gmail.com>2017-02-01 18:41:56 +0200
committerTim Graham <timograham@gmail.com>2017-02-01 11:41:56 -0500
commit8838d4dd498c8f66ea4237fe8a79a5f77d6f95c9 (patch)
treeb75fa27930b8758ad36669b523b084ac09ce290b /django/core/serializers
parent0ec4dc91e0e7befdd06aa0613b5d0fbe3c785ee7 (diff)
Refs #23919 -- Replaced kwargs.pop() with keyword-only arguments.
Diffstat (limited to 'django/core/serializers')
-rw-r--r--django/core/serializers/base.py15
-rw-r--r--django/core/serializers/python.py14
-rw-r--r--django/core/serializers/xml_serializer.py6
3 files changed, 16 insertions, 19 deletions
diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py
index d1a5344064..2ffe022da9 100644
--- a/django/core/serializers/base.py
+++ b/django/core/serializers/base.py
@@ -62,19 +62,18 @@ class Serializer:
progress_class = ProgressBar
stream_class = StringIO
- def serialize(self, queryset, **options):
+ def serialize(self, queryset, *, stream=None, fields=None, use_natural_foreign_keys=False,
+ use_natural_primary_keys=False, progress_output=None, object_count=0, **options):
"""
Serialize a queryset.
"""
self.options = options
- self.stream = options.pop("stream", self.stream_class())
- self.selected_fields = options.pop("fields", None)
- self.use_natural_foreign_keys = options.pop('use_natural_foreign_keys', False)
- self.use_natural_primary_keys = options.pop('use_natural_primary_keys', False)
- progress_bar = self.progress_class(
- options.pop('progress_output', None), options.pop('object_count', 0)
- )
+ self.stream = stream if stream is not None else self.stream_class()
+ self.selected_fields = fields
+ self.use_natural_foreign_keys = use_natural_foreign_keys
+ self.use_natural_primary_keys = use_natural_primary_keys
+ progress_bar = self.progress_class(progress_output, object_count)
self.start_serialization()
self.first = True
diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py
index 7b7510be41..a299ed62c8 100644
--- a/django/core/serializers/python.py
+++ b/django/core/serializers/python.py
@@ -79,15 +79,13 @@ class Serializer(base.Serializer):
return self.objects
-def Deserializer(object_list, **options):
+def Deserializer(object_list, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False, **options):
"""
Deserialize simple Python objects back into Django ORM instances.
It's expected that you pass the Python objects themselves (instead of a
stream or a string) to the constructor
"""
- db = options.pop('using', DEFAULT_DB_ALIAS)
- ignore = options.pop('ignorenonexistent', False)
field_names_cache = {} # Model: <list of field_names>
for d in object_list:
@@ -95,7 +93,7 @@ def Deserializer(object_list, **options):
try:
Model = _get_model(d["model"])
except base.DeserializationError:
- if ignore:
+ if ignorenonexistent:
continue
else:
raise
@@ -114,7 +112,7 @@ def Deserializer(object_list, **options):
# Handle each field
for (field_name, field_value) in d["fields"].items():
- if ignore and field_name not in field_names:
+ if ignorenonexistent and field_name not in field_names:
# skip fields no longer on model
continue
@@ -131,7 +129,7 @@ def Deserializer(object_list, **options):
if hasattr(model._default_manager, 'get_by_natural_key'):
def m2m_convert(value):
if hasattr(value, '__iter__') and not isinstance(value, str):
- return model._default_manager.db_manager(db).get_by_natural_key(*value).pk
+ return model._default_manager.db_manager(using).get_by_natural_key(*value).pk
else:
return force_text(model._meta.pk.to_python(value), strings_only=True)
else:
@@ -154,7 +152,7 @@ def Deserializer(object_list, **options):
field_name = field.remote_field.field_name
if hasattr(default_manager, 'get_by_natural_key'):
if hasattr(field_value, '__iter__') and not isinstance(field_value, str):
- obj = default_manager.db_manager(db).get_by_natural_key(*field_value)
+ obj = default_manager.db_manager(using).get_by_natural_key(*field_value)
value = getattr(obj, field.remote_field.field_name)
# If this is a natural foreign key to an object that
# has a FK/O2O as the foreign key, use the FK value
@@ -177,7 +175,7 @@ def Deserializer(object_list, **options):
except Exception as e:
raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), field_value)
- obj = base.build_instance(Model, data, db)
+ obj = base.build_instance(Model, data, using)
yield base.DeserializedObject(obj, m2m_data)
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index ddf0bf3e1a..7e64952074 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -157,11 +157,11 @@ class Deserializer(base.Deserializer):
Deserialize XML.
"""
- def __init__(self, stream_or_string, **options):
+ def __init__(self, stream_or_string, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False, **options):
super().__init__(stream_or_string, **options)
self.event_stream = pulldom.parse(self.stream, self._make_parser())
- self.db = options.pop('using', DEFAULT_DB_ALIAS)
- self.ignore = options.pop('ignorenonexistent', False)
+ self.db = using
+ self.ignore = ignorenonexistent
def _make_parser(self):
"""Create a hardened XML parser (no custom/external entities)."""