Update Link class to accept callables for a link's kwargs

This commit is contained in:
Roberto Rosario
2015-06-08 15:57:12 -04:00
parent 9db47a843f
commit dcd062f122

View File

@@ -175,17 +175,23 @@ class Link(object):
else:
args = [Variable(self.args)]
kwargs = {key: Variable(value) for key, value in self.kwargs.iteritems()}
# Use Django's exact {% url %} code to resolve the link
node = URLNode(view_name=view_name, args=args, kwargs=kwargs, asvar=None)
# If we were passed an instance of the view context object we are
# resolving, inject it into the context. This help resolve links for
# object lists.
if resolved_object:
context['resolved_object'] = resolved_object
try:
self.kwargs = self.kwargs(context)
except TypeError:
# Is not a callable
pass
kwargs = {key: Variable(value) for key, value in self.kwargs.iteritems()}
# Use Django's exact {% url %} code to resolve the link
node = URLNode(view_name=view_name, args=args, kwargs=kwargs, asvar=None)
resolved_link.url = node.render(context)
# This is for links that should be displayed but that are not clickable