summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMarkus Holtermann <info@markusholtermann.eu>2015-04-25 03:08:23 +0200
committerMarkus Holtermann <info@markusholtermann.eu>2015-04-25 18:17:06 +0200
commitfaad6070ee2eeea270c76381f9ca5999bf1ac15f (patch)
tree0af0e380b591ac85e4e3b7285c689c1b7ecb8d0c /django
parent1521861b3cc07fffdbe95c41000bf8e8ef92cc6b (diff)
Fixed #24701 -- Converted model manager names to unicode in migrations
Thanks to Reto Aebersold for reporting the issue and Tim Graham and Claude Paroz for the review.
Diffstat (limited to 'django')
-rw-r--r--django/db/migrations/state.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/django/db/migrations/state.py b/django/db/migrations/state.py
index 206141d6bd..0ed2b955ff 100644
--- a/django/db/migrations/state.py
+++ b/django/db/migrations/state.py
@@ -436,7 +436,7 @@ class ModelState(object):
bases = (models.Model,)
# Constructs all managers on the model
- managers = {}
+ managers_mapping = {}
def reconstruct_manager(mgr):
as_manager, manager_path, qs_path, args, kwargs = mgr.deconstruct()
@@ -448,16 +448,17 @@ class ModelState(object):
instance = manager_class(*args, **kwargs)
# We rely on the ordering of the creation_counter of the original
# instance
- managers[mgr.name] = (mgr.creation_counter, instance)
+ name = force_text(mgr.name)
+ managers_mapping[name] = (mgr.creation_counter, instance)
if hasattr(model, "_default_manager"):
- default_manager_name = model._default_manager.name
+ default_manager_name = force_text(model._default_manager.name)
# Make sure the default manager is always the first
if model._default_manager.use_in_migrations:
reconstruct_manager(model._default_manager)
else:
# Force this manager to be the first and thus default
- managers[default_manager_name] = (0, models.Manager())
+ managers_mapping[default_manager_name] = (0, models.Manager())
# Sort all managers by their creation counter
for _, manager, _ in sorted(model._meta.managers):
if manager.name == "_base_manager" or not manager.use_in_migrations:
@@ -467,7 +468,7 @@ class ModelState(object):
# instance for further processing
managers = [
(name, instance) for name, (cc, instance) in
- sorted(managers.items(), key=lambda v: v[1])
+ sorted(managers_mapping.items(), key=lambda v: v[1])
]
if managers == [(default_manager_name, models.Manager())]:
managers = []
@@ -513,6 +514,7 @@ class ModelState(object):
# Sort all managers by their creation counter
sorted_managers = sorted(self.managers, key=lambda v: v[1].creation_counter)
for mgr_name, manager in sorted_managers:
+ mgr_name = force_text(mgr_name)
as_manager, manager_path, qs_path, args, kwargs = manager.deconstruct()
if as_manager:
qs_class = import_string(qs_path)