Mercurial > p > roundup > code
annotate templates/minimal/dbinit.py @ 2119:cc4667ef3f12
Added the ability to toggle where error messages go.
They either go to the user (default, for backwards compatibility), the
dispatcher, or both. These are able to be toggled via settings in config.py.
Please refer to upgrading.txt for more details. (And Richard, let me know
if I've done anything wrong with this checkin. :))
| author | Eddie Parker <eparker@users.sourceforge.net> |
|---|---|
| date | Thu, 25 Mar 2004 19:27:15 +0000 |
| parents | 2a4309450202 |
| children |
| rev | line source |
|---|---|
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 # |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 # |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 # |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 # |
|
2076
2a4309450202
security fixes and doc updates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
18 # $Id: dbinit.py,v 1.2 2004-03-12 05:36:26 richard Exp $ |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 import os |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 import config |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 from select_db import Database, Class, FileClass, IssueClass |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 def open(name=None): |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 ''' as from the roundupdb method openDB |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 ''' |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 from roundup.hyperdb import String, Password, Date, Link, Multilink |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 from roundup.hyperdb import Interval, Boolean, Number |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 # open the database |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 db = Database(config, name) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 # |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 # Now initialise the schema. Must do this each time the database is |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 # opened. |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 # |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 # The "Minimal" template gets only one class, the required "user" |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 # class. That's it. And even that has the bare minimum of properties. |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 # Note: roles is a comma-separated string of Role names |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 user = Class(db, "user", username=String(), password=Password(), |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 address=String(), alternate_addresses=String(), roles=String()) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 user.setkey("username") |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 # add any additional database schema configuration here |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 # |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 # SECURITY SETTINGS |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 # |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 # and give the regular users access to the web and email interface |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 p = db.security.getPermission('Web Access') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 db.security.addPermissionToRole('User', p) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 p = db.security.getPermission('Email Access') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 db.security.addPermissionToRole('User', p) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 # May users view other user information? Comment these lines out |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 # if you don't want them to |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 p = db.security.getPermission('View', 'user') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 db.security.addPermissionToRole('User', p) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 # Assign the appropriate permissions to the anonymous user's Anonymous |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 # Role. Choices here are: |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 # - Allow anonymous users to register through the web |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 p = db.security.getPermission('Web Registration') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 db.security.addPermissionToRole('Anonymous', p) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 # - Allow anonymous (new) users to register through the email gateway |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
69 p = db.security.getPermission('Email Registration') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
70 db.security.addPermissionToRole('Anonymous', p) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
71 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
72 import detectors |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
73 detectors.init(db) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
74 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
75 # schema is set up - run any post-initialisation |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
76 db.post_init() |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 return db |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
78 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
79 def init(adminpw): |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
80 ''' as from the roundupdb method initDB |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
82 Open the new database, and add new nodes - used for initialisation. You |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 can edit this before running the "roundup-admin initialise" command to |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 change the initial database entries. |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
85 ''' |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 dbdir = os.path.join(config.DATABASE, 'files') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
87 if not os.path.isdir(dbdir): |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 os.makedirs(dbdir) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
90 db = open("admin") |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
91 db.clear() |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
92 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
93 # create the two default users |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
94 user = db.getclass('user') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 user.create(username="admin", password=adminpw, |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
96 address=config.ADMIN_EMAIL, roles='Admin') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 user.create(username="anonymous", roles='Anonymous') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 # add any additional database create steps here - but only if you |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 # haven't initialised the database with the admin "initialise" command |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
101 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 db.commit() |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
103 |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 # vim: set filetype=python ts=4 sw=4 et si |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
105 |
