From c32bc1a7a7bbb3d5bd0a2c11bc77dd5ab1c32fbc Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Tue, 9 Sep 2014 08:29:49 -0400 Subject: Fixed #11775 -- Made ABSOLUTE_URL_OVERRIDES work with models that don't define get_absolute_url(). Thanks jukvalim for the report and initial patch, and Preston Timmons for review. --- django/db/models/base.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'django') diff --git a/django/db/models/base.py b/django/db/models/base.py index 2cad6ee5a5..d416b65ccf 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import copy import inspect import sys -from functools import update_wrapper import warnings from django.apps import apps @@ -346,9 +345,11 @@ class ModelBase(type): if cls.__doc__ is None: cls.__doc__ = "%s(%s)" % (cls.__name__, ", ".join(f.attname for f in opts.fields)) - if hasattr(cls, 'get_absolute_url'): - cls.get_absolute_url = update_wrapper(curry(get_absolute_url, opts, cls.get_absolute_url), - cls.get_absolute_url) + get_absolute_url_override = settings.ABSOLUTE_URL_OVERRIDES.get( + '%s.%s' % (opts.app_label, opts.model_name) + ) + if get_absolute_url_override: + setattr(cls, 'get_absolute_url', get_absolute_url_override) ensure_default_manager(cls) signals.class_prepared.send(sender=cls) @@ -1571,16 +1572,6 @@ def method_get_order(ordered_obj, self): ordered_obj.objects.filter(**{order_name: rel_val}).values(pk_name)] -############################################## -# HELPER FUNCTIONS (CURRIED MODEL FUNCTIONS) # -############################################## - -def get_absolute_url(opts, func, self, *args, **kwargs): - return settings.ABSOLUTE_URL_OVERRIDES.get( - '%s.%s' % (opts.app_label, opts.model_name), func - )(self, *args, **kwargs) - - ######## # MISC # ######## -- cgit v1.3