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

« back to all changes in this revision

Viewing changes to ivle/dispatch/request.py

  • Committer: Matt Giuca
  • Date: 2010-02-25 05:29:51 UTC
  • Revision ID: matt.giuca@gmail.com-20100225052951-ukz8u4pqqnsqa3bt
Projects view: Sort project sets by database ID and projects by deadline, rather than random database ordering. Fixes Launchpad bug #527559.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
    import mod_python.Session
30
30
    import mod_python.Cookie
31
31
    import mod_python.util
32
 
    import mod_python.apache
33
 
 
34
 
    class PotentiallySecureFileSession(mod_python.Session.FileSession):
35
 
        """A mod_python FileSession that sets secure cookie when appropriate.
36
 
 
37
 
        A secure cookie will be set if the request itself is over HTTPS, or if
38
 
        a proxy in front has set X-Forwarded-Proto: https. Otherwise the cookie
39
 
        will be insecure.
40
 
        """
41
 
        def make_cookie(self):
42
 
            cookie = super(PotentiallySecureFileSession, self).make_cookie()
43
 
            if (self._req.is_https() or
44
 
                self._req.headers_in.get('X-Forwarded-Proto') == 'https'):
45
 
                cookie.secure = True
46
 
            return cookie
47
32
except ImportError:
48
33
    # This needs to be importable from outside Apache.
49
34
    pass
55
40
from ivle.webapp.base.plugins import CookiePlugin
56
41
import ivle.webapp.security
57
42
 
58
 
 
59
43
class Request:
60
44
    """An IVLE request object. This is presented to the IVLE apps as a way of
61
45
    interacting with the web server and the dispatcher.
65
49
            String. The request method (eg. 'GET', 'POST', etc)
66
50
        uri (read)
67
51
            String. The path portion of the URI.
68
 
        unparsed_uri (read)
69
 
            String. The path portion of the URI, unparsed with query string.
70
52
        app (read)
71
53
            String. Name of the application specified in the URL, or None.
72
54
        path (read)
95
77
            in class Request.
96
78
        content_type (write)
97
79
            String. The Content-Type (mime type) header value.
98
 
        content_length (write)
99
 
            Integer. The number of octets to be transfered.
100
80
        location (write)
101
81
            String. Response "Location" header value. Used with HTTP redirect
102
82
            responses.
139
119
        # Inherit values for the input members
140
120
        self.method = req.method
141
121
        self.uri = req.uri
142
 
        self.unparsed_uri = req.unparsed_uri
143
122
        # Split the given path into the app (top-level dir) and sub-path
144
123
        # (after first stripping away the root directory)
145
124
        (self.app, self.path) = (ivle.util.split_path(req.uri))
150
129
        # Default values for the output members
151
130
        self.status = Request.HTTP_OK
152
131
        self.content_type = None        # Use Apache's default
153
 
        self.content_length = None        # Don't provide Content-Length
154
132
        self.location = None
155
133
        # In some cases we don't want the template JS (such as the username
156
134
        # and public FQDN) in the output HTML. In that case, set this to 0.
179
157
        # Prepare the HTTP and HTML headers before the first write is made
180
158
        if self.content_type != None:
181
159
            self.apache_req.content_type = self.content_type
182
 
        if self.content_length:
183
 
            self.apache_req.set_content_length(self.content_length)
184
160
        self.apache_req.status = self.status
185
161
        if self.location != None:
186
162
            self.apache_req.headers_out['Location'] = self.location
279
255
        """
280
256
        # Cache the session object and set the timeout to 24 hours.
281
257
        if not hasattr(self, 'session'):
282
 
            self.session = PotentiallySecureFileSession(
283
 
                self.apache_req, timeout = 60 * 60 * 24)
 
258
            self.session = mod_python.Session.FileSession(self.apache_req,
 
259
                                               timeout = 60 * 60 * 24)
284
260
        return self.session
285
261
 
286
262
    def get_fieldstorage(self):