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

« back to all changes in this revision

Viewing changes to doc/dev/architecture.rst

  • Committer: David Coles
  • Date: 2009-11-30 06:12:45 UTC
  • mto: This revision was merged to the branch mainline in revision 1322.
  • Revision ID: coles.david@gmail.com-20091130061245-8bv5jvhlzidivn65
Dispatch developer documentation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
IVLE is a complex piece of software that integrates closely with the 
23
23
underlying system. It can be considered part web service and part local system 
24
24
daemon. Due to the implementation of these parts it is tied to Apache Web 
25
 
Server (mainly  due to the use of mod_python) and Linux. 
26
 
 
 
25
Server (mainly due to the use of mod_python) and Linux.
 
26
 
 
27
 
 
28
Dispatch
 
29
========
 
30
 
 
31
IVLE uses mod_python_ to allow Python scripts to be called from Apache. We 
 
32
register the :mod:`ivle.dispatch` module as the ``PythonHandler`` in the 
 
33
associated VirtualHost, allowing us to intercept all HTTP requests to the web 
 
34
server.
 
35
 
 
36
The :mod:`ivle.dispatch` module is responsible for mapping requests from the 
 
37
client to the correct application plugin. Plugins can be specified by placing  
 
38
a :file:`*.conf` file into the :file:`/etc/ivle/plugins.d/` directory 
 
39
containing lines of the form :samp:`[{plugin_module}#{classname}]`.
 
40
 
 
41
.. TODO: Document Plugin Format and Routing Strings
 
42
 
 
43
In future, this may be ported to a WSGI (:pep:`333`) based dispatch to allow 
 
44
IVLE to be run on web servers other than Apache.
 
45
 
 
46
.. _mod_python: http://www.modpython.org/
 
47
 
 
48
 
 
49
Templating
 
50
----------
 
51
IVLE has now been refactored to use the Genshi_ XHTML template system. We have 
 
52
an inheritance-based "views" system. :class:`BaseView` is a class from which 
 
53
all views derive.
 
54
 
 
55
There are 3 sub-types of :class:`BaseView` (more can be implemented if 
 
56
necessary):
 
57
 
 
58
* XHTML-Templated
 
59
    * browser, console, debuginfo, diff, forum, groups, help, home, logout, 
 
60
      settings, subjects, svnlog, tos, tutorial
 
61
* Raw byte streaming
 
62
    * download, server
 
63
* JSON service
 
64
    * consoleservice, fileservice, tutorialservice, userservice 
 
65
 
 
66
The apps each derive from one of the above.
 
67
 
 
68
All apps which haven't yet been refactored will be "raw byte streaming". 
 
69
 
 
70
.. _Genshi: http://genshi.edgewall.org/
27
71
 
28
72
Jail System
29
73
===========
214
258
Database
215
259
========
216
260
 
217
 
Template
218
 
========
219
 
 
220
261
..  TODO: Not yet merged
221
262
    Object Publishing
222
263
    =================