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

« back to all changes in this revision

Viewing changes to ivle/dispatch/__init__.py

  • Committer: William Grant
  • Date: 2009-05-26 03:06:53 UTC
  • Revision ID: grantw@unimelb.edu.au-20090526030653-axxawt0o5ws4icbt
Remove ivle.conf usage from ivle.studpath.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
import routes
41
41
 
42
42
from ivle import util
43
 
import ivle.conf
 
43
import ivle.config
44
44
from ivle.dispatch.request import Request
45
45
import ivle.webapp.security
46
46
from ivle.webapp.base.plugins import ViewPlugin, PublicViewPlugin
47
47
from ivle.webapp.base.xhtml import XHTMLView, XHTMLErrorView
48
48
from ivle.webapp.errors import HTTPError, Unauthorized, NotFound
49
49
 
50
 
def generate_route_mapper(view_plugins, attr):
 
50
config = ivle.config.Config()
 
51
 
 
52
def generate_router(view_plugins, attr):
51
53
    """
52
54
    Build a Mapper object for doing URL matching using 'routes', based on the
53
55
    given plugin registry.
71
73
    @param apachereq: An Apache request object.
72
74
    """
73
75
    # Make the request object into an IVLE request which can be given to views
74
 
    req = Request(apachereq)
 
76
    req = Request(apachereq, config)
75
77
 
76
78
    # Hack? Try and get the user login early just in case we throw an error
77
79
    # (most likely 404) to stop us seeing not logged in even when we are.
82
84
        if user and user.valid:
83
85
            req.user = user
84
86
 
85
 
    conf = ivle.config.Config()
86
 
    req.config = conf
87
 
 
88
87
    if req.publicmode:
89
 
        req.mapper = generate_route_mapper(conf.plugin_index[PublicViewPlugin],
90
 
                                           'public_urls')
 
88
        req.mapper = generate_router(config.plugin_index[PublicViewPlugin],
 
89
                                    'public_urls')
91
90
    else:
92
 
        req.mapper = generate_route_mapper(conf.plugin_index[ViewPlugin],
93
 
                                           'urls')
 
91
        req.mapper = generate_router(config.plugin_index[ViewPlugin], 'urls')
94
92
 
95
93
    matchdict = req.mapper.match(req.uri)
96
94
    if matchdict is not None:
128
126
                return req.OK
129
127
            else:
130
128
                return e.code
 
129
        except mod_python.apache.SERVER_RETURN:
 
130
            # A mod_python-specific Apache error.
 
131
            # XXX: We need to raise these because req.throw_error() uses them.
 
132
            # Remove this after Google Code issue 117 is fixed.
 
133
            raise
131
134
        except Exception, e:
132
135
            # A non-HTTPError appeared. We have an unknown exception. Panic.
133
136
            handle_unknown_exception(req, *sys.exc_info())
150
153
    the IVLE request is created.
151
154
    """
152
155
    req.content_type = "text/html"
153
 
    logfile = os.path.join(ivle.conf.log_path, 'ivle_error.log')
 
156
    logfile = os.path.join(config['paths']['logs'], 'ivle_error.log')
154
157
    logfail = False
155
158
    try:
156
159
        httpcode = exc_value.httpcode
166
169
        login = req.user.login
167
170
    except AttributeError:
168
171
        login = None
169
 
    try:
170
 
        role = req.user.role
171
 
    except AttributeError:
172
 
        role = None
173
172
 
174
173
    # Log File
175
174
    try:
215
214
 
216
215
    # Error messages are only displayed is the user is NOT a student,
217
216
    # or if there has been a problem logging the error message
218
 
    show_errors = (not publicmode) and ((login and \
219
 
                        str(role) != "student") or logfail)
 
217
    show_errors = (not publicmode) and ((login and req.user.admin) or logfail)
220
218
    req.write("""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"                 
221
219
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">                                      
222
220
<html xmlns="http://www.w3.org/1999/xhtml">