Mercurial > p > roundup > code
annotate roundup/init.py @ 1685:b6621f8bd496 maint-0.5
backported XSS message cleaning fix [SF#757128]
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Tue, 24 Jun 2003 03:33:56 +0000 |
| parents | db787cef1385 |
| children | 378081f066cc |
| rev | line source |
|---|---|
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
1 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
6 # |
| 214 | 7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
11 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
208
diff
changeset
|
17 # |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1085
diff
changeset
|
18 # $Id: init.py,v 1.24 2002-09-10 12:44:42 richard Exp $ |
|
406
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
388
diff
changeset
|
19 |
|
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
388
diff
changeset
|
20 __doc__ = """ |
|
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
388
diff
changeset
|
21 Init (create) a roundup instance. |
|
bdc2ea127ae9
Added module docstrings to all modules.
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
388
diff
changeset
|
22 """ |
|
26
c7c14960f413
Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
25
diff
changeset
|
23 |
|
388
2d92f93072f9
Code using copyDigestedFile() that passes unit tests
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
270
diff
changeset
|
24 import os, sys, errno |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
201
diff
changeset
|
25 |
|
270
a4241ddd22d7
Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
26 import roundup.instance, password |
|
388
2d92f93072f9
Code using copyDigestedFile() that passes unit tests
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
270
diff
changeset
|
27 from roundup import install_util |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 def copytree(src, dst, symlinks=0): |
|
388
2d92f93072f9
Code using copyDigestedFile() that passes unit tests
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
270
diff
changeset
|
30 """Recursively copy a directory tree using copyDigestedFile(). |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 The destination directory os allowed to exist. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 If the optional symlinks flag is true, symbolic links in the |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 source tree result in symbolic links in the destination tree; if |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 it is false, the contents of the files pointed to by symbolic |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 links are copied. |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1085
diff
changeset
|
39 This was copied from shutil.py in std lib. |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 """ |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 names = os.listdir(src) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 try: |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 os.mkdir(dst) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 except OSError, error: |
|
113
2ab86442799a
Replaced errno integers with their module values.
Richard Jones <richard@users.sourceforge.net>
parents:
70
diff
changeset
|
46 if error.errno != errno.EEXIST: raise |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 for name in names: |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 srcname = os.path.join(src, name) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 dstname = os.path.join(dst, name) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 if symlinks and os.path.islink(srcname): |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 linkto = os.readlink(srcname) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 os.symlink(linkto, dstname) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 elif os.path.isdir(srcname): |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 copytree(srcname, dstname, symlinks) |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 else: |
|
388
2d92f93072f9
Code using copyDigestedFile() that passes unit tests
Jürgen Hermann <jhermann@users.sourceforge.net>
parents:
270
diff
changeset
|
56 install_util.copyDigestedFile(srcname, dstname) |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
58 def install(instance_home, template, backend): |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
59 '''Install an instance using the named template and backend. |
|
208
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
60 |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
61 instance_home - the directory to place the instance data in |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
62 template - the template to use in creating the instance data |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
63 backend - the database to use to store the instance data |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
64 |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
65 The instance_home directory will be created using the files found in |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
66 the named template (roundup.templates.<name>). A standard instance_home |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
67 contains: |
|
1085
04a6b3bfbf23
instance_config -> config, and other related cleanups
Richard Jones <richard@users.sourceforge.net>
parents:
1055
diff
changeset
|
68 . config.py |
|
208
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
69 - simple configuration of things like the email address for the |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
70 mail gateway, the mail domain, the mail host, ... |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
71 . dbinit.py and select_db.py |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
72 - defines the schema for the hyperdatabase and indicates which |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
73 backend to use. |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
74 . interfaces.py |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
75 - defines the CGI Client and mail gateway MailGW classes that are |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
76 used by roundup.cgi, roundup-server and roundup-mailgw. |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
77 . __init__.py |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
78 - ties together all the instance information into one interface |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
79 . db/ |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
80 - the actual database that stores the instance's data |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
81 . html/ |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
82 - the html templates that are used by the CGI Client |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
83 . detectors/ |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
84 - the auditor and reactor modules for this instance |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
85 |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
86 The html directory is typically extracted from the htmlbase module in |
|
1894a28a1e66
Added documentation.
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
87 the template. |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 ''' |
|
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 # first, copy the template dir over |
|
937
fb8a8eb55aac
cleanup: moved templatebuilder into templates.builder
Richard Jones <richard@users.sourceforge.net>
parents:
858
diff
changeset
|
90 from roundup.templates import builder |
|
68
5e71aaa87e5b
Added templatebuilder module.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents:
51
diff
changeset
|
91 |
|
1055
cf72eae57a2c
Fixed instance installation
Richard Jones <richard@users.sourceforge.net>
parents:
937
diff
changeset
|
92 # copy the roundup.templates.<template> package contents to the instance dir |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
93 template_dir = os.path.split(__file__)[0] |
|
68
5e71aaa87e5b
Added templatebuilder module.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents:
51
diff
changeset
|
94 template_name = template |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 template = os.path.join(template_dir, 'templates', template) |
|
190
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
96 copytree(template, instance_home) |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 |
|
937
fb8a8eb55aac
cleanup: moved templatebuilder into templates.builder
Richard Jones <richard@users.sourceforge.net>
parents:
858
diff
changeset
|
98 builder.installHtmlBase(template_name, instance_home) |
|
68
5e71aaa87e5b
Added templatebuilder module.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents:
51
diff
changeset
|
99 |
|
51
3a7e5515c1bd
ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
100 # now select database |
|
3a7e5515c1bd
ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
101 db = '''# WARNING: DO NOT EDIT THIS FILE!!! |
|
858
2dd862af72ee
all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents:
738
diff
changeset
|
102 from roundup.backends.back_%s import Database, Class, FileClass, IssueClass |
|
2dd862af72ee
all storage-specific code (ie. backend) is now implemented by the backends
Richard Jones <richard@users.sourceforge.net>
parents:
738
diff
changeset
|
103 '''%backend |
|
190
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
104 open(os.path.join(instance_home, 'select_db.py'), 'w').write(db) |
|
51
3a7e5515c1bd
ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
105 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
106 |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
107 def initialise(instance_home, adminpw): |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
108 '''Initialise an instance's database |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
109 |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
110 adminpw - the password for the "admin" user |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
406
diff
changeset
|
111 ''' |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 # now import the instance and call its init |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
201
diff
changeset
|
113 instance = roundup.instance.open(instance_home) |
|
270
a4241ddd22d7
Added the Password property type.
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
114 instance.init(password.Password(adminpw)) |
|
25
4cf1daf2f2eb
More Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
115 |
|
127
0791d13baea7
Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents:
113
diff
changeset
|
116 # vim: set filetype=python ts=4 sw=4 et si |
