From 1e20f5c9619a6d6b092fac0e7789903e1f0096fb Mon Sep 17 00:00:00 2001 From: Levi Payne Date: Mon, 2 Oct 2017 20:06:28 -0400 Subject: [PATCH] Extract modern code from get_names_and_managers in compat.py and remove compat code --- rest_framework/compat.py | 19 ------------------- rest_framework/utils/representation.py | 9 +++++++-- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index c4b21feca..a6a481d7c 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -78,25 +78,6 @@ def distinct(queryset, base): return queryset.distinct() -# TODO: Remove -# Obtaining manager instances and names from model options differs after 1.10. -def get_names_and_managers(options): - if django.VERSION >= (1, 10): - # Django 1.10 onwards provides a `.managers` property on the Options. - return [ - (manager.name, manager) - for manager - in options.managers - ] - # For Django 1.8 and 1.9, use the three-tuple information provided - # by .concrete_managers and .abstract_managers - return [ - (manager_info[1], manager_info[2]) - for manager_info - in (options.concrete_managers + options.abstract_managers) - ] - - # TODO: Remove # field.rel is deprecated from 1.9 onwards def get_remote_field(field, **kwargs): diff --git a/rest_framework/utils/representation.py b/rest_framework/utils/representation.py index 32e6d246a..deeaf1f63 100644 --- a/rest_framework/utils/representation.py +++ b/rest_framework/utils/representation.py @@ -10,13 +10,18 @@ from django.db import models from django.utils.encoding import force_text from django.utils.functional import Promise -from rest_framework.compat import get_names_and_managers, unicode_repr +from rest_framework.compat import unicode_repr def manager_repr(value): model = value.model opts = model._meta - for manager_name, manager_instance in get_names_and_managers(opts): + names_and_managers = [ + (manager.name, manager) + for manager + in opts.managers + ] + for manager_name, manager_instance in names_and_managers: if manager_instance == value: return '%s.%s.all()' % (model._meta.object_name, manager_name) return repr(value)