annotate roundup/templates/minimal/dbinit.py @ 1226:0ef27b438916

adding the "minimal" template
author Richard Jones <richard@users.sourceforge.net>
date Thu, 26 Sep 2002 04:15:55 +0000
parents
children 7441653e5330
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 #
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 # $Id: dbinit.py,v 1.1 2002-09-26 04:15:07 richard Exp $
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
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46 #
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 # SECURITY SETTINGS
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 # new permissions for this schema
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 for cl in ('user', ):
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 db.security.addPermission(name="Edit", klass=cl,
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 description="User is allowed to edit "+cl)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 db.security.addPermission(name="View", klass=cl,
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 description="User is allowed to access "+cl)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 # 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
57 p = db.security.getPermission('Web Access')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 db.security.addPermissionToRole('User', p)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 p = db.security.getPermission('Email 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
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 # May users view other user information? Comment these lines out
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 # if you don't want them to
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 p = db.security.getPermission('View', 'user')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 db.security.addPermissionToRole('User', p)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 # Assign the appropriate permissions to the anonymous user's Anonymous
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 # Role. Choices here are:
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 # - Allow anonymous users to register through the web
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 p = db.security.getPermission('Web Registration')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 db.security.addPermissionToRole('Anonymous', p)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 # - Allow anonymous (new) users to register through the email gateway
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 p = db.security.getPermission('Email Registration')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 db.security.addPermissionToRole('Anonymous', p)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 import detectors
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 detectors.init(db)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 # schema is set up - run any post-initialisation
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 db.post_init()
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 return db
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 def init(adminpw):
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84 ''' as from the roundupdb method initDB
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 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
87 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
88 change the initial database entries.
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 '''
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 dbdir = os.path.join(config.DATABASE, 'files')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 if not os.path.isdir(dbdir):
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92 os.makedirs(dbdir)
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 db = open("admin")
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
95 db.clear()
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 # create the two default users
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 user = db.getclass('user')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 user.create(username="admin", password=adminpw,
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 address=config.ADMIN_EMAIL, roles='Admin')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
101 user.create(username="anonymous", roles='Anonymous')
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103 db.commit()
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
105 # vim: set filetype=python ts=4 sw=4 et si
0ef27b438916 adding the "minimal" template
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
106

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