MultiViews now pass extra_context and node to view functions that accept them as...
authorJoseph Spiros <joseph.spiros@ithinksw.com>
Tue, 29 Jun 2010 23:25:49 +0000 (19:25 -0400)
committerJoseph Spiros <joseph.spiros@ithinksw.com>
Tue, 29 Jun 2010 23:34:27 +0000 (19:34 -0400)
models/nodes.py

index 9c18e52..a8125ee 100644 (file)
@@ -4,6 +4,8 @@ from django.contrib.contenttypes import generic
 from django.contrib.sites.models import Site
 from django.http import HttpResponse, HttpResponseServerError, HttpResponseRedirect
 from django.core.servers.basehttp import FileWrapper
 from django.contrib.sites.models import Site
 from django.http import HttpResponse, HttpResponseServerError, HttpResponseRedirect
 from django.core.servers.basehttp import FileWrapper
+from django.core.urlresolvers import resolve
+from inspect import getargspec
 from philo.models.base import TreeEntity, Entity, QuerySetMapper
 from philo.utils import ContentTypeSubclassLimiter
 from philo.validators import RedirectValidator
 from philo.models.base import TreeEntity, Entity, QuerySetMapper
 from philo.utils import ContentTypeSubclassLimiter
 from philo.validators import RedirectValidator
@@ -62,8 +64,14 @@ class MultiView(View):
                if not subpath:
                        subpath = ""
                subpath = "/" + subpath
                if not subpath:
                        subpath = ""
                subpath = "/" + subpath
-               from django.core.urlresolvers import resolve
                view, args, kwargs = resolve(subpath, urlconf=self)
                view, args, kwargs = resolve(subpath, urlconf=self)
+               view_args = getargspec(view)[0]
+               if extra_context is not None and 'extra_context' in view_args:
+                       if 'extra_context' in kwargs:
+                               extra_context.update(kwargs['extra_context'])
+                       kwargs['extra_context'] = extra_context
+               if 'node' in view_args:
+                       kwargs['node'] = node
                return view(request, *args, **kwargs)
        
        class Meta:
                return view(request, *args, **kwargs)
        
        class Meta: