~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/dispatch/request.py

  • Committer: William Grant
  • Date: 2009-02-26 02:08:28 UTC
  • Revision ID: grantw@unimelb.edu.au-20090226020828-0qrhe3llq9r5olmr
ivle-showenrolment: Swap year and semester, and show the role.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
    # This needs to be importable from outside Apache.
34
34
    pass
35
35
 
36
 
import os.path
37
 
 
38
36
import ivle.util
 
37
import ivle.conf
39
38
import ivle.database
40
39
from ivle.webapp.base.plugins import CookiePlugin
41
40
 
155
154
    HTTP_INSUFFICIENT_STORAGE         = 507
156
155
    HTTP_NOT_EXTENDED                 = 510
157
156
 
158
 
    def __init__(self, req, config):
159
 
        """Create an IVLE request from a mod_python one.
 
157
    def __init__(self, req):
 
158
        """Builds an IVLE request object from a mod_python request object.
 
159
        This results in an object with all of the necessary methods and
 
160
        additional fields.
160
161
 
161
 
        @param req: A mod_python request.
162
 
        @param config: An IVLE configuration.
 
162
        req: A mod_python request object.
163
163
        """
164
164
 
165
165
        # Methods are mostly wrappers around the Apache request object
166
166
        self.apache_req = req
167
 
        self.config = config
168
167
        self.headers_written = False
169
168
 
170
169
        # Determine if the browser used the public host name to make the
171
170
        # request (in which case we are in "public mode")
172
 
        if req.hostname == config['urls']['public_host']:
 
171
        if req.hostname == ivle.conf.public_host:
173
172
            self.publicmode = True
174
173
        else:
175
174
            self.publicmode = False
179
178
        self.uri = req.uri
180
179
        # Split the given path into the app (top-level dir) and sub-path
181
180
        # (after first stripping away the root directory)
182
 
        path = self.unmake_path(req.uri)
 
181
        path = ivle.util.unmake_path(req.uri)
183
182
        (self.app, self.path) = (ivle.util.split_path(path))
184
183
        self.user = None
185
184
        self.hostname = req.hostname
188
187
 
189
188
        # Open a database connection and transaction, keep it around for users
190
189
        # of the Request object to use
191
 
        self.store = ivle.database.get_store(config)
 
190
        self.store = ivle.database.get_store()
192
191
 
193
192
        # Default values for the output members
194
193
        self.status = Request.HTTP_OK
253
252
                for cookie in plugin.cookies:
254
253
                    self.add_cookie(mod_python.Cookie.Cookie(cookie, '',
255
254
                                                    expires=1, path='/'))
256
 
        self.throw_redirect(self.make_path(''))
 
255
        self.throw_redirect(ivle.util.make_path('')) 
257
256
 
258
257
 
259
258
    def flush(self):
293
292
        else:
294
293
            mod_python.Cookie.add_cookie(self.apache_req, cookie, value, **attributes)
295
294
 
296
 
    def make_path(self, path):
297
 
        """Prepend the IVLE URL prefix to the given path.
298
 
 
299
 
        This is used when generating URLs to send to the client.
300
 
 
301
 
        This method is DEPRECATED. We no longer support use of a prefix.
302
 
        """
303
 
        return os.path.join(self.config['urls']['root'], path)
304
 
 
305
 
    def unmake_path(self, path):
306
 
        """Strip the IVLE URL prefix from the given path, if present.
307
 
 
308
 
        Also normalises the path.
309
 
 
310
 
        This method is DEPRECATED. We no longer support use of a prefix.
311
 
        """
312
 
        path = os.path.normpath(path)
313
 
        root = os.path.normpath(self.config['urls']['root'])
314
 
 
315
 
        if path.startswith(root):
316
 
            path = path[len(root):]
317
 
            # Take out the slash as well
318
 
            if len(path) > 0 and path[0] == os.sep:
319
 
                path = path[1:]
320
 
 
321
 
        return path
322
 
 
323
295
    def get_session(self):
324
296
        """Returns a mod_python Session object for this request.
325
297
        Note that this is dependent on mod_python and may need to change
326
 
        interface if porting away from mod_python.
327
 
 
328
 
        IMPORTANT: Call unlock() on the session as soon as you are done with
329
 
                   it! If you don't, all other requests will block!
330
 
        """
 
298
        interface if porting away from mod_python."""
331
299
        # Cache the session object and set the timeout to 24 hours.
332
300
        if not hasattr(self, 'session'):
333
301
            self.session = mod_python.Session.FileSession(self.apache_req,