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

1092.1.11 by Matt Giuca
Replaced Python config files (conf.py) with new config files system, using
1
# IVLE - Informatics Virtual Learning Environment
2
# Copyright (C) 2007-2009 The University of Melbourne
3
#
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
18
# Author: Matt Giuca, Will Grant
19
20
"""
21
Temporary emulation layer for the old-style conf.py configuration file.
22
Loads the IVLE config file and provides all of the legacy config variables.
23
24
May raise a RuntimeError on import if it cannot find the config file.
25
"""
26
27
import os
28
import sys
29
30
import configobj
31
1092.1.14 by Matt Giuca
Added module ivle.config, which takes care of some work interfacing with
32
import ivle.config
1092.1.11 by Matt Giuca
Replaced Python config files (conf.py) with new config files system, using
33
1092.1.12 by Matt Giuca
Changed new-style config file to a hierarchical one with nice shiny new names.
34
try:
1092.1.59 by William Grant
Move the plugin loading/indexing logic into ivle.config.Config.
35
    conf = ivle.config.Config(plugins=False)
1092.1.14 by Matt Giuca
Added module ivle.config, which takes care of some work interfacing with
36
except ivle.config.ConfigError, e:
1092.1.12 by Matt Giuca
Changed new-style config file to a hierarchical one with nice shiny new names.
37
    raise ImportError(str(e))
38
39
# This dict maps legacy config option names to new config option paths
40
# ('section/option_name')
41
CONFIG_OPTIONS = {
42
    'root_dir': 'urls/root',
43
    'prefix': 'paths/prefix',
44
    'data_path': 'paths/data',
45
    'log_path': 'paths/logs',
46
    'python_site_packages_override': 'paths/site_packages',
47
    'public_host': 'urls/public_host',
48
    'db_host': 'database/host',
49
    'db_port': 'database/port',
50
    'db_dbname': 'database/name',
51
    'db_user': 'database/username',
52
    'db_password': 'database/password',
53
    'auth_modules': 'auth/modules',
54
    'ldap_url': 'auth/ldap_url',
55
    'ldap_format_string': 'auth/ldap_format_string',
56
    'subject_pulldown_modules': 'auth/subject_pulldown_modules',
57
    'svn_addr': 'urls/svn_addr',
58
    'usrmgt_host': 'usrmgt/host',
59
    'usrmgt_port': 'usrmgt/port',
60
    'usrmgt_magic': 'usrmgt/magic',
1187 by Matt Giuca
Stopped clobbering conf.py within the jail, using a proper ivle.conf instead.
61
62
    # These two are only relevant inside the jail.
63
    'login': 'user_info/login',
64
    'svn_pass': 'user_info/svn_pass',
1092.1.12 by Matt Giuca
Changed new-style config file to a hierarchical one with nice shiny new names.
65
}
66
67
for legacyopt, newopt_path in CONFIG_OPTIONS.iteritems():
68
    # Iterate over each segment of the path, and find the value in conf file
69
    try:
70
        value = conf
71
        for seg in newopt_path.split('/'):
72
            value = value[seg]
73
        globals()[legacyopt] = value
74
    except KeyError:
75
        globals()[legacyopt] = None
76
77
# XXX Munge some nice shiny new-style values into horrible old-style values
78
# IRONY: These have just been split from commas. We need to re-join it so that
79
# pulldown_subj and auth_modules can re-split them.
80
subject_pulldown_modules = ','.join(subject_pulldown_modules)
81
auth_modules = ','.join(auth_modules)
1092.1.11 by Matt Giuca
Replaced Python config files (conf.py) with new config files system, using
82
83
# Additional auto-generated config options
84
85
# Path where architecture-dependent data (including non-user-executable
86
# binaries) is installed.
87
lib_path = os.path.join(prefix, 'lib/ivle')
88
89
# Path where arch-independent data is installed.
90
share_path = os.path.join(prefix, 'share/ivle')
91
92
# Path where user-executable binaries are installed.
93
bin_path = os.path.join(prefix, 'bin')
94
95
# 'site-packages' directory in Python, where Python libraries are to be
96
# installed.
1092.1.12 by Matt Giuca
Changed new-style config file to a hierarchical one with nice shiny new names.
97
if python_site_packages_override is None:
98
    PYTHON_VERSION = sys.version[0:3]   # eg. "2.5"
99
    python_site_packages = os.path.join(prefix,
100
                               'lib/python%s/site-packages' % PYTHON_VERSION)
101
else:
102
    python_site_packages = python_site_packages_override
1092.1.11 by Matt Giuca
Replaced Python config files (conf.py) with new config files system, using
103
104
# In the local file system, where the student/user jails will be mounted.
105
# Only a single copy of the jail's system components will be stored here -
106
# all user jails will be virtually mounted here.
1187 by Matt Giuca
Stopped clobbering conf.py within the jail, using a proper ivle.conf instead.
107
# XXX: Some jail code calls ivle.studpath.url_to_{local,jailpaths}, both
108
#      of which use jail_base. Note that they don't use the bits of the
109
#      return value that depend on jail_base, so it can be any string inside
110
#      the jail. The value computed here may be meaningless inside the jail,
111
#      but that's OK for now.
1092.1.11 by Matt Giuca
Replaced Python config files (conf.py) with new config files system, using
112
jail_base = os.path.join(data_path, 'jailmounts')
113
114
# In the local file system, where are the student/user file spaces located.
115
# The user jails are expected to be located immediately in subdirectories of
116
# this location. Note that no complete jails reside here - only user
117
# modifications.
118
jail_src_base = os.path.join(data_path, 'jails')
119
120
# In the local file system, where the template system jail will be stored.
121
jail_system = os.path.join(jail_src_base, '__base__')
122
123
# In the local file system, where the template system jail will be stored.
124
jail_system_build = os.path.join(jail_src_base, '__base_build__')
125
126
# In the local file system, where the subject content files are located.
127
# (The 'subjects' and 'exercises' directories).
128
content_path = os.path.join(data_path, 'content')
129
130
# In the local file system, where are the per-subject file spaces located.
131
# The individual subject directories are expected to be located immediately
132
# in subdirectories of this location.
133
subjects_base = os.path.join(content_path, 'subjects')
134
135
# In the local file system, where are the subject-independent exercise sheet
136
# file spaces located.
137
exercises_base = os.path.join(content_path, 'exercises')
138
139
# In the local file system, where the system notices are stored (such as terms
140
# of service and MOTD).
141
notices_path = os.path.join(data_path, 'notices')
142
143
# In the local file system, where is the Terms of Service document located.
144
tos_path = os.path.join(notices_path, 'tos.html')
145
146
# In the local file system, where is the Message of the Day document
147
# located. This is an HTML file (just the body fragment), which will
148
# be displayed on the login page. It is optional.
149
motd_path = os.path.join(notices_path, 'motd.html')
150
151
# The location of all the subversion config and repositories.
152
svn_path = os.path.join(data_path, 'svn')
153
154
# The location of the subversion configuration file used by
155
# apache to host the user repositories.
156
svn_conf = os.path.join(svn_path, 'svn.conf')
157
158
# The location of the subversion configuration file used by
159
# apache to host the user repositories.
160
svn_group_conf = os.path.join(svn_path, 'svn-group.conf')
161
162
# The root directory for the subversion repositories.
163
svn_repo_path = os.path.join(svn_path, 'repositories')
164
165
# The location of the password file used to authenticate users
166
# of the subversion repository from the ivle server.
167
svn_auth_ivle = os.path.join(svn_path, 'ivle.auth')