root/Cheetah/Servlet.py

Revision f17b49bd2a9cb5c693518283252cdbca4d04136b, 3.9 kB (checked in by Jason Michalski <armooo@armooo.net>, 2 years ago)

Lets try the import again

  • Property mode set to 100644
Line 
1 #!/usr/bin/env python
2 # $Id: Servlet.py,v 1.40 2006/02/04 23:06:15 tavis_rudd Exp $
3 """Provides an abstract Servlet baseclass for Cheetah's Template class
4
5 Meta-Data
6 ================================================================================
7 Author: Tavis Rudd <tavis@damnsimple.com>
8 License: This software is released for unlimited distribution under the
9          terms of the MIT license.  See the LICENSE file.
10 Version: $Revision: 1.40 $
11 Start Date: 2001/10/03
12 Last Revision Date: $Date: 2006/02/04 23:06:15 $
13 """ 
14 __author__ = "Tavis Rudd <tavis@damnsimple.com>"
15 __revision__ = "$Revision: 1.40 $"[11:-2]
16
17 import sys
18 import os.path
19
20 isWebwareInstalled = False
21 try:
22     if 'ds.appserver' in sys.modules.keys():
23         from ds.appserver.Servlet import Servlet as BaseServlet
24     else:
25         from WebKit.Servlet import Servlet as BaseServlet
26     isWebwareInstalled = True
27
28     if not issubclass(BaseServlet, object):
29         class NewStyleBaseServlet(BaseServlet, object): pass
30         BaseServlet = NewStyleBaseServlet
31 except:
32     class BaseServlet(object):
33         _reusable = 1
34         _threadSafe = 0
35    
36         def __init__(self):
37             pass
38            
39         def awake(self, transaction):
40             pass
41            
42         def sleep(self, transaction):
43             pass
44
45         def shutdown(self):
46             pass
47
48 ##################################################
49 ## CLASSES
50
51 class Servlet(BaseServlet):
52    
53     """This class is an abstract baseclass for Cheetah.Template.Template.
54
55     It wraps WebKit.Servlet and provides a few extra convenience methods that
56     are also found in WebKit.Page.  It doesn't do any of the HTTP method
57     resolution that is done in WebKit.HTTPServlet
58     """
59    
60     transaction = None
61     application = None
62     request = None
63     session = None
64    
65     def __init__(self):
66         BaseServlet.__init__(self)
67        
68         # this default will be changed by the .awake() method
69         self._CHEETAH__isControlledByWebKit = False
70        
71     ## methods called by Webware during the request-response
72         
73     def awake(self, transaction):
74         BaseServlet.awake(self, transaction)
75        
76         # a hack to signify that the servlet is being run directly from WebKit
77         self._CHEETAH__isControlledByWebKit = True
78        
79         self.transaction = transaction       
80         #self.application = transaction.application
81         self.response = response = transaction.response
82         self.request = transaction.request
83
84         # Temporary hack to accomodate bug in
85         # WebKit.Servlet.Servlet.serverSidePath: it uses
86         # self._request even though this attribute does not exist.
87         # This attribute WILL disappear in the future.
88         self._request = transaction.request()
89
90        
91         self.session = transaction.session
92         self.write = response().write
93         #self.writeln = response.writeln
94         
95     def respond(self, trans=None):
96         raise NotImplementedError("""\
97 couldn't find the template's main method.  If you are using #extends
98 without #implements, try adding '#implements respond' to your template
99 definition.""")
100
101     def sleep(self, transaction):
102         BaseServlet.sleep(self, transaction)
103         self.session = None
104         self.request  = None
105         self._request  = None       
106         self.response = None
107         self.transaction = None
108
109     def shutdown(self):
110         pass
111
112     def serverSidePath(self, path=None,
113                        normpath=os.path.normpath,
114                        abspath=os.path.abspath
115                        ):
116        
117         if self._CHEETAH__isControlledByWebKit:
118             return BaseServlet.serverSidePath(self, path)
119         elif path:
120             return normpath(abspath(path.replace("\\",'/')))
121         elif hasattr(self, '_filePath') and self._filePath:
122             return normpath(abspath(self._filePath))
123         else:
124             return None
125
126 # vim: shiftwidth=4 tabstop=4 expandtab
127
Note: See TracBrowser for help on using the browser.