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