X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=roundup%2Finit.py;h=9214fb614d9984c62bff26049993b85ea881e7e3;hb=2484bfe7139d184af57a0da1e2e29016a1c2467a;hp=837bbcbcbab38060f559a5226c3c2e9c4ea1829c;hpb=bd4bb53298087373923b93996a632d4586d90bda;p=roundup.git diff --git a/roundup/init.py b/roundup/init.py index 837bbcb..9214fb6 100644 --- a/roundup/init.py +++ b/roundup/init.py @@ -1,11 +1,33 @@ -# $Id: init.py,v 1.12 2001-08-05 07:43:52 richard Exp $ +# +# Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) +# This module is free software, and you may redistribute it and/or modify +# under the same terms as Python, so long as this copyright message and +# disclaimer are retained in their original form. +# +# IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR +# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING +# OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" +# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, +# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +# +# $Id: init.py,v 1.20 2002-07-14 02:05:53 richard Exp $ -import os, shutil, sys, errno +__doc__ = """ +Init (create) a roundup instance. +""" -import roundup.instance +import os, sys, errno + +import roundup.instance, password +from roundup import install_util def copytree(src, dst, symlinks=0): - """Recursively copy a directory tree using copy2(). + """Recursively copy a directory tree using copyDigestedFile(). The destination directory os allowed to exist. @@ -31,10 +53,38 @@ def copytree(src, dst, symlinks=0): elif os.path.isdir(srcname): copytree(srcname, dstname, symlinks) else: - shutil.copy2(srcname, dstname) + install_util.copyDigestedFile(srcname, dstname) + +def install(instance_home, template, backend): + '''Install an instance using the named template and backend. -def init(instance_home, template, backend, adminpw): - ''' initialise an instance using the named template + instance_home - the directory to place the instance data in + template - the template to use in creating the instance data + backend - the database to use to store the instance data + + The instance_home directory will be created using the files found in + the named template (roundup.templates.). A standard instance_home + contains: + . instance_config.py + - simple configuration of things like the email address for the + mail gateway, the mail domain, the mail host, ... + . dbinit.py and select_db.py + - defines the schema for the hyperdatabase and indicates which + backend to use. + . interfaces.py + - defines the CGI Client and mail gateway MailGW classes that are + used by roundup.cgi, roundup-server and roundup-mailgw. + . __init__.py + - ties together all the instance information into one interface + . db/ + - the actual database that stores the instance's data + . html/ + - the html templates that are used by the CGI Client + . detectors/ + - the auditor and reactor modules for this instance + + The html directory is typically extracted from the htmlbase module in + the template. ''' # first, copy the template dir over import roundup.templatebuilder @@ -48,15 +98,50 @@ def init(instance_home, template, backend, adminpw): # now select database db = '''# WARNING: DO NOT EDIT THIS FILE!!! -from roundup.backends.back_%s import Database'''%backend +from roundup.backends.back_%s import Database, Class, FileClass, IssueClass +'''%backend open(os.path.join(instance_home, 'select_db.py'), 'w').write(db) + +def initialise(instance_home, adminpw): + '''Initialise an instance's database + + adminpw - the password for the "admin" user + ''' # now import the instance and call its init instance = roundup.instance.open(instance_home) - instance.init(adminpw) + instance.init(password.Password(adminpw)) # # $Log: not supported by cvs2svn $ +# Revision 1.19 2002/05/23 01:14:20 richard +# . split instance initialisation into two steps, allowing config changes +# before the database is initialised. +# +# Revision 1.18 2001/11/22 15:46:42 jhermann +# Added module docstrings to all modules. +# +# Revision 1.17 2001/11/12 23:17:38 jhermann +# Code using copyDigestedFile() that passes unit tests +# +# Revision 1.16 2001/10/09 07:25:59 richard +# Added the Password property type. See "pydoc roundup.password" for +# implementation details. Have updated some of the documentation too. +# +# Revision 1.15 2001/08/07 00:24:42 richard +# stupid typo +# +# Revision 1.14 2001/08/07 00:15:51 richard +# Added the copyright/license notice to (nearly) all files at request of +# Bizar Software. +# +# Revision 1.13 2001/08/06 01:20:00 richard +# Added documentaion. +# +# Revision 1.12 2001/08/05 07:43:52 richard +# Instances are now opened by a special function that generates a unique +# module name for the instances on import time. +# # Revision 1.11 2001/08/04 22:42:43 richard # Fixed sf.net bug #447671 - typo #