1 # $Id: __init__.py,v 1.1 2001-07-23 03:50:46 anthonybaxter Exp $
3 MAIL_DOMAIN=MAILHOST=HTTP_HOST=None
4 HTTP_PORT=0
6 try:
7 from localconfig import *
8 except ImportError:
9 localconfig = None
11 import os
13 # roundup home is this package's directory
14 ROUNDUP_HOME=os.path.split(__file__)[0]
16 # The SMTP mail host that roundup will use to send mail
17 if not MAILHOST:
18 MAILHOST = 'localhost'
20 # The domain name used for email addresses.
21 if not MAIL_DOMAIN:
22 MAIL_DOMAIN = 'bizarsoftware.com.au'
24 # the next two are only used for the standalone HTTP server.
25 if not HTTP_HOST:
26 HTTP_HOST = ''
27 if not HTTP_PORT:
28 HTTP_PORT = 9080
30 # This is the directory that the database is going to be stored in
31 DATABASE = os.path.join(ROUNDUP_HOME, 'db')
33 # This is the directory that the HTML templates reside in
34 TEMPLATES = os.path.join(ROUNDUP_HOME, 'templates')
36 # The email address that mail to roundup should go to
37 ISSUE_TRACKER_EMAIL = 'issue_tracker@%s'%MAIL_DOMAIN
39 # The email address that roundup will complain to if it runs into trouble
40 ADMIN_EMAIL = 'roundup-admin@%s'%MAIL_DOMAIN
42 # Somewhere for roundup to log stuff internally sent to stdout or stderr
43 LOG = os.path.join(ROUNDUP_HOME, 'roundup.log')
46 from roundup import hyperdb, hyper_bsddb, roundupdb, cgi_client, mailgw
48 class Database(roundupdb.Database, hyper_bsddb.Database):
49 ''' Creates a hybrid database from:
50 . the base Database class given in hyperdb (basic functionlity)
51 . the BSDDB implementation in hyperdb_bsddb
52 . the roundup extensions from roundupdb
53 '''
54 pass
56 Class = roundupdb.Class
57 class IssueClass(roundupdb.IssueClass):
58 ''' issues need the email information
59 '''
60 ISSUE_TRACKER_EMAIL = ISSUE_TRACKER_EMAIL
61 ADMIN_EMAIL = ADMIN_EMAIL
62 MAILHOST = MAILHOST
64 FileClass = roundupdb.FileClass
66 class Client(cgi_client.Client):
67 ''' derives basic mail gateway implementation from the standard module,
68 with any specific extensions
69 '''
70 TEMPLATES = TEMPLATES
71 pass
73 class MailGW(mailgw.MailGW):
74 ''' derives basic mail gateway implementation from the standard module,
75 with any specific extensions
76 '''
77 ISSUE_TRACKER_EMAIL = ISSUE_TRACKER_EMAIL
78 ADMIN_EMAIL = ADMIN_EMAIL
79 MAILHOST = MAILHOST
81 def open(name=None):
82 ''' as from the roundupdb method openDB
84 storagelocator must be the directory the __init__.py file is in
85 - os.path.split(__file__)[0] gives us that I think
86 '''
87 db = Database(DATABASE, name)
88 pri = Class(db, "priority", name=hyperdb.String(), order=hyperdb.String())
89 pri.setkey("name")
90 stat = Class(db, "status", name=hyperdb.String(), order=hyperdb.String())
91 stat.setkey("name")
92 Class(db, "keyword", name=hyperdb.String())
93 user = Class(db, "user", username=hyperdb.String(),
94 password=hyperdb.String(), address=hyperdb.String(),
95 realname=hyperdb.String(), phone=hyperdb.String(),
96 organisation=hyperdb.String())
97 user.setkey("username")
98 msg = FileClass(db, "msg", author=hyperdb.Link("user"),
99 recipients=hyperdb.Multilink("user"), date=hyperdb.Date(),
100 summary=hyperdb.String(), files=hyperdb.Multilink("file"))
101 file = FileClass(db, "file", name=hyperdb.String(), type=hyperdb.String())
103 # bugs and support calls etc
104 rate = Class(db, "rate", name=hyperdb.String(), order=hyperdb.String())
105 rate.setkey("name")
106 source = Class(db, "source", name=hyperdb.String(), order=hyperdb.String())
107 source.setkey("name")
108 platform = Class(db, "platform", name=hyperdb.String(), order=hyperdb.String())
109 platform.setkey("name")
110 product = Class(db, "product", name=hyperdb.String(), order=hyperdb.String())
111 product.setkey("name")
112 Class(db, "timelog", date=hyperdb.Date(), time=hyperdb.String(),
113 performedby=hyperdb.Link("user"), description=hyperdb.String())
114 issue = IssueClass(db, "issue", assignedto=hyperdb.Link("user"),
115 priority=hyperdb.Link("priority"), status=hyperdb.Link("status"),
116 rate=hyperdb.Link("rate"), source=hyperdb.Link("source"),
117 product=hyperdb.Link("product"), platform=hyperdb.Multilink("platform"),
118 version=hyperdb.String(),
119 timelog=hyperdb.Multilink("timelog"), customername=hyperdb.String())
120 issue.setkey('title')
121 import detectors
122 detectors.init(db)
123 return db
125 def init(adminpw):
126 ''' as from the roundupdb method initDB
128 storagelocator must be the directory the __init__.py file is in
129 - os.path.split(__file__)[0] gives us that I think
130 '''
131 dbdir = os.path.join(DATABASE, 'files')
132 if not os.path.isdir(dbdir):
133 os.makedirs(dbdir)
134 db = open("admin")
135 db.clear()
136 pri = db.getclass('priority')
137 pri.create(name="fatal-bug", order="1")
138 pri.create(name="bug", order="2")
139 pri.create(name="usability", order="3")
140 pri.create(name="feature", order="4")
141 pri.create(name="support", order="5")
143 stat = db.getclass('status')
144 stat.create(name="unread", order="1")
145 stat.create(name="deferred", order="2")
146 stat.create(name="chatting", order="3")
147 stat.create(name="need-eg", order="4")
148 stat.create(name="in-progress", order="5")
149 stat.create(name="testing", order="6")
150 stat.create(name="done-cbb", order="7")
151 stat.create(name="resolved", order="8")
153 rate = db.getclass("rate")
154 rate.create(name='basic', order="1")
155 rate.create(name='premium', order="2")
156 rate.create(name='internal', order="3")
158 source = db.getclass("source")
159 source.create(name='phone', order="1")
160 source.create(name='e-mail', order="2")
161 source.create(name='internal', order="3")
162 source.create(name='internal-qa', order="4")
164 platform = db.getclass("platform")
165 platform.create(name='linux', order="1")
166 platform.create(name='windows', order="2")
167 platform.create(name='mac', order="3")
169 product = db.getclass("product")
170 product.create(name='Bizar Shop', order="1")
171 product.create(name='Bizar Shop Developer', order="2")
172 product.create(name='Bizar Shop Manual', order="3")
173 product.create(name='Bizar Shop Developer Manual', order="4")
175 user = db.getclass('user')
176 user.create(username="admin", password=adminpw, address=ADMIN_EMAIL)
178 db.close()
180 #
181 # $Log: not supported by cvs2svn $
182 # Revision 1.2 2001/07/22 12:09:32 richard
183 # Final commit of Grande Splite
184 #
185 #