root/galaxy-central/eggs/Cheetah-2.2.2-py2.6-macosx-10.6-universal-ucs2.egg/Cheetah/Servlet.py @ 3

リビジョン 3, 3.3 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1'''
2Provides an abstract Servlet baseclass for Cheetah's Template class
3'''
4
5import sys
6import os.path
7
8isWebwareInstalled = False
9try:
10    try:
11        from ds.appserver.Servlet import Servlet as BaseServlet
12    except:
13        from WebKit.Servlet import Servlet as BaseServlet
14    isWebwareInstalled = True
15
16    if not issubclass(BaseServlet, object):
17        class NewStyleBaseServlet(BaseServlet, object):
18            pass
19        BaseServlet = NewStyleBaseServlet
20except:
21    class BaseServlet(object):
22        _reusable = 1
23        _threadSafe = 0
24   
25        def awake(self, transaction):
26            pass
27           
28        def sleep(self, transaction):
29            pass
30
31        def shutdown(self):
32            pass
33
34##################################################
35## CLASSES
36
37class Servlet(BaseServlet):
38   
39    """This class is an abstract baseclass for Cheetah.Template.Template.
40
41    It wraps WebKit.Servlet and provides a few extra convenience methods that
42    are also found in WebKit.Page.  It doesn't do any of the HTTP method
43    resolution that is done in WebKit.HTTPServlet
44    """
45   
46    transaction = None
47    application = None
48    request = None
49    session = None
50   
51    def __init__(self, *args, **kwargs):
52        super(Servlet, self).__init__(*args, **kwargs)
53       
54        # this default will be changed by the .awake() method
55        self._CHEETAH__isControlledByWebKit = False
56       
57    ## methods called by Webware during the request-response
58       
59    def awake(self, transaction):
60        super(Servlet, self).awake(transaction)
61       
62        # a hack to signify that the servlet is being run directly from WebKit
63        self._CHEETAH__isControlledByWebKit = True
64       
65        self.transaction = transaction       
66        #self.application = transaction.application
67        self.response = response = transaction.response
68        self.request = transaction.request
69
70        # Temporary hack to accomodate bug in
71        # WebKit.Servlet.Servlet.serverSidePath: it uses
72        # self._request even though this attribute does not exist.
73        # This attribute WILL disappear in the future.
74        self._request = transaction.request()
75
76       
77        self.session = transaction.session
78        self.write = response().write
79        #self.writeln = response.writeln
80       
81    def respond(self, trans=None):
82        raise NotImplementedError("""\
83couldn't find the template's main method.  If you are using #extends
84without #implements, try adding '#implements respond' to your template
85definition.""")
86
87    def sleep(self, transaction):
88        super(Servlet, self).sleep(transaction)
89        self.session = None
90        self.request  = None
91        self._request  = None       
92        self.response = None
93        self.transaction = None
94
95    def shutdown(self):
96        pass
97
98    def serverSidePath(self, path=None,
99                       normpath=os.path.normpath,
100                       abspath=os.path.abspath
101                       ):
102       
103        if self._CHEETAH__isControlledByWebKit:
104            return super(Servlet, self).serverSidePath(path)
105        elif path:
106            return normpath(abspath(path.replace("\\",'/')))
107        elif hasattr(self, '_filePath') and self._filePath:
108            return normpath(abspath(self._filePath))
109        else:
110            return None
111
112# vim: shiftwidth=4 tabstop=4 expandtab
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。