annotate roundup-admin @ 264:a671e5917b33

Many features and fixes. . roundup-admin create now prompts for property info if none is supplied on the command-line. . hyperdb Class getprops() method may now return only the mutable properties. . Login now uses cookies, which makes it a whole lot more flexible. We can now support anonymous user access (read-only, unless there's an "anonymous" user, in which case write access is permitted). Login handling has been moved into cgi_client.Client.main() . The "extended" schema is now the default in roundup init. . The schemas have had their page headings modified to cope with the new login handling. Existing installations should copy the interfaces.py file from the roundup lib directory to their instance home. . Incorrectly had a Bizar Software copyright on the cgitb.py module from Ping - has been removed. . Fixed a whole bunch of places in the CGI interface where we should have been returning Not Found instead of throwing an exception. . Fixed a deviation from the spec: trying to modify the 'id' property of an item now throws an exception.
author Richard Jones <richard@users.sourceforge.net>
date Fri, 05 Oct 2001 02:23:24 +0000
parents ab921dc53ccd
children a4241ddd22d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #! /usr/bin/python
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
2 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
3 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
4 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
5 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
6 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
7 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
8 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
9 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
10 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
11 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
12 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
13 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
14 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
15 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
16 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
17 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
18 #
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
19 # $Id: roundup-admin,v 1.21 2001-10-05 02:23:24 richard Exp $
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 import sys
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 if int(sys.version[0]) < 2:
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23 print 'Roundup requires python 2.0 or later.'
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 sys.exit(1)
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25
204
c1461733cbf9 Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents: 193
diff changeset
26 import string, os, getpass, getopt, re
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 from roundup import date, roundupdb, init
204
c1461733cbf9 Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents: 193
diff changeset
28 import roundup.instance
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 def usage(message=''):
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 if message: message = 'Problem: '+message+'\n'
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
32 commands = []
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
33 for command in figureCommands().values():
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
34 h = command.__doc__.split('\n')[0]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
35 commands.append(h[7:])
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
36 commands.sort()
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
37 print '''%sUsage: roundup-admin [-i instance home] [-u login] [-c] <command> <arguments>
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
38
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
39 Commands:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
40 %s
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
41 Help:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
42 roundup-admin -h
248
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
43 roundup-admin help -- this help
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
44 roundup-admin help <command> -- command-specific help
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
45 roundup-admin morehelp -- even more detailed help
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
46 Options:
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
47 -i instance home -- specify the issue tracker "home directory" to administer
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
48 -u -- the user[:password] to use for commands
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
49 -c -- when outputting lists of data, just comma-separate them'''%(
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
50 message, '\n '.join(commands))
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 def moreusage(message=''):
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 usage(message)
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 print '''
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 All commands (except help) require an instance specifier. This is just the path
248
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
56 to the roundup instance you're working with. A roundup instance is where
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
57 roundup keeps the database and configuration file that defines an issue
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
58 tracker. It may be thought of as the issue tracker's "home directory". It may
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
59 be specified in the environment variable ROUNDUP_INSTANCE or on the command
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
60 line as "-i instance".
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 A designator is a classname and a nodeid concatenated, eg. bug1, user10, ...
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 Property values are represented as strings in command arguments and in the
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 printed results:
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 . Strings are, well, strings.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67 . Date values are printed in the full date format in the local time zone, and
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 accepted in the full format or any of the partial formats explained below.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 . Link values are printed as node designators. When given as an argument,
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 node designators and key strings are both accepted.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 . Multilink values are printed as lists of node designators joined by commas.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 When given as an argument, node designators and key strings are both
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 accepted; an empty string, a single node, or a list of nodes joined by
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 commas is accepted.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 When multiple nodes are specified to the roundup get or roundup set
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 commands, the specified properties are retrieved or set on all the listed
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 nodes.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 When multiple results are returned by the roundup get or roundup find
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 commands, they are printed one per line (default) or joined by commas (with
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 the -c) option.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84 Where the command changes data, a login name/password is required. The
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 login may be specified as either "name" or "name:password".
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 . ROUNDUP_LOGIN environment variable
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 . the -u command-line option
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 If either the name or password is not supplied, they are obtained from the
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 command-line.
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91 Date format examples:
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92 "2000-04-17.03:45" means <Date 2000-04-17.08:45:00>
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 "2000-04-17" means <Date 2000-04-17.00:00:00>
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 "01-25" means <Date yyyy-01-25.00:00:00>
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
95 "08-13.22:13" means <Date yyyy-08-14.03:13:00>
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96 "11-07.09:32:43" means <Date yyyy-11-07.14:32:43>
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 "14:25" means <Date yyyy-mm-dd.19:25:00>
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 "8:47:11" means <Date yyyy-mm-dd.13:47:11>
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 "." means "right now"
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
100
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
101 Command help:
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102 '''
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
103 for name, command in figureCommands().items():
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
104 print '%s:'%name
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
105 print ' ',command.__doc__
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
106
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
107 def do_init(instance_home, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
108 '''Usage: init [template [backend [admin password]]]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
109 Initialise a new Roundup instance.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
110
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
111 The command will prompt for the instance home directory (if not supplied
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
112 through INSTANCE_HOME or the -i option. The template, backend and admin
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
113 password may be specified on the command-line as arguments, in that order.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
114 '''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
115 # select template
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
116 import roundup.templates
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
117 templates = roundup.templates.listTemplates()
147
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
118 template = len(args) > 1 and args[1] or ''
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
119 if template not in templates:
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
120 print 'Templates:', ', '.join(templates)
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
121 while template not in templates:
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
122 template = raw_input('Select template [extended]: ').strip()
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
123 if not template:
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
124 template = 'extended'
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
125
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
126 import roundup.backends
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
127 backends = roundup.backends.__all__
147
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
128 backend = len(args) > 2 and args[2] or ''
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
129 if backend not in backends:
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
130 print 'Back ends:', ', '.join(backends)
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
131 while backend not in backends:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
132 backend = raw_input('Select backend [anydbm]: ').strip()
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
133 if not backend:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
134 backend = 'anydbm'
147
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
135 if len(args) > 3:
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
136 adminpw = confirm = args[3]
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
137 else:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
138 adminpw = ''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
139 confirm = 'x'
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
140 while adminpw != confirm:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
141 adminpw = getpass.getpass('Admin Password: ')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
142 confirm = getpass.getpass(' Confirm: ')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
143 init.init(instance_home, template, backend, adminpw)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
144 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
145
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
146
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
147 def do_get(db, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
148 '''Usage: get property designator[,designator]*
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
149 Get the given property of one or more designator(s).
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
150
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
151 Retrieves the property value of the nodes specified by the designators.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
152 '''
261
0ca5381a72b5 made do_get have the args in the correct order
Richard Jones <richard@users.sourceforge.net>
parents: 248
diff changeset
153 propname = args[0]
0ca5381a72b5 made do_get have the args in the correct order
Richard Jones <richard@users.sourceforge.net>
parents: 248
diff changeset
154 designators = string.split(args[1], ',')
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
155 # TODO: handle the -c option
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
156 for designator in designators:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
157 classname, nodeid = roundupdb.splitDesignator(designator)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
158 print db.getclass(classname).get(nodeid, propname)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
159 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
160
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
161
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
162 def do_set(db, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
163 '''Usage: set designator[,designator]* propname=value ...
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
164 Set the given property of one or more designator(s).
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
165
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
166 Sets the property to the value for all designators given.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
167 '''
235
d7d358408537 added missing 'import' statements.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 224
diff changeset
168 from roundup import hyperdb
d7d358408537 added missing 'import' statements.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 224
diff changeset
169
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
170 designators = string.split(args[0], ',')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
171 props = {}
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
172 for prop in args[1:]:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
173 key, value = prop.split('=')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
174 props[key] = value
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
175 for designator in designators:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
176 classname, nodeid = roundupdb.splitDesignator(designator)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
177 cl = db.getclass(classname)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
178 properties = cl.getprops()
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
179 for key, value in props.items():
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
180 type = properties[key]
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
181 if isinstance(type, hyperdb.String):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
182 continue
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
183 elif isinstance(type, hyperdb.Date):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
184 props[key] = date.Date(value)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
185 elif isinstance(type, hyperdb.Interval):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
186 props[key] = date.Interval(value)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
187 elif isinstance(type, hyperdb.Link):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
188 props[key] = value
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
189 elif isinstance(type, hyperdb.Multilink):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
190 props[key] = value.split(',')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
191 apply(cl.set, (nodeid, ), props)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
192 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
193
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
194 def do_find(db, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
195 '''Usage: find classname propname=value ...
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
196 Find the nodes of the given class with a given property value.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
197
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
198 Find the nodes of the given class with a given property value. The
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
199 value may be either the nodeid of the linked node, or its key value.
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
200 '''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
201 classname = args[0]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
202 cl = db.getclass(classname)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
203
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
204 # look up the linked-to class and get the nodeid that has the value
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
205 propname, value = args[1].split('=')
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
206 num_re = re.compile('^\d+$')
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
207 if num_re.match(value):
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
208 nodeid = value
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
209 else:
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
210 propcl = cl.properties[propname].classname
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
211 propcl = db.getclass(propcl)
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
212 nodeid = propcl.lookup(value)
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
213
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
214 # now do the find
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
215 # TODO: handle the -c option
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
216 print cl.find(**{propname: nodeid})
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
217 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
218
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
219 def do_spec(db, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
220 '''Usage: spec classname
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
221 Show the properties for a classname.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
222
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
223 This lists the properties for a given class.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
224 '''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
225 classname = args[0]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
226 cl = db.getclass(classname)
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
227 keyprop = cl.getkey()
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
228 for key, value in cl.properties.items():
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
229 if keyprop == key:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
230 print '%s: %s (key property)'%(key, value)
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
231 else:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
232 print '%s: %s'%(key, value)
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
233
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
234 def do_create(db, args, pretty_re=re.compile(r'<roundup\.hyperdb\.(.*)>')):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
235 '''Usage: create classname property=value ...
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
236 Create a new entry of a given class.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
237
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
238 This creates a new entry of the given class using the property
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
239 name=value arguments provided on the command line after the "create"
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
240 command.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
241 '''
235
d7d358408537 added missing 'import' statements.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 224
diff changeset
242 from roundup import hyperdb
d7d358408537 added missing 'import' statements.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 224
diff changeset
243
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
244 classname = args[0]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
245 cl = db.getclass(classname)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
246 props = {}
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
247 properties = cl.getprops(protected = 0)
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
248 if len(args) == 1:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
249 # ask for the properties
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
250 for key, value in properties.items():
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
251 if key == 'id': continue
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
252 m = pretty_re.match(str(value))
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
253 if m:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
254 value = m.group(1)
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
255 value = raw_input('%s (%s): '%(key.capitalize(), value))
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
256 if value:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
257 props[key] = value
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
258 else:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
259 # use the args
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
260 for prop in args[1:]:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
261 key, value = prop.split('=')
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
262 props[key] = value
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
263
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
264 # convert types
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
265 for key in props.keys():
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
266 type = properties[key]
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
267 if isinstance(type, hyperdb.Date):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
268 props[key] = date.Date(value)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
269 elif isinstance(type, hyperdb.Interval):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
270 props[key] = date.Interval(value)
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
271 elif isinstance(type, hyperdb.Multilink):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
272 props[key] = value.split(',')
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
273
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
274 if cl.getkey() and not props.has_key(cl.getkey()):
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
275 print "You must provide the '%s' property."%cl.getkey()
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
276 else:
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
277 print apply(cl.create, (), props)
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
278
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
279 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
280
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
281 def do_list(db, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
282 '''Usage: list classname [property]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
283 List the instances of a class.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
284
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
285 Lists all instances of the given class along. If the property is not
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
286 specified, the "label" property is used. The label property is tried
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
287 in order: the key, "name", "title" and then the first property,
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
288 alphabetically.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
289 '''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
290 classname = args[0]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
291 cl = db.getclass(classname)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
292 if len(args) > 1:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
293 key = args[1]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
294 else:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
295 key = cl.labelprop()
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
296 # TODO: handle the -c option
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
297 for nodeid in cl.list():
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
298 value = cl.get(nodeid, key)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
299 print "%4s: %s"%(nodeid, value)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
300 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
301
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
302 def do_history(db, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
303 '''Usage: history designator
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
304 Show the history entries of a designator.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
305
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
306 Lists the journal entries for the node identified by the designator.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
307 '''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
308 classname, nodeid = roundupdb.splitDesignator(args[0])
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
309 # TODO: handle the -c option
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
310 print db.getclass(classname).history(nodeid)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
311 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
312
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
313 def do_retire(db, args):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
314 '''Usage: retire designator[,designator]*
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
315 Retire the node specified by designator.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
316
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
317 This action indicates that a particular node is not to be retrieved by
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
318 the list or find commands, and its key value may be re-used.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
319 '''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
320 designators = string.split(args[0], ',')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
321 for designator in designators:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
322 classname, nodeid = roundupdb.splitDesignator(designator)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
323 db.getclass(classname).retire(nodeid)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
324 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
325
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
326 def do_freshen(db, args):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
327 '''Usage: freshen
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
328 Freshen an existing instance. **DO NOT USE**
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
329
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
330 This currently kills databases!!!!
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
331
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
332 This action should generally not be used. It reads in an instance
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
333 database and writes it again. In the future, is may also update
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
334 instance code to account for changes in templates. It's probably wise
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
335 not to use it anyway. Until we're sure it won't break things...
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
336 '''
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
337 # for classname, cl in db.classes.items():
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
338 # properties = cl.properties.items()
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
339 # for nodeid in cl.list():
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
340 # node = {}
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
341 # for name, type in properties:
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
342 # isinstance( if type, hyperdb.Multilink):
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
343 # node[name] = cl.get(nodeid, name, [])
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
344 # else:
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
345 # node[name] = cl.get(nodeid, name, None)
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
346 # db.setnode(classname, nodeid, node)
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
347 return 1
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
348
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
349 def figureCommands():
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
350 d = {}
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
351 for k, v in globals().items():
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
352 if k[:3] == 'do_':
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
353 d[k[3:]] = v
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
354 return d
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
355
160
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
356 def printInitOptions():
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
357 import roundup.templates
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
358 templates = roundup.templates.listTemplates()
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
359 print 'Templates:', ', '.join(templates)
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
360 import roundup.backends
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
361 backends = roundup.backends.__all__
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
362 print 'Back ends:', ', '.join(backends)
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
363
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
364 def main():
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
365 opts, args = getopt.getopt(sys.argv[1:], 'i:u:hc')
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
366
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
367 # handle command-line args
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
368 instance_home = os.environ.get('ROUNDUP_INSTANCE', '')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
369 name = password = ''
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
370 if os.environ.has_key('ROUNDUP_LOGIN'):
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
371 l = os.environ['ROUNDUP_LOGIN'].split(':')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
372 name = l[0]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
373 if len(l) > 1:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
374 password = l[1]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
375 comma_sep = 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
376 for opt, arg in opts:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
377 if opt == '-h':
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
378 usage()
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
379 return 0
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
380 if opt == '-i':
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
381 instance_home = arg
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
382 if opt == '-u':
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
383 l = arg.split(':')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
384 name = l[0]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
385 if len(l) > 1:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
386 password = l[1]
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
387 if opt == '-c':
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
388 comma_sep = 1
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
389
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
390 # figure the command
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
391 if not args:
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
392 usage('No command specified')
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
393 return 1
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
394 command = args[0]
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
395
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
396 # handle help now
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
397 if command == 'help':
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
398 if len(args)>1:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
399 command = figureCommands().get(args[1], None)
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
400 if not command:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
401 usage('no such command "%s"'%args[1])
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
402 return 1
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
403 print command.__doc__
160
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
404 if args[1] == 'init':
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
405 printInitOptions()
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
406 return 0
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
407 usage()
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
408 return 0
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
409 if command == 'morehelp':
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
410 moreusage()
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
411 return 0
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
412
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
413 # make sure we have an instance_home
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
414 while not instance_home:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
415 instance_home = raw_input('Enter instance home: ').strip()
137
4a87e0b0d3f7 Made the "init" prompting more friendly.
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
416
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
417 # before we open the db, we may be doing an init
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
418 if command == 'init':
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
419 return do_init(instance_home, args)
137
4a87e0b0d3f7 Made the "init" prompting more friendly.
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
420
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
421 # open the database
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
422 if command in ('create', 'set', 'retire', 'freshen'):
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
423 while not name:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
424 name = raw_input('Login name: ')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
425 while not password:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
426 password = getpass.getpass(' password: ')
51
3a7e5515c1bd ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents: 48
diff changeset
427
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
428 # get the instance
204
c1461733cbf9 Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents: 193
diff changeset
429 instance = roundup.instance.open(instance_home)
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
430
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
431 function = figureCommands().get(command, None)
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
432
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
433 # not a valid command
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
434 if function is None:
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
435 usage('Unknown command "%s"'%command)
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
436 return 1
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
437
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
438 db = instance.open(name or 'admin')
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
439 try:
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
440 return function(db, args[1:])
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
441 finally:
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
442 db.close()
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
443
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
444 return 1
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
445
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
446
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
447 if __name__ == '__main__':
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
448 sys.exit(main())
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
449
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
450 #
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
451 # $Log: not supported by cvs2svn $
264
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
452 # Revision 1.20 2001/10/04 02:12:42 richard
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
453 # Added nicer command-line item adding: passing no arguments will enter an
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
454 # interactive more which asks for each property in turn. While I was at it, I
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
455 # fixed an implementation problem WRT the spec - I wasn't raising a
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
456 # ValueError if the key property was missing from a create(). Also added a
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
457 # protected=boolean argument to getprops() so we can list only the mutable
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
458 # properties (defaults to yes, which lists the immutables).
a671e5917b33 Many features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents: 262
diff changeset
459 #
262
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
460 # Revision 1.19 2001/10/01 06:40:43 richard
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
461 # made do_get have the args in the correct order
ab921dc53ccd Added nicer command-line item adding:
Richard Jones <richard@users.sourceforge.net>
parents: 261
diff changeset
462 #
261
0ca5381a72b5 made do_get have the args in the correct order
Richard Jones <richard@users.sourceforge.net>
parents: 248
diff changeset
463 # Revision 1.18 2001/09/18 22:58:37 richard
0ca5381a72b5 made do_get have the args in the correct order
Richard Jones <richard@users.sourceforge.net>
parents: 248
diff changeset
464 #
0ca5381a72b5 made do_get have the args in the correct order
Richard Jones <richard@users.sourceforge.net>
parents: 248
diff changeset
465 # Added some more help to roundu-admin
0ca5381a72b5 made do_get have the args in the correct order
Richard Jones <richard@users.sourceforge.net>
parents: 248
diff changeset
466 #
248
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
467 # Revision 1.17 2001/08/28 05:58:33 anthonybaxter
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
468 # added missing 'import' statements.
96cdd8ef0581 Added some more help to roundup-admin
Richard Jones <richard@users.sourceforge.net>
parents: 235
diff changeset
469 #
235
d7d358408537 added missing 'import' statements.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 224
diff changeset
470 # Revision 1.16 2001/08/12 06:32:36 richard
d7d358408537 added missing 'import' statements.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 224
diff changeset
471 # using isinstance(blah, Foo) now instead of isFooType
d7d358408537 added missing 'import' statements.
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 224
diff changeset
472 #
224
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
473 # Revision 1.15 2001/08/07 00:24:42 richard
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
474 # stupid typo
ad2c98faec97 using isinstance(blah, Foo) now instead of isFooType
Richard Jones <richard@users.sourceforge.net>
parents: 214
diff changeset
475 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
476 # Revision 1.14 2001/08/07 00:15:51 richard
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
477 # Added the copyright/license notice to (nearly) all files at request of
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
478 # Bizar Software.
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
479 #
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
480 # Revision 1.13 2001/08/05 07:44:13 richard
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
481 # Instances are now opened by a special function that generates a unique
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
482 # module name for the instances on import time.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 204
diff changeset
483 #
204
c1461733cbf9 Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents: 193
diff changeset
484 # Revision 1.12 2001/08/03 01:28:33 richard
c1461733cbf9 Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents: 193
diff changeset
485 # Used the much nicer load_package, pointed out by Steve Majewski.
c1461733cbf9 Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents: 193
diff changeset
486 #
193
241a0323aacb Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents: 190
diff changeset
487 # Revision 1.11 2001/08/03 00:59:34 richard
241a0323aacb Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents: 190
diff changeset
488 # Instance import now imports the instance using imp.load_module so that
241a0323aacb Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents: 190
diff changeset
489 # we can have instance homes of "roundup" or other existing python package
241a0323aacb Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents: 190
diff changeset
490 # names.
241a0323aacb Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents: 190
diff changeset
491 #
190
996eaf90c01e Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
492 # Revision 1.10 2001/07/30 08:12:17 richard
996eaf90c01e Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
493 # Added time logging and file uploading to the templates.
996eaf90c01e Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents: 167
diff changeset
494 #
167
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
495 # Revision 1.9 2001/07/30 03:52:55 richard
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
496 # init help now lists templates and backends
a49c8a2ddd26 Added time logging and file uploading to the templates.
Richard Jones <richard@users.sourceforge.net>
parents: 160
diff changeset
497 #
160
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
498 # Revision 1.8 2001/07/30 02:37:07 richard
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
499 # Freshen is really broken. Commented out.
002249ffa5d0 init help now lists templates and backends
Richard Jones <richard@users.sourceforge.net>
parents: 153
diff changeset
500 #
153
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
501 # Revision 1.7 2001/07/30 01:28:46 richard
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
502 # Bugfixes
b07b9a5b6aa9 Freshen is really broken. Commented out.
Richard Jones <richard@users.sourceforge.net>
parents: 147
diff changeset
503 #
147
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
504 # Revision 1.6 2001/07/30 00:57:51 richard
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
505 # Now uses getopt, much improved command-line parsing. Much fuller help. Much
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
506 # better internal structure. It's just BETTER. :)
0e3cb7a4290f Bugfixes
Richard Jones <richard@users.sourceforge.net>
parents: 140
diff changeset
507 #
140
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
508 # Revision 1.5 2001/07/30 00:04:48 richard
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
509 # Made the "init" prompting more friendly.
a4383d62a407 Now uses getopt, much improved command-line parsing.
Richard Jones <richard@users.sourceforge.net>
parents: 137
diff changeset
510 #
137
4a87e0b0d3f7 Made the "init" prompting more friendly.
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
511 # Revision 1.4 2001/07/29 07:01:39 richard
4a87e0b0d3f7 Made the "init" prompting more friendly.
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
512 # Added vim command to all source so that we don't get no steenkin' tabs :)
4a87e0b0d3f7 Made the "init" prompting more friendly.
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
513 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 51
diff changeset
514 # Revision 1.3 2001/07/23 08:45:28 richard
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 51
diff changeset
515 # ok, so now "./roundup-admin init" will ask questions in an attempt to get a
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 51
diff changeset
516 # workable instance_home set up :)
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 51
diff changeset
517 # _and_ anydbm has had its first test :)
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 51
diff changeset
518 #
51
3a7e5515c1bd ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents: 48
diff changeset
519 # Revision 1.2 2001/07/23 08:20:44 richard
3a7e5515c1bd ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents: 48
diff changeset
520 # Moved over to using marshal in the bsddb and anydbm backends.
3a7e5515c1bd ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents: 48
diff changeset
521 # roundup-admin now has a "freshen" command that'll load/save all nodes (not
3a7e5515c1bd ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents: 48
diff changeset
522 # retired - mod hyperdb.Class.list() so it lists retired nodes)
3a7e5515c1bd ok, so now "./roundup-admin init" will ask questions...
Richard Jones <richard@users.sourceforge.net>
parents: 48
diff changeset
523 #
48
671203878652 Moved over to using marshal in the bsddb and anydbm backends.
Richard Jones <richard@users.sourceforge.net>
parents: 27
diff changeset
524 # Revision 1.1 2001/07/23 03:46:48 richard
671203878652 Moved over to using marshal in the bsddb and anydbm backends.
Richard Jones <richard@users.sourceforge.net>
parents: 27
diff changeset
525 # moving the bin files to facilitate out-of-the-boxness
671203878652 Moved over to using marshal in the bsddb and anydbm backends.
Richard Jones <richard@users.sourceforge.net>
parents: 27
diff changeset
526 #
27
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
527 # Revision 1.1 2001/07/22 11:15:45 richard
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
528 # More Grande Splite stuff
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
529 #
e5e9ea306a09 moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
530 #
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 51
diff changeset
531 # vim: set filetype=python ts=4 sw=4 et si

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