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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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

Roundup Issue Tracker: http://roundup-tracker.org/