X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=roundup%2Finit.py;h=b0e2b5b8bc03f0e38078dc3276f84f76e3541347;hb=0ae2ea5bdf5ec4dc7abc72628924faf0141a265b;hp=4174afc8a0167ad99aa33159b1006d5dc66f493d;hpb=262fc7e5638c678edeb5732627a8830975688fa3;p=roundup.git diff --git a/roundup/init.py b/roundup/init.py index 4174afc..b0e2b5b 100644 --- a/roundup/init.py +++ b/roundup/init.py @@ -1,7 +1,33 @@ -import os, shutil, sys +# +# 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.24 2002-09-10 12:44:42 richard Exp $ + +__doc__ = """ +Init (create) a 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. @@ -10,14 +36,14 @@ def copytree(src, dst, symlinks=0): it is false, the contents of the files pointed to by symbolic links are copied. - XXX copied from shutil.py in std lib + This was copied from shutil.py in std lib. """ names = os.listdir(src) try: os.mkdir(dst) except OSError, error: - if error.errno != 17: raise + if error.errno != errno.EEXIST: raise for name in names: srcname = os.path.join(src, name) dstname = os.path.join(dst, name) @@ -27,19 +53,64 @@ 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. + + 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: + . 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 -def init(instance, template, adminpw): - ''' initialise an instance using the named template + The html directory is typically extracted from the htmlbase module in + the template. ''' # first, copy the template dir over + from roundup.templates import builder + + # copy the roundup.templates.