Code

*** empty log message ***
[roundup.git] / roundup / templates / classic / dbinit.py
1 # $Id: dbinit.py,v 1.2 2001-07-24 01:06:43 richard Exp $
3 import os
5 import instance_config
6 from roundup import roundupdb, cgi_client, mailgw 
7 import select_db
8 from roundup.roundupdb import Class, FileClass
10 class Database(roundupdb.Database, select_db.Database):
11     ''' Creates a hybrid database from: 
12          . the selected database back-end from select_db
13          . the roundup extensions from roundupdb 
14     ''' 
15     pass 
17 class IssueClass(roundupdb.IssueClass):
18     ''' issues need the email information
19     '''
20     ISSUE_TRACKER_EMAIL = instance_config.ISSUE_TRACKER_EMAIL
21     ADMIN_EMAIL = instance_config.ADMIN_EMAIL
22     MAILHOST = instance_config.MAILHOST
24  
25 def open(name=None):
26     ''' as from the roundupdb method openDB 
27  
28     ''' 
29     from roundup.hyperdb import String, Date, Link, Multilink
31     # open the database
32     db = Database(instance_config.DATABASE, name)
34     # Now initialise the schema. Must do this each time.
35     pri = Class(db, "priority", 
36                     name=String(), order=String())
37     pri.setkey("name")
39     stat = Class(db, "status", 
40                     name=String(), order=String())
41     stat.setkey("name")
43     keyword = Class(db, "keyword", 
44                     name=String())
45     keyword.setkey("name")
47     user = Class(db, "user", 
48                     username=String(),   password=String(),
49                     address=String(),    realname=String(), 
50                     phone=String(),      organisation=String())
51     user.setkey("username")
53     msg = FileClass(db, "msg", 
54                     author=Link("user"), recipients=Multilink("user"), 
55                     date=Date(),         summary=String(), 
56                     files=Multilink("file"))
58     file = FileClass(db, "file", 
59                     name=String(),       type=String())
61     issue = IssueClass(db, "issue", 
62                     assignedto=Link("user"), topic=Multilink("keyword"),
63                     priority=Link("priority"), status=Link("status"))
64     issue.setkey('title')
66     import detectors
67     detectors.init(db)
69     return db
70  
71 def init(adminpw): 
72     ''' as from the roundupdb method initDB 
73  
74     Open the new database, and set up a bunch of attributes.
76     ''' 
77     dbdir = os.path.join(instance_config.DATABASE, 'files')
78     if not os.path.isdir(dbdir):
79         os.makedirs(dbdir)
81     db = open("admin")
82     db.clear()
84     pri = db.getclass('priority')
85     pri.create(name="critical", order="1")
86     pri.create(name="urgent", order="2")
87     pri.create(name="bug", order="3")
88     pri.create(name="feature", order="4")
89     pri.create(name="wish", order="5")
91     stat = db.getclass('status')
92     stat.create(name="unread", order="1")
93     stat.create(name="deferred", order="2")
94     stat.create(name="chatting", order="3")
95     stat.create(name="need-eg", order="4")
96     stat.create(name="in-progress", order="5")
97     stat.create(name="testing", order="6")
98     stat.create(name="done-cbb", order="7")
99     stat.create(name="resolved", order="8")
101     user = db.getclass('user')
102     user.create(username="admin", password=adminpw, 
103                                   address=instance_config.ADMIN_EMAIL)
105     db.close()
108 # $Log: not supported by cvs2svn $
109 # Revision 1.1  2001/07/23 23:28:43  richard
110 # Adding the classic template
112 # Revision 1.4  2001/07/23 08:45:28  richard
113 # ok, so now "./roundup-admin init" will ask questions in an attempt to get a
114 # workable instance_home set up :)
115 # _and_ anydbm has had its first test :)
117 # Revision 1.3  2001/07/23 07:14:41  richard
118 # Moved the database backends off into backends.
120 # Revision 1.2  2001/07/23 06:25:50  richard
121 # relfected the move to roundup/backends
123 # Revision 1.1  2001/07/23 04:33:21  anthonybaxter
124 # split __init__.py into 2. dbinit and instance_config.
126 # Revision 1.1  2001/07/23 03:50:46  anthonybaxter
127 # moved templates to proper location
129 # Revision 1.2  2001/07/22 12:09:32  richard
130 # Final commit of Grande Splite