[PATCH] Pass context to static.File processors
Attached are patches for twisted.web2 and nevow which will allow File processors to take three arguments (path, context, registry). It keeps backwards-compatibility for processors that take only (path, registry), mainly because they're a pain to update ;) I can't find any places where the registry is actually used, but I've left it in to make backwards-compatibilty easier. So, anyone's thoughts? Can we put these in? -- Alex Levy WWW: http://mesozoic.geecs.org "Never let your sense of morals prevent you from doing what is right." -- Salvor Hardin, Isaac Asimov's _Foundation_ Index: nevow/static.py =================================================================== --- nevow/static.py (revision 1035) +++ nevow/static.py (working copy) @@ -231,9 +231,15 @@ else: processor = self.processors.get(fpath.splitext()[1]) if processor: - return ( - inevow.IResource(processor(fpath.path, self.registry)), - segments[1:]) + # Pass our context on to all processors (with backwards-compatibility) + try: + resc = processor(fpath.path, ctx, self.registry) + except TypeError: + warnings.warn( + '%r: File processors now take three arguments (path, context, registry)' + % (processor), DeprecationWarning, stacklevel=2) + resc = processor(fpath.path, self.registry) + return (inevow.IResource(resc), segments[1:]) return self.createSimilarFile(fpath.path), segments[1:] Index: twisted/web2/static.py =================================================================== --- twisted/web2/static.py (revision 12816) +++ twisted/web2/static.py (working copy) @@ -203,7 +203,7 @@ def putChild(self, name, child): self.children[name] = child - def locateChild(self, request, segments): + def locateChild(self, ctx, segments): r = self.children.get(segments[0], None) if r: return r, segments[1:] @@ -237,9 +237,15 @@ else: processor = self.processors.get(fpath.splitext()[1]) if processor: - return ( - processor(fpath.path, self.registry), - segments[1:]) + # Pass our context on to all processors (with backwards-compatibility) + try: + resc = processor(fpath.path, ctx, self.registry) + except TypeError: + warnings.warn( + '%r: File processors now take three arguments (path, context, registry)' + % (processor), DeprecationWarning, stacklevel=2) + resc = processor(fpath.path, self.registry) + return (resc, segments[1:]) return self.createSimilarFile(fpath.path), segments[1:]
participants (1)
-
Alex Levy