From 1707f79b74b32ad20ee36e03818688ee4dc02d21 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 28 Jul 2006 02:09:38 +0000 Subject: [PATCH] Added django.db.models.permalink decorator, which decorates a function that returns a viewname, viewargs and viewkwargs. The decorator returns the result of a reverse URL lookup on those parameters. Documentation is forthcoming. git-svn-id: http://code.djangoproject.com/svn/django/trunk@3472 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/__init__.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/django/db/models/__init__.py b/django/db/models/__init__.py index 82b1238723..54df38cc7b 100644 --- a/django/db/models/__init__.py +++ b/django/db/models/__init__.py @@ -16,6 +16,18 @@ from django.utils.text import capfirst # Admin stages. ADD, CHANGE, BOTH = 1, 2, 3 +# Decorator. Takes a function that returns a tuple in this format: +# (viewname, viewargs, viewkwargs) +# Returns a function that calls urlresolvers.reverse() on that data, to return +# the URL for those parameters. +def permalink(func): + from django.core.urlresolvers import reverse + def inner(*args, **kwargs): + bits = func(*args, **kwargs) + viewname = bits[0] + return reverse(bits[0], None, *bits[1:2]) + return inner + class LazyDate(object): """ Use in limit_choices_to to compare the field to dates calculated at run time