46
44
req: An Apache request object.
48
46
# Make the request object into an IVLE request which can be passed to apps
50
47
req = Request(req, html.write_html_head)
52
# Check req.app to see if it is valid. 404 if not.
53
if req.app is not None and req.app not in conf.apps.app_url:
54
# TODO: Nicer 404 message?
55
req.throw_error(Request.HTTP_NOT_FOUND)
57
# app is the App object for the chosen app
59
app = conf.apps.app_url[conf.default_app]
61
app = conf.apps.app_url[req.app]
63
# Check if app requires auth. If so, perform authentication and login.
65
# TODO: Perform authentication
68
# If user did not specify an app, HTTP redirect to default app and exit.
70
req.throw_redirect(util.make_path(conf.default_app))
72
# Set the default title to the app's tab name, if any. Otherwise URL name.
73
if app.name is not None:
49
# TODO: Check req.app to see if it is valid. 404 if not.
51
# TODO: Check if app requires auth. If so, perform authentication and
54
# TODO: If user did not specify an app, HTTP redirect to default app and
78
57
# Call the specified app with the request object
79
apps.call_app(app.dir, req)
81
# MAKE SURE we write the HTTP (and possibly HTML) header. This
82
# wouldn't happen if nothing else ever got written, so we have to make
84
req.ensure_headers_written()
58
# TODO: Call a real app.
86
61
# When done, write out the HTML footer if the app has requested it
87
62
if req.write_html_head_foot:
63
# MAKE SURE we write the head (we would never do that if the app, nor
64
# write_html_foot, ever writes anything - so just to be sure).
65
req.write("", flush=0)
88
66
html.write_html_foot(req)
90
68
# Have Apache output its own HTML code if non-200 status codes were found
72
"""This (temporary) function serves as an IVLE application. It takes an
73
IVLE request and conforms to the application API."""
74
# TEMP: Dummy (test) handler
76
# Set request attributes
77
req.content_type = "text/html"
78
req.write_html_head_foot = True # Have dispatch print head and foot
81
req.write("<p>Hello, IVLE!</p>\n")
84
req.write('<b>No app specified</b>')
86
req.write('<b>' + req.app + '</b> ')
87
req.write('<img src="' + make_path("media/images/mime/dir.png")
89
req.write(str(req.path))
94
def print_apps_list(file):
95
"""Prints all app tabs, as a UL. Prints a list item for each app that has
98
file: Object with a "write" method - ie. the request object.
101
file.write('<ul class="apptabs">\n')
103
for urlname in conf.apps.apps_in_tabs:
104
app = conf.apps.app_url[urlname]
105
file.write(' <li><a href="')
106
file.write(make_path(app.dir))
109
file.write('</a></li>\n')
111
file.write('</ul>\n')