diff options
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/script.py')
-rwxr-xr-x | lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/script.py | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/script.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/script.py deleted file mode 100755 index 1b50105c..00000000 --- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/web/script.py +++ /dev/null @@ -1,170 +0,0 @@ -# -*- test-case-name: twisted.web.test.test_script -*- -# Copyright (c) Twisted Matrix Laboratories. -# See LICENSE for details. - -""" -I contain PythonScript, which is a very simple python script resource. -""" - -import os, traceback - -try: - import cStringIO as StringIO -except ImportError: - import StringIO - -from twisted import copyright -from twisted.python.compat import execfile -from twisted.web import http, server, static, resource, html - - -rpyNoResource = """<p>You forgot to assign to the variable "resource" in your script. For example:</p> -<pre> -# MyCoolWebApp.rpy - -import mygreatresource - -resource = mygreatresource.MyGreatResource() -</pre> -""" - -class AlreadyCached(Exception): - """This exception is raised when a path has already been cached. - """ - -class CacheScanner: - def __init__(self, path, registry): - self.path = path - self.registry = registry - self.doCache = 0 - - def cache(self): - c = self.registry.getCachedPath(self.path) - if c is not None: - raise AlreadyCached(c) - self.recache() - - def recache(self): - self.doCache = 1 - -noRsrc = resource.ErrorPage(500, "Whoops! Internal Error", rpyNoResource) - -def ResourceScript(path, registry): - """ - I am a normal py file which must define a 'resource' global, which should - be an instance of (a subclass of) web.resource.Resource; it will be - renderred. - """ - cs = CacheScanner(path, registry) - glob = {'__file__': path, - 'resource': noRsrc, - 'registry': registry, - 'cache': cs.cache, - 'recache': cs.recache} - try: - execfile(path, glob, glob) - except AlreadyCached, ac: - return ac.args[0] - rsrc = glob['resource'] - if cs.doCache and rsrc is not noRsrc: - registry.cachePath(path, rsrc) - return rsrc - -def ResourceTemplate(path, registry): - from quixote import ptl_compile - - glob = {'__file__': path, - 'resource': resource.ErrorPage(500, "Whoops! Internal Error", - rpyNoResource), - 'registry': registry} - - e = ptl_compile.compile_template(open(path), path) - exec e in glob - return glob['resource'] - - -class ResourceScriptWrapper(resource.Resource): - - def __init__(self, path, registry=None): - resource.Resource.__init__(self) - self.path = path - self.registry = registry or static.Registry() - - def render(self, request): - res = ResourceScript(self.path, self.registry) - return res.render(request) - - def getChildWithDefault(self, path, request): - res = ResourceScript(self.path, self.registry) - return res.getChildWithDefault(path, request) - - - -class ResourceScriptDirectory(resource.Resource): - """ - L{ResourceScriptDirectory} is a resource which serves scripts from a - filesystem directory. File children of a L{ResourceScriptDirectory} will - be served using L{ResourceScript}. Directory children will be served using - another L{ResourceScriptDirectory}. - - @ivar path: A C{str} giving the filesystem path in which children will be - looked up. - - @ivar registry: A L{static.Registry} instance which will be used to decide - how to interpret scripts found as children of this resource. - """ - def __init__(self, pathname, registry=None): - resource.Resource.__init__(self) - self.path = pathname - self.registry = registry or static.Registry() - - def getChild(self, path, request): - fn = os.path.join(self.path, path) - - if os.path.isdir(fn): - return ResourceScriptDirectory(fn, self.registry) - if os.path.exists(fn): - return ResourceScript(fn, self.registry) - return resource.NoResource() - - def render(self, request): - return resource.NoResource().render(request) - - -class PythonScript(resource.Resource): - """I am an extremely simple dynamic resource; an embedded python script. - - This will execute a file (usually of the extension '.epy') as Python code, - internal to the webserver. - """ - isLeaf = 1 - def __init__(self, filename, registry): - """Initialize me with a script name. - """ - self.filename = filename - self.registry = registry - - def render(self, request): - """Render me to a web client. - - Load my file, execute it in a special namespace (with 'request' and - '__file__' global vars) and finish the request. Output to the web-page - will NOT be handled with print - standard output goes to the log - but - with request.write. - """ - request.setHeader("x-powered-by","Twisted/%s" % copyright.version) - namespace = {'request': request, - '__file__': self.filename, - 'registry': self.registry} - try: - execfile(self.filename, namespace, namespace) - except IOError, e: - if e.errno == 2: #file not found - request.setResponseCode(http.NOT_FOUND) - request.write(resource.NoResource("File not found.").render(request)) - except: - io = StringIO.StringIO() - traceback.print_exc(file=io) - request.write(html.PRE(io.getvalue())) - request.finish() - return server.NOT_DONE_YET |