annotate roundup/init.py @ 1434:b953750bdc04

trackers on mysql can be initialised added mechanism for backends to detect and clear database
author Andrey Lebedev <kedder@users.sourceforge.net>
date Sat, 15 Feb 2003 23:19:01 +0000
parents db787cef1385
children 378081f066cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
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

Roundup Issue Tracker: http://roundup-tracker.org/