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

« back to all changes in this revision

Viewing changes to www/dispatch/request.py

  • Committer: mattgiuca
  • Date: 2008-01-25 06:20:32 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:313
test/test_framework: Updated examples, a bit of better descriptions, sample
    partial solutions, etc.

Added all sample subject material.
This has been copied from test/test_framework and modified slightly.
There is now a subject "sample" with 2 worksheets. The 1st worksheet has 3
exercises. These work in IVLE by default.

setup.py: Added code to install subjects into the designated directory. This
means that installing IVLE will result in the sample subjects being
immediately available.

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
import common.util
27
27
import mod_python
28
28
from mod_python import (util, Session)
 
29
import conf
29
30
 
30
31
class Request:
31
32
    """An IVLE request object. This is presented to the IVLE apps as a way of
45
46
        username (read)
46
47
            String. Login name of the user who is currently logged in, or
47
48
            None.
 
49
        hostname (read)
 
50
            String. Hostname the server is running on.
48
51
        headers_in (read)
49
52
            Table object representing headers sent by the client.
50
53
        headers_out (read, can be written to)
51
54
            Table object representing headers to be sent to the client.
 
55
        publicmode (read)
 
56
            Bool. True if the request came for the "public host" as
 
57
            configured in conf.py. Note that public mode requests do not
 
58
            have an app (app is set to None).
52
59
 
53
60
        status (write)
54
61
            Int. Response status number. Use one of the status codes defined
158
165
        self.func_write_html_head = write_html_head
159
166
        self.headers_written = False
160
167
 
 
168
        # Determine if the browser used the public host name to make the
 
169
        # request (in which case we are in "public mode")
 
170
        if req.hostname == conf.public_host:
 
171
            self.publicmode = True
 
172
        else:
 
173
            self.publicmode = False
 
174
 
161
175
        # Inherit values for the input members
162
176
        self.method = req.method
163
177
        self.uri = req.uri
164
178
        # Split the given path into the app (top-level dir) and sub-path
165
179
        # (after first stripping away the root directory)
166
 
        (self.app, self.path) = (
167
 
            common.util.split_path(common.util.unmake_path(req.uri)))
 
180
        path = common.util.unmake_path(req.uri)
 
181
        if self.publicmode:
 
182
            self.app = None
 
183
            self.path = path
 
184
        else:
 
185
            (self.app, self.path) = (common.util.split_path(path))
168
186
        self.username = None
 
187
        self.hostname = req.hostname
169
188
        self.headers_in = req.headers_in
170
189
        self.headers_out = req.headers_out
171
190
 
177
196
        self.styles = []
178
197
        self.scripts = []
179
198
        self.write_html_head_foot = False
 
199
        self.got_common_vars = False
180
200
 
181
201
    def __writeheaders(self):
182
202
        """Writes out the HTTP and HTML headers before any real data is
220
240
        """Reads at most len bytes directly from the client. (See mod_python
221
241
        Request.read)."""
222
242
        if len is None:
223
 
            self.apache_req.read()
 
243
            return self.apache_req.read()
224
244
        else:
225
 
            self.apache_req.read(len)
 
245
            return self.apache_req.read(len)
226
246
 
227
247
    def throw_error(self, httpcode):
228
248
        """Writes out an HTTP error of the specified code. Raises an exception
261
281
        if not hasattr(self, 'fields'):
262
282
            self.fields = util.FieldStorage(self.apache_req)
263
283
        return self.fields
 
284
 
 
285
    def get_cgi_environ(self):
 
286
        """Returns the CGI environment emulation for this request. (Calls
 
287
        add_common_vars). The environment is returned as a mapping
 
288
        compatible with os.environ."""
 
289
        if not self.got_common_vars:
 
290
            self.apache_req.add_common_vars()
 
291
            self.got_common_vars = True
 
292
        return self.apache_req.subprocess_env