From 9d1ee6f8964b9ab126a1c164456e73a48a39e750 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 1 Jun 2016 13:02:25 +0100 Subject: [PATCH] Use '.callback' property instead of private attributes when inspecting urlpatterns --- rest_framework/compat.py | 4 ++++ rest_framework/urlpatterns.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index d5c7a19d3..7a0aea3db 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -60,17 +60,21 @@ def distinct(queryset, base): 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) ] + # contrib.postgres only supported from 1.8 onwards. try: from django.contrib.postgres import fields as postgres_fields diff --git a/rest_framework/urlpatterns.py b/rest_framework/urlpatterns.py index 5347b3bc1..7a02bb0f0 100644 --- a/rest_framework/urlpatterns.py +++ b/rest_framework/urlpatterns.py @@ -24,7 +24,7 @@ def apply_suffix_patterns(urlpatterns, suffix_pattern, suffix_required): else: # Regular URL pattern regex = urlpattern.regex.pattern.rstrip('$').rstrip('/') + suffix_pattern - view = urlpattern._callback or urlpattern._callback_str + view = urlpattern.callback kwargs = urlpattern.default_args name = urlpattern.name # Add in both the existing and the new urlpattern