Mercurial > p > roundup > code
annotate roundup/admin.py @ 6581:b5fb268b7f04
Docker installation doc improved and switchable debugging
Using a Docker container, login was failing with no error or ok
message. After a lengthy debugging session on irc with alxjsn
assisted by taggnostr realised it was the web setting in config.ini.
Install doc for docker now mentions that the web setting must end in
/issues/.
SHELL_DEBUG environment variable enabled set -xv in startp script.a
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 04 Jan 2022 16:31:04 -0500 |
| parents | 8687c096a945 |
| children | d4371b131c9c |
| rev | line source |
|---|---|
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 # |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # This module is free software, and you may redistribute it and/or modify |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 # under the same terms as Python, so long as this copyright message and |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 # disclaimer are retained in their original form. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 # |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 # POSSIBILITY OF SUCH DAMAGE. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 # |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
18 # |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
19 |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
20 """Administration commands for maintaining Roundup trackers. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
21 """ |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
22 from __future__ import print_function |
|
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
23 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
24 __docformat__ = 'restructuredtext' |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 |
|
5455
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
26 import csv, getopt, getpass, os, re, shutil, sys, operator |
|
3197
6d0b5937ee0d
fix: module csv is in standard library, not in roundup package;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3179
diff
changeset
|
27 |
| 6180 | 28 from roundup import date, hyperdb, init, password, token |
|
773
6e6c63a57df9
[SF#569415] {version]]
Richard Jones <richard@users.sourceforge.net>
parents:
763
diff
changeset
|
29 from roundup import __version__ as roundup_version |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 import roundup.instance |
|
6557
8687c096a945
Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
31 from roundup.configuration import (CoreConfig, NoConfigError, |
|
8687c096a945
Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
32 ParsingOptionError, UserConfig) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 from roundup.i18n import _ |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
34 from roundup.exceptions import UsageError |
|
5401
4cf48ff01e04
Python 3 preparation: replace raw_input uses.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5250
diff
changeset
|
35 from roundup.anypy.my_input import my_input |
|
5525
bb7865241f8a
Make CSV import/export compatible across Python versions (also RDBMS journals) (issue 2550976, issue 2550975).
Joseph Myers <jsm@polyomino.org.uk>
parents:
5459
diff
changeset
|
36 from roundup.anypy.strings import repr_export |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
37 |
|
5455
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
38 try: |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
39 from UserDict import UserDict |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
40 except ImportError: |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
41 from collections import UserDict |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
42 |
| 6180 | 43 |
|
5455
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
44 class CommandDict(UserDict): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
45 """Simple dictionary that lets us do lookups using partial keys. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 Original code submitted by Engelbert Gruber. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
48 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 _marker = [] |
| 6180 | 50 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 def get(self, key, default=_marker): |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
52 if key in self.data: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 return [(key, self.data[key])] |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
54 keylist = sorted(self.data) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 l = [] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 for ki in keylist: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 if ki.startswith(key): |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 l.append((ki, self.data[ki])) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 if not l and default is self._marker: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
60 raise KeyError(key) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 return l |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 |
| 6180 | 63 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 class AdminTool: |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
65 """ A collection of methods used in maintaining Roundup trackers. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
67 Typically these methods are accessed through the roundup-admin |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
68 script. The main() method provided on this class gives the main |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
69 loop for the roundup-admin script. |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
70 |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
71 Actions are defined by do_*() methods, with help for the action |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
72 given in the method docstring. |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
73 |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
74 Additional help may be supplied by help_*() methods. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
75 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
76 def __init__(self): |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 self.commands = CommandDict() |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
78 for k in AdminTool.__dict__: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
79 if k[:3] == 'do_': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
80 self.commands[k[3:]] = getattr(self, k) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 self.help = {} |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
82 for k in AdminTool.__dict__: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 if k[:5] == 'help_': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 self.help[k[5:]] = getattr(self, k) |
| 1098 | 85 self.tracker_home = '' |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 self.db = None |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
87 self.db_uncommitted = False |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
88 self.force = None |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
90 def get_class(self, classname): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
91 """Get the class - raise an exception if it doesn't exist. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
92 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
93 try: |
|
489
5db2dad23f09
[SF#500140] AdminTool.get_class() returns nothing
Richard Jones <richard@users.sourceforge.net>
parents:
484
diff
changeset
|
94 return self.db.getclass(classname) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 except KeyError: |
| 6180 | 96 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 |
|
649
29f7e41ee437
Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents:
626
diff
changeset
|
98 def props_from_args(self, args): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
99 """ Produce a dictionary of prop: value from the args list. |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
100 |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
101 The args list is specified as ``prop=value prop=value ...``. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
102 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
103 props = {} |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 for arg in args: |
|
6195
6e0c4d50b97e
Issue2551084 - Fix Inefficiency in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6191
diff
changeset
|
105 l = arg.split('=', 1) |
|
6187
cc66cf905147
Removed redundant code; fix help text for do_security
John Rouillard <rouilj@ieee.org>
parents:
6180
diff
changeset
|
106 # if = not in string, will return one element |
|
1544
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
107 if len(l) < 2: |
| 6180 | 108 raise UsageError(_('argument "%(arg)s" not propname=value') % |
| 109 locals()) | |
|
6195
6e0c4d50b97e
Issue2551084 - Fix Inefficiency in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6191
diff
changeset
|
110 key, value = l |
|
1108
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
111 if value: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
112 props[key] = value |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
113 else: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
114 props[key] = None |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
115 return props |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
116 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
117 def usage(self, message=''): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
118 """ Display a simple usage message. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
119 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
120 if message: |
| 6180 | 121 message = _('Problem: %(message)s\n\n')% locals() |
| 122 sys.stdout.write(_("""%(message)sUsage: roundup-admin [options] [<command> <arguments>] | |
| 1098 | 123 |
| 124 Options: | |
| 125 -i instance home -- specify the issue tracker "home directory" to administer | |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
126 -u -- the user[:password] to use for commands (default admin) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
127 -d -- print full designators not just class id numbers |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
128 -c -- when outputting lists of data, comma-separate them. |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
129 Same as '-S ","'. |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
130 -S <string> -- when outputting lists of data, string-separate them |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
131 -s -- when outputting lists of data, space-separate them. |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
132 Same as '-S " "'. |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
133 -V -- be verbose when importing |
|
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
134 -v -- report Roundup and Python versions (and quit) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
135 |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
136 Only one of -s, -c or -S can be specified. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
137 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
138 Help: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
139 roundup-admin -h |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
140 roundup-admin help -- this help |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
141 roundup-admin help <command> -- command-specific help |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
142 roundup-admin help all -- all available help |
| 6180 | 143 """) % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
144 self.help_commands() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
145 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
146 def help_commands(self): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
147 """List the commands available with their help summary. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
148 """ |
| 6180 | 149 sys.stdout.write(_('Commands: ')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
150 commands = [''] |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
151 for command in self.commands.values(): |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
152 h = _(command.__doc__).split('\n')[0] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
153 commands.append(' '+h[7:]) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
154 commands.sort() |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
155 commands.append(_( |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
156 """Commands may be abbreviated as long as the abbreviation |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
157 matches only one command, e.g. l == li == lis == list.""")) |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5104
diff
changeset
|
158 sys.stdout.write('\n'.join(commands) + '\n\n') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
159 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
160 def help_commands_html(self, indent_re=re.compile(r'^(\s+)\S+')): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
161 """ Produce an HTML command list. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
162 """ |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
163 commands = sorted(iter(self.commands.values()), |
| 6180 | 164 key=operator.attrgetter('__name__')) |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
165 for command in commands: |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
166 h = _(command.__doc__).split('\n') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
167 name = command.__name__[3:] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
168 usage = h[0] |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
169 print(""" |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 <tr><td valign=top><strong>%(name)s</strong></td> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
171 <td><tt>%(usage)s</tt><p> |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
172 <pre>""" % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
173 indent = indent_re.match(h[3]) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
174 if indent: indent = len(indent.group(1)) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
175 for line in h[3:]: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
176 if indent: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
177 print(line[indent:]) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
178 else: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
179 print(line) |
|
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
180 print('</pre></td></tr>\n') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
181 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
182 def help_all(self): |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
183 print(_(""" |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
184 All commands (except help) require a tracker specifier. This is just |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
185 the path to the roundup tracker you're working with. A roundup tracker |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
186 is where roundup keeps the database and configuration file that defines |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
187 an issue tracker. It may be thought of as the issue tracker's "home |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
188 directory". It may be specified in the environment variable TRACKER_HOME |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
189 or on the command line as "-i tracker". |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
190 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
191 A designator is a classname and a nodeid concatenated, eg. bug1, user10, ... |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
192 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
193 Property values are represented as strings in command arguments and in the |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
194 printed results: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
195 . Strings are, well, strings. |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
196 . Date values are printed in the full date format in the local time zone, |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
197 and accepted in the full format or any of the partial formats explained |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
198 below. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
199 . Link values are printed as node designators. When given as an argument, |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
200 node designators and key strings are both accepted. |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
201 . Multilink values are printed as lists of node designators joined |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
202 by commas. When given as an argument, node designators and key |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
203 strings are both accepted; an empty string, a single node, or a list |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
204 of nodes joined by commas is accepted. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
205 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
206 When property values must contain spaces, just surround the value with |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
207 quotes, either ' or ". A single space may also be backslash-quoted. If a |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
208 value must contain a quote character, it must be backslash-quoted or inside |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
209 quotes. Examples: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
210 hello world (2 tokens: hello, world) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
211 "hello world" (1 token: hello world) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
212 "Roch'e" Compaan (2 tokens: Roch'e Compaan) |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
213 Roch\\'e Compaan (2 tokens: Roch'e Compaan) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
214 address="1 2 3" (1 token: address=1 2 3) |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
215 \\\\ (1 token: \\) |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
216 \\n\\r\\t (1 token: a newline, carriage-return and tab) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
217 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
218 When multiple nodes are specified to the roundup get or roundup set |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
219 commands, the specified properties are retrieved or set on all the listed |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
220 nodes. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
221 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
222 When multiple results are returned by the roundup get or roundup find |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
223 commands, they are printed one per line (default) or joined by commas (with |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
224 the -c) option. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
225 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
226 Where the command changes data, a login name/password is required. The |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
227 login may be specified as either "name" or "name:password". |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
228 . ROUNDUP_LOGIN environment variable |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
229 . the -u command-line option |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
230 If either the name or password is not supplied, they are obtained from the |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
231 command-line. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
232 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
233 Date format examples: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
234 "2000-04-17.03:45" means <Date 2000-04-17.08:45:00> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
235 "2000-04-17" means <Date 2000-04-17.00:00:00> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
236 "01-25" means <Date yyyy-01-25.00:00:00> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
237 "08-13.22:13" means <Date yyyy-08-14.03:13:00> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
238 "11-07.09:32:43" means <Date yyyy-11-07.14:32:43> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
239 "14:25" means <Date yyyy-mm-dd.19:25:00> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
240 "8:47:11" means <Date yyyy-mm-dd.13:47:11> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
241 "." means "right now" |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
242 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
243 Command help: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
244 """)) |
|
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
245 for name, command in list(self.commands.items()): |
| 6180 | 246 print(_('%s:') % name) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
247 print(' ', _(command.__doc__)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
248 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
249 def do_help(self, args, nl_re=re.compile('[\r\n]'), |
| 6180 | 250 indent_re=re.compile(r'^(\s+)\S+')): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
251 ''"""Usage: help topic |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
252 Give help about topic. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
253 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
254 commands -- list commands |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
255 <command> -- help specific to a command |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
256 initopts -- init command options |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
257 all -- all available help |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
258 """ |
| 6180 | 259 if len(args) > 0: |
|
582
2fc4f8942a59
allow abbreviation of "help" in admin tool too.
Engelbert Gruber <grubert@users.sourceforge.net>
parents:
562
diff
changeset
|
260 topic = args[0] |
|
2fc4f8942a59
allow abbreviation of "help" in admin tool too.
Engelbert Gruber <grubert@users.sourceforge.net>
parents:
562
diff
changeset
|
261 else: |
|
2fc4f8942a59
allow abbreviation of "help" in admin tool too.
Engelbert Gruber <grubert@users.sourceforge.net>
parents:
562
diff
changeset
|
262 topic = 'help' |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
263 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
264 # try help_ methods |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
265 if topic in self.help: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
266 self.help[topic]() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
267 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
268 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
269 # try command docstrings |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
270 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
271 l = self.commands.get(topic) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
272 except KeyError: |
| 6180 | 273 print(_('Sorry, no help for "%(topic)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
274 return 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
275 |
| 6180 | 276 # display the help for each match, removing the docstring indent |
| 277 for _name, help in l: | |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
278 lines = nl_re.split(_(help.__doc__)) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
279 print(lines[0]) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
280 indent = indent_re.match(lines[1]) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
281 if indent: indent = len(indent.group(1)) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
282 for line in lines[1:]: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
283 if indent: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
284 print(line[indent:]) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
285 else: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
286 print(line) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
287 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
288 |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
289 def listTemplates(self): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
290 """ List all the available templates. |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
291 |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
292 Look in the following places, where the later rules take precedence: |
|
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
293 |
|
3894
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
294 1. <roundup.admin.__file__>/../../share/roundup/templates/* |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
295 this is where they will be if we installed an egg via easy_install |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
296 2. <prefix>/share/roundup/templates/* |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
297 this should be the standard place to find them when Roundup is |
|
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
298 installed |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
299 3. <roundup.admin.__file__>/../../<sys.prefix>/share/\ |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
300 roundup/templates/* which is where they will be found if |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
301 roundup is installed as a wheel using pip install |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
302 4. <roundup.admin.__file__>/../templates/* |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
303 this will be used if Roundup's run in the distro (aka. source) |
|
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
304 directory |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
305 5. <current working dir>/* |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
306 this is for when someone unpacks a 3rd-party template |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
307 6. <current working dir> |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
308 this is for someone who "cd"s to the 3rd-party template dir |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
309 """ |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
310 # OK, try <prefix>/share/roundup/templates |
|
3894
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
311 # and <egg-directory>/share/roundup/templates |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
312 # -- this module (roundup.admin) will be installed in something |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
313 # like: |
|
3894
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
314 # /usr/lib/python2.5/site-packages/roundup/admin.py (5 dirs up) |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
315 # c:\python25\lib\site-packages\roundup\admin.py (4 dirs up) |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
316 # /usr/lib/python2.5/site-packages/roundup-1.3.3-py2.5-egg/roundup/admin.py |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
317 # (2 dirs up) |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
318 # |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
319 # we're interested in where the directory containing "share" is |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
320 templates = {} |
|
4900
349a83aca61f
Correctly locate templates in a virtualenv (issue2550841)
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
321 for N in 2, 4, 5, 6: |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
322 path = __file__ |
|
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
323 # move up N elements in the path |
| 6180 | 324 for _i in range(N): |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
325 path = os.path.dirname(path) |
|
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
326 tdir = os.path.join(path, 'share', 'roundup', 'templates') |
|
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
327 if os.path.isdir(tdir): |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
328 templates = init.listTemplates(tdir) |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
329 break |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
330 |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
331 # search for data files parallel to the roundup |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
332 # install dir. E.G. a wheel install |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
333 # use roundup.__path__ and go up a level then use sys.prefix |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
334 # to create a base path for searching. |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
335 |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
336 import sys |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
337 # __file__ should be something like: |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
338 # /usr/local/lib/python3.10/site-packages/roundup/admin.py |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
339 # os.prefix should be /usr, /usr/local or root of virtualenv |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
340 # strip leading / to make os.path.join work right. |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
341 path = __file__ |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
342 for N in 1, 2: |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
343 path = os.path.dirname(path) |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
344 # path is /usr/local/lib/python3.10/site-packages |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
345 tdir = os.path.join(path, sys.prefix[1:], 'share', |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
346 'roundup', 'templates') |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
347 if os.path.isdir(tdir): |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
348 templates.update(init.listTemplates(tdir)) |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
349 |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
350 # OK, now try as if we're in the roundup source distribution |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
351 # directory, so this module will be in .../roundup-*/roundup/admin.py |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
352 # and we're interested in the .../roundup-*/ part. |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
353 path = __file__ |
| 6180 | 354 for _i in range(2): |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
355 path = os.path.dirname(path) |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
356 tdir = os.path.join(path, 'templates') |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
357 if os.path.isdir(tdir): |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
358 templates.update(init.listTemplates(tdir)) |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
359 |
|
1593
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
360 # Try subdirs of the current dir |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
361 templates.update(init.listTemplates(os.getcwd())) |
|
1593
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
362 |
|
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
363 # Finally, try the current directory as a template |
|
1916
d157b9b56ebf
implemented munging of template name for installed trackers
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
364 template = init.loadTemplateInfo(os.getcwd()) |
|
1593
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
365 if template: |
|
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
366 templates[template['name']] = template |
|
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
367 |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
368 return templates |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
369 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
370 def help_initopts(self): |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
371 templates = self.listTemplates() |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
372 print(_('Templates:'), ', '.join(templates)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
373 import roundup.backends |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2793
diff
changeset
|
374 backends = roundup.backends.list_backends() |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
375 print(_('Back ends:'), ', '.join(backends)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
376 |
| 1098 | 377 def do_install(self, tracker_home, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
378 ''"""Usage: install [template [backend [key=val[,key=val]]]] |
| 1098 | 379 Install a new Roundup tracker. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
380 |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
381 The command will prompt for the tracker home directory |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
382 (if not supplied through TRACKER_HOME or the -i option). |
|
3671
cecdd102733c
fix help message for roundup-admin install [SF#1494990]
Richard Jones <richard@users.sourceforge.net>
parents:
3670
diff
changeset
|
383 The template and backend may be specified on the command-line |
|
cecdd102733c
fix help message for roundup-admin install [SF#1494990]
Richard Jones <richard@users.sourceforge.net>
parents:
3670
diff
changeset
|
384 as arguments, in that order. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
385 |
|
3671
cecdd102733c
fix help message for roundup-admin install [SF#1494990]
Richard Jones <richard@users.sourceforge.net>
parents:
3670
diff
changeset
|
386 Command line arguments following the backend allows you to |
|
cecdd102733c
fix help message for roundup-admin install [SF#1494990]
Richard Jones <richard@users.sourceforge.net>
parents:
3670
diff
changeset
|
387 pass initial values for config options. For example, passing |
|
3433
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
388 "web_http_auth=no,rdbms_user=dinsdale" will override defaults |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
389 for options http_auth in section [web] and user in section [rdbms]. |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
390 Please be careful to not use spaces in this argument! (Enclose |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
391 whole argument in quotes if you need spaces in option value). |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
392 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
393 The initialise command must be called after this command in order |
| 1098 | 394 to initialise the tracker's database. You may edit the tracker's |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
395 initial database contents before running that command by editing |
| 1098 | 396 the tracker's dbinit.py module init() function. |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
397 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
398 See also initopts help. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
399 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
400 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
401 raise UsageError(_('Not enough arguments supplied')) |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
402 |
| 1098 | 403 # make sure the tracker home can be created |
|
2184
d04ef0543c76
roundup-admin install checks for existing tracker in target home
Richard Jones <richard@users.sourceforge.net>
parents:
2178
diff
changeset
|
404 tracker_home = os.path.abspath(tracker_home) |
| 1098 | 405 parent = os.path.split(tracker_home)[0] |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
406 if not os.path.exists(parent): |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
407 raise UsageError(_('Instance home parent directory "%(parent)s"' |
| 6180 | 408 ' does not exist') % locals()) |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
409 |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
410 config_ini_file = os.path.join(tracker_home, CoreConfig.INI_FILE) |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
411 # check for both old- and new-style configs |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
412 if list(filter(os.path.exists, [config_ini_file, |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
413 os.path.join(tracker_home, 'config.py')])): |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
414 if not self.force: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
415 ok = my_input(_( |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
416 """WARNING: There appears to be a tracker in "%(tracker_home)s"! |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
417 If you re-install it, you will lose all the data! |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
418 Erase it? Y/N: """) % locals()) |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
419 if ok.strip().lower() != 'y': |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
420 return 0 |
|
2184
d04ef0543c76
roundup-admin install checks for existing tracker in target home
Richard Jones <richard@users.sourceforge.net>
parents:
2178
diff
changeset
|
421 |
|
d04ef0543c76
roundup-admin install checks for existing tracker in target home
Richard Jones <richard@users.sourceforge.net>
parents:
2178
diff
changeset
|
422 # clear it out so the install isn't confused |
|
d04ef0543c76
roundup-admin install checks for existing tracker in target home
Richard Jones <richard@users.sourceforge.net>
parents:
2178
diff
changeset
|
423 shutil.rmtree(tracker_home) |
|
d04ef0543c76
roundup-admin install checks for existing tracker in target home
Richard Jones <richard@users.sourceforge.net>
parents:
2178
diff
changeset
|
424 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
425 # select template |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
426 templates = self.listTemplates() |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
427 template = self._get_choice( |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
428 list_name=_('Templates:'), |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
429 prompt=_('Select template'), |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
430 options=templates, |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
431 argument=len(args) > 1 and args[1] or '', |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
432 default='classic') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
433 |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
434 # select hyperdb backend |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
435 import roundup.backends |
|
2856
adec352e2ce0
don't try to import all backends in backends.__init__ unless we *want* to
Richard Jones <richard@users.sourceforge.net>
parents:
2793
diff
changeset
|
436 backends = roundup.backends.list_backends() |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
437 backend = self._get_choice( |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
438 list_name=_('Back ends:'), |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
439 prompt=_('Select backend'), |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
440 options=backends, |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
441 argument=len(args) > 2 and args[2] or '', |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
442 default='anydbm') |
|
1165
14467c765167
sqlite backend!
Richard Jones <richard@users.sourceforge.net>
parents:
1133
diff
changeset
|
443 # XXX perform a unit test based on the user's selections |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
444 |
|
3433
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
445 # Process configuration file definitions |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
446 if len(args) > 3: |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
447 try: |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
448 defns = dict([item.split("=") for item in args[3].split(",")]) |
| 6180 | 449 except Exception: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
450 print(_('Error in configuration settings: "%s"') % args[3]) |
|
3433
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
451 raise |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
452 else: |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
453 defns = {} |
|
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
454 |
|
5041
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
4900
diff
changeset
|
455 defns['rdbms_backend'] = backend |
|
5762
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
456 |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
457 # load config_ini.ini from template if it exists. |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
458 # it sets parameters like template_engine that are |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
459 # template specific. |
| 6180 | 460 template_config = UserConfig(templates[template]['path'] + |
|
5762
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
461 "/config_ini.ini") |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
462 for k in template_config.keys(): |
| 6180 | 463 if k == 'HOME': # ignore home. It is a default param. |
|
5762
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
464 continue |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
465 defns[k] = template_config[k] |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
466 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
467 # install! |
|
3433
2affe8fa51a5
install: accept configuration setting overrides (based on patch [SF#237110])
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3383
diff
changeset
|
468 init.install(tracker_home, templates[template]['path'], settings=defns) |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
469 |
|
5762
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
470 # Remove config_ini.ini file from tracker_home (not template dir). |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
471 # Ignore file not found - not all templates have |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
472 # config_ini.ini files. |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
473 try: |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
474 os.remove(tracker_home + "/config_ini.ini") |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
475 except OSError as e: # FileNotFound exception under py3 |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
476 if e.errno == 2: |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
477 pass |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
478 else: |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
479 raise |
|
b76be13e027e
issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
5525
diff
changeset
|
480 |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
481 print(_(""" |
|
3295
a615cc230160
added Xapian indexer; replaces standard indexers if Xapian is available
Richard Jones <richard@users.sourceforge.net>
parents:
3287
diff
changeset
|
482 --------------------------------------------------------------------------- |
| 1098 | 483 You should now edit the tracker configuration file: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
484 %(config_file)s""") % {"config_file": config_ini_file}) |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
485 |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
486 # find list of options that need manual adjustments |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
487 # XXX config._get_unset_options() is marked as private |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
488 # (leading underscore). make it public or don't care? |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
489 need_set = CoreConfig(tracker_home)._get_unset_options() |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
490 if need_set: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
491 print(_(" ... at a minimum, you must set following options:")) |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
492 for section in need_set: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
493 print(" [%s]: %s" % (section, ", ".join(need_set[section]))) |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
494 |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
495 # note about schema modifications |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
496 print(_(""" |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
497 If you wish to modify the database schema, |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
498 you should also edit the schema file: |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
499 %(database_config_file)s |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
500 You may also change the database initialisation file: |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
501 %(database_init_file)s |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
502 ... see the documentation on customizing for more information. |
|
3295
a615cc230160
added Xapian indexer; replaces standard indexers if Xapian is available
Richard Jones <richard@users.sourceforge.net>
parents:
3287
diff
changeset
|
503 |
|
a615cc230160
added Xapian indexer; replaces standard indexers if Xapian is available
Richard Jones <richard@users.sourceforge.net>
parents:
3287
diff
changeset
|
504 You MUST run the "roundup-admin initialise" command once you've performed |
|
a615cc230160
added Xapian indexer; replaces standard indexers if Xapian is available
Richard Jones <richard@users.sourceforge.net>
parents:
3287
diff
changeset
|
505 the above steps. |
|
a615cc230160
added Xapian indexer; replaces standard indexers if Xapian is available
Richard Jones <richard@users.sourceforge.net>
parents:
3287
diff
changeset
|
506 --------------------------------------------------------------------------- |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
507 """) % { |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
508 'database_config_file': os.path.join(tracker_home, 'schema.py'), |
|
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
509 'database_init_file': os.path.join(tracker_home, 'initial_data.py'), |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
510 }) |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
511 return 0 |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
512 |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
513 def _get_choice(self, list_name, prompt, options, argument, default=None): |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
514 if default is None: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
515 default = options[0] # just pick the first one |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
516 if argument in options: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
517 return argument |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
518 if self.force: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
519 return default |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
520 sys.stdout.write('%s: %s\n' % (list_name, ', '.join(options))) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
521 while argument not in options: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
522 argument = my_input('%s [%s]: ' % (prompt, default)) |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
523 if not argument: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
524 return default |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
525 return argument |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
526 |
|
5230
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
527 def do_genconfig(self, args, update=False): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
528 ''"""Usage: genconfig <filename> |
| 6191 | 529 Generate a new tracker config file (ini style) with default |
| 530 values in <filename>. | |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
531 """ |
|
2889
accb3b411ef6
instructions and method for generating config.ini
Richard Jones <richard@users.sourceforge.net>
parents:
2856
diff
changeset
|
532 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
533 raise UsageError(_('Not enough arguments supplied')) |
|
5230
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
534 if update: |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
535 # load current config for writing |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
536 config = CoreConfig(self.tracker_home) |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
537 else: |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
538 # generate default config |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
539 config = CoreConfig() |
|
2889
accb3b411ef6
instructions and method for generating config.ini
Richard Jones <richard@users.sourceforge.net>
parents:
2856
diff
changeset
|
540 config.save(args[0]) |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
541 |
|
5230
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
542 def do_updateconfig(self, args): |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
543 ''"""Usage: updateconfig <filename> |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
544 Generate an updated tracker config file (ini style) in |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
545 <filename>. Use current settings from existing roundup |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
546 tracker in tracker home. |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
547 """ |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
548 self.do_genconfig(args, update=True) |
|
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
549 |
| 1098 | 550 def do_initialise(self, tracker_home, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
551 ''"""Usage: initialise [adminpw] |
| 1098 | 552 Initialise a new Roundup tracker. |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
553 |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
554 The administrator details will be set at this step. |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
555 |
| 1098 | 556 Execute the tracker's initialisation function dbinit.init() |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
557 """ |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
558 # password |
|
751
92abd71ec19b
out by one in the init args
Richard Jones <richard@users.sourceforge.net>
parents:
738
diff
changeset
|
559 if len(args) > 1: |
|
92abd71ec19b
out by one in the init args
Richard Jones <richard@users.sourceforge.net>
parents:
738
diff
changeset
|
560 adminpw = args[1] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
561 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
562 adminpw = '' |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
563 confirm = 'x' |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
564 while adminpw != confirm: |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
565 adminpw = getpass.getpass(_('Admin Password: ')) |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
566 confirm = getpass.getpass(_(' Confirm: ')) |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
567 |
| 1098 | 568 # make sure the tracker home is installed |
| 569 if not os.path.exists(tracker_home): | |
| 6180 | 570 raise UsageError(_('Instance home does not exist') % locals()) |
|
1434
b953750bdc04
trackers on mysql can be initialised
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1409
diff
changeset
|
571 try: |
|
b953750bdc04
trackers on mysql can be initialised
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1409
diff
changeset
|
572 tracker = roundup.instance.open(tracker_home) |
|
b953750bdc04
trackers on mysql can be initialised
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1409
diff
changeset
|
573 except roundup.instance.TrackerError: |
| 6180 | 574 raise UsageError(_('Instance has not been installed') % locals()) |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
575 |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
576 # is there already a database? |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2566
diff
changeset
|
577 if tracker.exists(): |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
578 if not self.force: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
579 ok = my_input(_( |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
580 """WARNING: The database is already initialised! |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
581 If you re-initialise it, you will lose all the data! |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
582 Erase it? Y/N: """)) |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
583 if ok.strip().lower() != 'y': |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
584 return 0 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
585 |
|
2633
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2566
diff
changeset
|
586 # nuke it |
|
a9e1fff1e793
I thought I committed this last night. Ho hum.
Richard Jones <richard@users.sourceforge.net>
parents:
2566
diff
changeset
|
587 tracker.nuke() |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
588 |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
589 # GO |
|
5216
6a4317738a90
make roundup-admin init function set the transaction source. Otherwise when initial_data.py is loaded as part of init, db.tx_Source is set to None and thus checks like db.tx_Source in [ 'cli' ] will fail.
John Rouillard <rouilj@ieee.org>
parents:
5163
diff
changeset
|
590 tracker.init(password.Password(adminpw, config=tracker.config), |
| 6180 | 591 tx_Source='cli') |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
592 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
593 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
594 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
595 def do_get(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
596 ''"""Usage: get property designator[,designator]* |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
597 Get the given property of one or more designator(s). |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
598 |
|
4299
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
599 A designator is a classname and a nodeid concatenated, |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
600 eg. bug1, user10, ... |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
601 |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
602 Retrieves the property value of the nodes specified |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
603 by the designators. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
604 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
605 if len(args) < 2: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
606 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
607 propname = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
608 designators = args[1].split(',') |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
609 l = [] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
610 for designator in designators: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
611 # decode the node designator |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
612 try: |
|
902
b0d3d3535998
Bugger it. Here's the current shape of the new security implementation.
Richard Jones <richard@users.sourceforge.net>
parents:
880
diff
changeset
|
613 classname, nodeid = hyperdb.splitDesignator(designator) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
614 except hyperdb.DesignatorError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
615 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
616 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
617 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
618 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
619 try: |
| 6180 | 620 id = [] |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
621 if self.separator: |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
622 if self.print_designator: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
623 # see if property is a link or multilink for |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
624 # which getting a desginator make sense. |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
625 # Algorithm: Get the properties of the |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
626 # current designator's class. (cl.getprops) |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
627 # get the property object for the property the |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
628 # user requested (properties[propname]) |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
629 # verify its type (isinstance...) |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
630 # raise error if not link/multilink |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
631 # get class name for link/multilink property |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
632 # do the get on the designators |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
633 # append the new designators |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
634 # print |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
635 properties = cl.getprops() |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
636 property = properties[propname] |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
637 if not (isinstance(property, hyperdb.Multilink) or |
| 6180 | 638 isinstance(property, hyperdb.Link)): |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
639 raise UsageError(_('property %s is not of type' |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
640 ' Multilink or Link so -d flag does not ' |
| 6180 | 641 'apply.') % propname) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
642 propclassname = self.db.getclass(property.classname).classname |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
643 id = cl.get(nodeid, propname) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
644 for i in id: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
645 l.append(propclassname + i) |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
646 else: |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
647 id = cl.get(nodeid, propname) |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
648 for i in id: |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
649 l.append(i) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
650 else: |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
651 if self.print_designator: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
652 properties = cl.getprops() |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
653 property = properties[propname] |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
654 if not (isinstance(property, hyperdb.Multilink) or |
| 6180 | 655 isinstance(property, hyperdb.Link)): |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
656 raise UsageError(_('property %s is not of type' |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
657 ' Multilink or Link so -d flag does not ' |
| 6180 | 658 'apply.') % propname) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
659 propclassname = self.db.getclass(property.classname).classname |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
660 id = cl.get(nodeid, propname) |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
661 for i in id: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
662 print(propclassname + i) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
663 else: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
664 print(cl.get(nodeid, propname)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
665 except IndexError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
666 raise UsageError(_('no such %(classname)s node ' |
| 6180 | 667 '"%(nodeid)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
668 except KeyError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
669 raise UsageError(_('no such %(classname)s property ' |
| 6180 | 670 '"%(propname)s"') % locals()) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
671 if self.separator: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
672 print(self.separator.join(l)) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
673 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
674 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
675 |
|
3383
c1c67c62b699
applied patch [SF#236087]
Richard Jones <richard@users.sourceforge.net>
parents:
3359
diff
changeset
|
676 def do_set(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
677 ''"""Usage: set items property=value property=value ... |
|
1108
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
678 Set the given properties of one or more items(s). |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
679 |
|
1570
93e0a565cee5
fix the "set" command usage statement
Richard Jones <richard@users.sourceforge.net>
parents:
1566
diff
changeset
|
680 The items are specified as a class or as a comma-separated |
|
1108
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
681 list of item designators (ie "designator[,designator,...]"). |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
682 |
|
4299
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
683 A designator is a classname and a nodeid concatenated, |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
684 eg. bug1, user10, ... |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
685 |
|
6198
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
686 This command sets the properties to the values for all |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
687 designators given. If a class is used, the property will be |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
688 set for all items in the class. If the value is missing |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
689 (ie. "property=") then the property is un-set. If the property |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
690 is a multilink, you specify the linked ids for the multilink |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
691 as comma-separated numbers (ie "1,2,3"). |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
692 |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
693 """ |
| 6180 | 694 import copy # needed for copying props list |
|
5104
ca3e56590fcd
Fixed issue2550572: setting nosy=+foo on multiple issues gives them all
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
695 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
696 if len(args) < 2: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
697 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
698 from roundup import hyperdb |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
699 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
700 designators = args[0].split(',') |
|
1108
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
701 if len(designators) == 1: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
702 designator = designators[0] |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
703 try: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
704 designator = hyperdb.splitDesignator(designator) |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
705 designators = [designator] |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
706 except hyperdb.DesignatorError: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
707 cl = self.get_class(designator) |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
708 designators = [(designator, x) for x in cl.list()] |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
709 else: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
710 try: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
711 designators = [hyperdb.splitDesignator(x) for x in designators] |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
712 except hyperdb.DesignatorError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
713 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
714 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
715 # get the props from the args |
| 6180 | 716 propset = self.props_from_args(args[1:]) # parse the cli once |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
717 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
718 # now do the set for all the nodes |
|
1108
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
719 for classname, itemid in designators: |
| 6180 | 720 props = copy.copy(propset) # make a new copy for every designator |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
721 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
722 |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
723 for key, value in list(props.items()): |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
1863
diff
changeset
|
724 try: |
|
5104
ca3e56590fcd
Fixed issue2550572: setting nosy=+foo on multiple issues gives them all
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
725 # You must reinitialize the props every time though. |
|
ca3e56590fcd
Fixed issue2550572: setting nosy=+foo on multiple issues gives them all
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
726 # if props['nosy'] = '+admin' initally, it gets |
|
ca3e56590fcd
Fixed issue2550572: setting nosy=+foo on multiple issues gives them all
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
727 # set to 'demo,admin' (assuming it was set to demo |
|
ca3e56590fcd
Fixed issue2550572: setting nosy=+foo on multiple issues gives them all
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
728 # in the db) after rawToHyperdb returns. |
|
ca3e56590fcd
Fixed issue2550572: setting nosy=+foo on multiple issues gives them all
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
729 # This new value is used for all the rest of the |
|
ca3e56590fcd
Fixed issue2550572: setting nosy=+foo on multiple issues gives them all
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
730 # designators if not reinitalized. |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
1863
diff
changeset
|
731 props[key] = hyperdb.rawToHyperdb(self.db, cl, itemid, |
| 6180 | 732 key, value) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
733 except hyperdb.HyperdbValueError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
734 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
735 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
736 # try the set |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
737 try: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
738 cl.set(itemid, **props) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
739 except (TypeError, IndexError, ValueError) as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
740 raise UsageError(message) |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
741 self.db_uncommitted = True |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
742 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
743 |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
744 def do_filter(self, args): |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
745 ''"""Usage: filter classname propname=value ... |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
746 Find the nodes of the given class with a given property value. |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
747 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
748 Find the nodes of the given class with a given property value. |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
749 Multiple values can be specified by separating them with commas. |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
750 If property is a string, all values must match. I.E. it's an |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
751 'and' operation. If the property is a link/multilink any value |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
752 matches. I.E. an 'or' operation. |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
753 """ |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
754 if len(args) < 1: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
755 raise UsageError(_('Not enough arguments supplied')) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
756 classname = args[0] |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
757 # get the class |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
758 cl = self.get_class(classname) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
759 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
760 # handle the propname=value argument |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
761 props = self.props_from_args(args[1:]) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
762 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
763 # convert the user-input value to a value used for filter |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
764 # multiple , separated values become a list |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
765 for propname, value in props.items(): |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
766 if ',' in value: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
767 values = value.split(',') |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
768 else: |
|
6177
41907e1f9c3f
Fix postgres/mysql testing; test filter.
John Rouillard <rouilj@ieee.org>
parents:
6176
diff
changeset
|
769 values = [ value ] |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
770 |
|
6177
41907e1f9c3f
Fix postgres/mysql testing; test filter.
John Rouillard <rouilj@ieee.org>
parents:
6176
diff
changeset
|
771 props[propname] = [] |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
772 # start handling transitive props |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
773 # given filter issue assignedto.roles=Admin |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
774 # start at issue |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
775 curclass = cl |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
776 lastprop = propname # handle case 'issue assignedto=admin' |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
777 if '.' in propname: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
778 # start splitting transitive prop into components |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
779 # we end when we have no more links |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
780 for pn in propname.split('.'): |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
781 try: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
782 lastprop=pn # get current component |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
783 # get classname for this link |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
784 try: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
785 curclassname = curclass.getprops()[pn].classname |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
786 except KeyError: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
787 raise UsageError(_("Class %(curclassname)s has " |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
788 "no property %(pn)s in %(propname)s." % locals())) |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
789 # get class object |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
790 curclass = self.get_class(curclassname) |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
791 except AttributeError: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
792 # curclass.getprops()[pn].classname raises this |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
793 # when we are at a non link/multilink property |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
794 pass |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
795 |
|
6177
41907e1f9c3f
Fix postgres/mysql testing; test filter.
John Rouillard <rouilj@ieee.org>
parents:
6176
diff
changeset
|
796 for value in values: |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
797 val = hyperdb.rawToHyperdb(self.db, curclass, None, |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
798 lastprop, value) |
|
6177
41907e1f9c3f
Fix postgres/mysql testing; test filter.
John Rouillard <rouilj@ieee.org>
parents:
6176
diff
changeset
|
799 props[propname].append(val) |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
800 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
801 # now do the filter |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
802 try: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
803 id = [] |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
804 designator = [] |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
805 props = { "filterspec": props } |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
806 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
807 if self.separator: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
808 if self.print_designator: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
809 id = cl.filter(None, **props) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
810 for i in id: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
811 designator.append(classname + i) |
| 6180 | 812 print(self.separator.join(designator)) |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
813 else: |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
814 print(self.separator.join(cl.filter(None, **props))) |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
815 else: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
816 if self.print_designator: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
817 id = cl.filter(None, **props) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
818 for i in id: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
819 designator.append(classname + i) |
| 6180 | 820 print(designator) |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
821 else: |
| 6180 | 822 print(cl.filter(None, **props)) |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
823 except KeyError: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
824 raise UsageError(_('%(classname)s has no property ' |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
825 '"%(propname)s"') % locals()) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
826 except (ValueError, TypeError) as message: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
827 raise UsageError(message) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
828 return 0 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
829 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
830 def do_find(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
831 ''"""Usage: find classname propname=value ... |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
832 Find the nodes of the given class with a given link property value. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
833 |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
834 Find the nodes of the given class with a given link property value. |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
835 The value may be either the nodeid of the linked node, or its key |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
836 value. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
837 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
838 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
839 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
840 classname = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
841 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
842 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
843 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
844 # handle the propname=value argument |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
845 props = self.props_from_args(args[1:]) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
846 |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
847 # convert the user-input value to a value used for find() |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
848 for propname, value in props.items(): |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
849 if ',' in value: |
|
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
850 values = value.split(',') |
|
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
851 else: |
| 2504 | 852 values = [value] |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
853 d = props[propname] = {} |
|
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
854 for value in values: |
| 6180 | 855 value = hyperdb.rawToHyperdb(self.db, cl, None, |
| 856 propname, value) | |
|
3314
4372716a675a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3295
diff
changeset
|
857 if isinstance(value, list): |
|
4372716a675a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3295
diff
changeset
|
858 for entry in value: |
|
4372716a675a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3295
diff
changeset
|
859 d[entry] = 1 |
|
4372716a675a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3295
diff
changeset
|
860 else: |
|
4372716a675a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3295
diff
changeset
|
861 d[value] = 1 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
862 |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
863 # now do the find |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
864 try: |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
865 id = [] |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
866 designator = [] |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
867 if self.separator: |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
868 if self.print_designator: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
869 id = cl.find(**props) |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
870 for i in id: |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
871 designator.append(classname + i) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
872 print(self.separator.join(designator)) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
873 else: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
874 print(self.separator.join(cl.find(**props))) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
875 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
876 else: |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
877 if self.print_designator: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
878 id = cl.find(**props) |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
879 for i in id: |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
880 designator.append(classname + i) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
881 print(designator) |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
882 else: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
883 print(cl.find(**props)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
884 except KeyError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
885 raise UsageError(_('%(classname)s has no property ' |
| 6180 | 886 '"%(propname)s"') % locals()) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
887 except (ValueError, TypeError) as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
888 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
889 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
890 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
891 def do_specification(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
892 ''"""Usage: specification classname |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
893 Show the properties for a classname. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
894 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
895 This lists the properties for a given class. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
896 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
897 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
898 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
899 classname = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
900 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
901 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
902 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
903 # get the key property |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
904 keyprop = cl.getkey() |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
905 for key in cl.properties: |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
906 value = cl.properties[key] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
907 if keyprop == key: |
| 6180 | 908 sys.stdout.write(_('%(key)s: %(value)s (key property)\n') % |
| 909 locals()) | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
910 else: |
| 6180 | 911 sys.stdout.write(_('%(key)s: %(value)s\n') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
912 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
913 def do_display(self, args): |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4073
diff
changeset
|
914 ''"""Usage: display designator[,designator]* |
| 6191 | 915 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
916 Show the property values for the given node(s). |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
917 |
|
4299
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
918 A designator is a classname and a nodeid concatenated, |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
919 eg. bug1, user10, ... |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
920 |
| 6191 | 921 This lists the properties and their associated values |
| 922 for the given node. | |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
923 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
924 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
925 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
926 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
927 # decode the node designator |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
928 for designator in args[0].split(','): |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
929 try: |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
930 classname, nodeid = hyperdb.splitDesignator(designator) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
931 except hyperdb.DesignatorError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
932 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
933 |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
934 # get the class |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
935 cl = self.get_class(classname) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
936 |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
937 # display the values |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
938 keys = sorted(cl.properties) |
|
1775
d4c0c65adb2c
applied patch [SF#739314] (sorry John!)
Richard Jones <richard@users.sourceforge.net>
parents:
1767
diff
changeset
|
939 for key in keys: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
940 value = cl.get(nodeid, key) |
| 6180 | 941 print(_('%(key)s: %(value)s') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
942 |
|
3383
c1c67c62b699
applied patch [SF#236087]
Richard Jones <richard@users.sourceforge.net>
parents:
3359
diff
changeset
|
943 def do_create(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
944 ''"""Usage: create classname property=value ... |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
945 Create a new entry of a given class. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
946 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
947 This creates a new entry of the given class using the property |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
948 name=value arguments provided on the command line after the "create" |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
949 command. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
950 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
951 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
952 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
953 from roundup import hyperdb |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
954 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
955 classname = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
956 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
957 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
958 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
959 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
960 # now do a create |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
961 props = {} |
| 6180 | 962 properties = cl.getprops(protected=0) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
963 if len(args) == 1: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
964 # ask for the properties |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
965 for key in properties: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
966 if key == 'id': continue |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
967 value = properties[key] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
968 name = value.__class__.__name__ |
| 6180 | 969 if isinstance(value, hyperdb.Password): |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
970 again = None |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
971 while value != again: |
| 6180 | 972 value = getpass.getpass(_('%(propname)s (Password): ') |
| 973 % | |
| 974 {'propname': key.capitalize()}) | |
| 975 again = getpass.getpass(_(' %(propname)s (Again): ') | |
| 976 % | |
| 977 {'propname': key.capitalize()}) | |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
978 if value != again: print(_('Sorry, try again...')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
979 if value: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
980 props[key] = value |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
981 else: |
| 6180 | 982 value = my_input(_('%(propname)s (%(proptype)s): ') % { |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
983 'propname': key.capitalize(), 'proptype': name}) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
984 if value: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
985 props[key] = value |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
986 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
987 props = self.props_from_args(args[1:]) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
988 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
989 # convert types |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
990 for propname in props: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
991 try: |
|
2093
3f6024ab2c7a
That's the last of the RDBMS migration steps done! Yay!
Richard Jones <richard@users.sourceforge.net>
parents:
2005
diff
changeset
|
992 props[propname] = hyperdb.rawToHyperdb(self.db, cl, None, |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
993 propname, props[propname]) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
994 except hyperdb.HyperdbValueError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
995 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
996 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
997 # check for the key property |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
998 propname = cl.getkey() |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
999 if propname and propname not in props: |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1000 raise UsageError(_('you must provide the "%(propname)s" ' |
| 6180 | 1001 'property.') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1002 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1003 # do the actual create |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1004 try: |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5104
diff
changeset
|
1005 sys.stdout.write(cl.create(**props) + '\n') |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
1006 except (TypeError, IndexError, ValueError) as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1007 raise UsageError(message) |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1008 self.db_uncommitted = True |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1009 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1010 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1011 def do_list(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1012 ''"""Usage: list classname [property] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1013 List the instances of a class. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1014 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1015 Lists all instances of the given class. If the property is not |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1016 specified, the "label" property is used. The label property is |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1017 tried in order: the key, "name", "title" and then the first |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1018 property, alphabetically. |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1019 |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1020 With -c, -S or -s print a list of item id's if no property |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1021 specified. If property specified, print list of that property |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1022 for every class instance. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1023 """ |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1024 if len(args) > 2: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1025 raise UsageError(_('Too many arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1026 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1027 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1028 classname = args[0] |
| 6180 | 1029 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1030 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1031 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1032 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1033 # figure the property |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1034 if len(args) > 1: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1035 propname = args[1] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1036 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1037 propname = cl.labelprop() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1038 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1039 if self.separator: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1040 if len(args) == 2: |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1041 # create a list of propnames since user specified propname |
| 6180 | 1042 proplist = [] |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1043 for nodeid in cl.list(): |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1044 try: |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1045 proplist.append(cl.get(nodeid, propname)) |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1046 except KeyError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1047 raise UsageError(_('%(classname)s has no property ' |
| 6180 | 1048 '"%(propname)s"') % locals()) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1049 print(self.separator.join(proplist)) |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1050 else: |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1051 # create a list of index id's since user didn't specify |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1052 # otherwise |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1053 print(self.separator.join(cl.list())) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1054 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1055 for nodeid in cl.list(): |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1056 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1057 value = cl.get(nodeid, propname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1058 except KeyError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1059 raise UsageError(_('%(classname)s has no property ' |
| 6180 | 1060 '"%(propname)s"') % locals()) |
| 1061 print(_('%(nodeid)4s: %(value)s') % locals()) | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1062 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1063 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1064 def do_table(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1065 ''"""Usage: table classname [property[,property]*] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1066 List the instances of a class in tabular form. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1067 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1068 Lists all instances of the given class. If the properties are not |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1069 specified, all properties are displayed. By default, the column |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1070 widths are the width of the largest value. The width may be |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1071 explicitly defined by defining the property as "name:width". |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1072 For example:: |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
1073 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1074 roundup> table priority id,name:10 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1075 Id Name |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1076 1 fatal-bug |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1077 2 bug |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1078 3 usability |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1079 4 feature |
|
1544
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1080 |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1081 Also to make the width of the column the width of the label, |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
1082 leave a trailing : without a width on the property. For example:: |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
1083 |
|
1544
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1084 roundup> table priority id,name: |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1085 Id Name |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1086 1 fata |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1087 2 bug |
|
1544
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1088 3 usab |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1089 4 feat |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1090 |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
1091 will result in a the 4 character wide "Name" column. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1092 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1093 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1094 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1095 classname = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1096 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1097 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1098 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1099 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1100 # figure the property names to display |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1101 if len(args) > 1: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1102 prop_names = args[1].split(',') |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1103 all_props = cl.getprops() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1104 for spec in prop_names: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1105 if ':' in spec: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1106 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1107 propname, width = spec.split(':') |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1108 except (ValueError, TypeError): |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1109 raise UsageError(_('"%(spec)s" not ' |
| 6180 | 1110 'name:width') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1111 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1112 propname = spec |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1113 if propname not in all_props: |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1114 raise UsageError(_('%(classname)s has no property ' |
| 6180 | 1115 '"%(propname)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1116 else: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1117 prop_names = cl.getprops() |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1118 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1119 # now figure column widths |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1120 props = [] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1121 for spec in prop_names: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1122 if ':' in spec: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1123 name, width = spec.split(':') |
| 1546 | 1124 if width == '': |
|
6198
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1125 # spec includes trailing :, use label/name width |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1126 props.append((name, len(name))) |
| 1546 | 1127 else: |
|
6198
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1128 try: |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1129 props.append((name, int(width))) |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1130 except ValueError: |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1131 raise UsageError(_('"%(spec)s" does not have an ' |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1132 'integer width: "%(width)s"') % |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1133 locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1134 else: |
| 6180 | 1135 # this is going to be slow |
| 1136 maxlen = len(spec) | |
| 1137 for nodeid in cl.list(): | |
| 1138 curlen = len(str(cl.get(nodeid, spec))) | |
| 1139 if curlen > maxlen: | |
| 1140 maxlen = curlen | |
|
6198
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
1141 props.append((spec, maxlen)) |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1142 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1143 # now display the heading |
| 6180 | 1144 print(' '.join([name.capitalize().ljust(width) |
| 1145 for name, width in props])) | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1146 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1147 # and the table data |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1148 for nodeid in cl.list(): |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1149 l = [] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1150 for name, width in props: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1151 if name != 'id': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1152 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1153 value = str(cl.get(nodeid, name)) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1154 except KeyError: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1155 # we already checked if the property is valid - a |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1156 # KeyError here means the node just doesn't have a |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1157 # value for it |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1158 value = '' |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1159 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1160 value = str(nodeid) |
| 6180 | 1161 f = '%%-%ds' % width |
| 1162 l.append(f % value[:width]) | |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1163 print(' '.join(l)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1164 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1165 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1166 def do_history(self, args): |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1167 ''"""Usage: history designator [skipquiet] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1168 Show the history entries of a designator. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1169 |
|
4299
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1170 A designator is a classname and a nodeid concatenated, |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1171 eg. bug1, user10, ... |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1172 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1173 Lists the journal entries viewable by the user for the |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1174 node identified by the designator. If skipquiet is the |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1175 second argument, journal entries for quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1176 are not shown. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1177 """ |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1178 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1179 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1180 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1181 try: |
|
902
b0d3d3535998
Bugger it. Here's the current shape of the new security implementation.
Richard Jones <richard@users.sourceforge.net>
parents:
880
diff
changeset
|
1182 classname, nodeid = hyperdb.splitDesignator(args[0]) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
1183 except hyperdb.DesignatorError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1184 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1185 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1186 skipquiet = False |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1187 if len(args) == 2: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1188 if args[1] != 'skipquiet': |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1189 raise UsageError("Second argument is not skipquiet") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1190 skipquiet = True |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5230
diff
changeset
|
1191 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1192 try: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1193 print(self.db.getclass(classname).history(nodeid, |
|
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1194 skipquiet=skipquiet)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1195 except KeyError: |
| 6180 | 1196 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1197 except IndexError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1198 raise UsageError(_('no such %(classname)s node ' |
| 6180 | 1199 '"%(nodeid)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1200 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1201 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1202 def do_commit(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1203 ''"""Usage: commit |
|
2178
e1a481838a32
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2175
diff
changeset
|
1204 Commit changes made to the database during an interactive session. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1205 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1206 The changes made during an interactive session are not |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1207 automatically written to the database - they must be committed |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1208 using this command. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1209 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1210 One-off commands on the command-line are automatically committed if |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1211 they are successful. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1212 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1213 self.db.commit() |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1214 self.db_uncommitted = False |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1215 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1216 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1217 def do_rollback(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1218 ''"""Usage: rollback |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1219 Undo all changes that are pending commit to the database. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1220 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1221 The changes made during an interactive session are not |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1222 automatically written to the database - they must be committed |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1223 manually. This command undoes all those changes, so a commit |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1224 immediately after would make no changes to the database. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1225 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1226 self.db.rollback() |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1227 self.db_uncommitted = False |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1228 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1229 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1230 def do_retire(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1231 ''"""Usage: retire designator[,designator]* |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1232 Retire the node specified by designator. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1233 |
|
4299
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1234 A designator is a classname and a nodeid concatenated, |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1235 eg. bug1, user10, ... |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1236 |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1237 This action indicates that a particular node is not to be retrieved |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1238 by the list or find commands, and its key value may be re-used. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1239 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1240 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1241 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1242 designators = args[0].split(',') |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1243 for designator in designators: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1244 try: |
|
902
b0d3d3535998
Bugger it. Here's the current shape of the new security implementation.
Richard Jones <richard@users.sourceforge.net>
parents:
880
diff
changeset
|
1245 classname, nodeid = hyperdb.splitDesignator(designator) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
1246 except hyperdb.DesignatorError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1247 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1248 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1249 self.db.getclass(classname).retire(nodeid) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1250 except KeyError: |
| 6180 | 1251 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1252 except IndexError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1253 raise UsageError(_('no such %(classname)s node ' |
| 6180 | 1254 '"%(nodeid)s"') % locals()) |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1255 self.db_uncommitted = True |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1256 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1257 |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1258 def do_restore(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1259 ''"""Usage: restore designator[,designator]* |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1260 Restore the retired node specified by designator. |
|
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1261 |
|
4299
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1262 A designator is a classname and a nodeid concatenated, |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1263 eg. bug1, user10, ... |
|
e16a1131ba67
include info on what a designator is in all commands that use them
Richard Jones <richard@users.sourceforge.net>
parents:
4269
diff
changeset
|
1264 |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1265 The given nodes will become available for users again. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1266 """ |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1267 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1268 raise UsageError(_('Not enough arguments supplied')) |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1269 designators = args[0].split(',') |
|
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1270 for designator in designators: |
|
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1271 try: |
|
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1272 classname, nodeid = hyperdb.splitDesignator(designator) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
1273 except hyperdb.DesignatorError as message: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1274 raise UsageError(message) |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1275 try: |
|
6430
ff4ab763f47c
issue2551141 - roundup-admin returns no such class when restoring item with duplicate key
John Rouillard <rouilj@ieee.org>
parents:
6393
diff
changeset
|
1276 dbclass = self.db.getclass(classname) |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1277 except KeyError: |
| 6180 | 1278 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
6430
ff4ab763f47c
issue2551141 - roundup-admin returns no such class when restoring item with duplicate key
John Rouillard <rouilj@ieee.org>
parents:
6393
diff
changeset
|
1279 try: |
|
ff4ab763f47c
issue2551141 - roundup-admin returns no such class when restoring item with duplicate key
John Rouillard <rouilj@ieee.org>
parents:
6393
diff
changeset
|
1280 dbclass.restore(nodeid) |
|
ff4ab763f47c
issue2551141 - roundup-admin returns no such class when restoring item with duplicate key
John Rouillard <rouilj@ieee.org>
parents:
6393
diff
changeset
|
1281 except KeyError as e: |
|
ff4ab763f47c
issue2551141 - roundup-admin returns no such class when restoring item with duplicate key
John Rouillard <rouilj@ieee.org>
parents:
6393
diff
changeset
|
1282 raise UsageError(e.args[0]) |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1283 except IndexError: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1284 raise UsageError(_('no such %(classname)s node ' |
| 6180 | 1285 '" % (nodeid)s"')%locals()) |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1286 self.db_uncommitted = True |
|
1519
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1287 return 0 |
|
6fede2aa6a12
added ability to restore retired nodes
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1496
diff
changeset
|
1288 |
|
3670
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1289 def do_export(self, args, export_files=True): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1290 ''"""Usage: export [[-]class[,class]] export_dir |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1098
diff
changeset
|
1291 Export the database to colon-separated-value files. |
|
3669
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1292 To exclude the files (e.g. for the msg or file class), |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1293 use the exporttables command. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1294 |
|
3669
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1295 Optionally limit the export to just the named classes |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1296 or exclude the named classes, if the 1st argument starts with '-'. |
| 2215 | 1297 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1298 This action exports the current data from the database into |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1098
diff
changeset
|
1299 colon-separated-value files that are placed in the nominated |
| 2215 | 1300 destination directory. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1301 """ |
|
939
c67297b55a34
moving towards full database export
Richard Jones <richard@users.sourceforge.net>
parents:
929
diff
changeset
|
1302 # grab the directory to export to |
|
c67297b55a34
moving towards full database export
Richard Jones <richard@users.sourceforge.net>
parents:
929
diff
changeset
|
1303 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1304 raise UsageError(_('Not enough arguments supplied')) |
|
1767
fdaa0b751355
python2.3 CSV support, also missing thankyou in index.txt :)
Richard Jones <richard@users.sourceforge.net>
parents:
1751
diff
changeset
|
1305 |
|
939
c67297b55a34
moving towards full database export
Richard Jones <richard@users.sourceforge.net>
parents:
929
diff
changeset
|
1306 dir = args[-1] |
|
c67297b55a34
moving towards full database export
Richard Jones <richard@users.sourceforge.net>
parents:
929
diff
changeset
|
1307 |
|
c67297b55a34
moving towards full database export
Richard Jones <richard@users.sourceforge.net>
parents:
929
diff
changeset
|
1308 # get the list of classes to export |
|
c67297b55a34
moving towards full database export
Richard Jones <richard@users.sourceforge.net>
parents:
929
diff
changeset
|
1309 if len(args) == 2: |
|
3669
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1310 if args[0].startswith('-'): |
| 6180 | 1311 classes = [c for c in self.db.classes |
| 1312 if c not in args[0][1:].split(',')] | |
|
3669
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1313 else: |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1314 classes = args[0].split(',') |
|
939
c67297b55a34
moving towards full database export
Richard Jones <richard@users.sourceforge.net>
parents:
929
diff
changeset
|
1315 else: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1316 classes = self.db.classes |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1317 |
|
3179
88dbe6b3d891
merge removal of rcsv
Richard Jones <richard@users.sourceforge.net>
parents:
2998
diff
changeset
|
1318 class colon_separated(csv.excel): |
|
88dbe6b3d891
merge removal of rcsv
Richard Jones <richard@users.sourceforge.net>
parents:
2998
diff
changeset
|
1319 delimiter = ':' |
|
88dbe6b3d891
merge removal of rcsv
Richard Jones <richard@users.sourceforge.net>
parents:
2998
diff
changeset
|
1320 |
|
3284
9ddf9cd8baf5
fix roundup-admin "export" so it creates the target dir if needed
Richard Jones <richard@users.sourceforge.net>
parents:
3214
diff
changeset
|
1321 # make sure target dir exists |
|
9ddf9cd8baf5
fix roundup-admin "export" so it creates the target dir if needed
Richard Jones <richard@users.sourceforge.net>
parents:
3214
diff
changeset
|
1322 if not os.path.exists(dir): |
|
9ddf9cd8baf5
fix roundup-admin "export" so it creates the target dir if needed
Richard Jones <richard@users.sourceforge.net>
parents:
3214
diff
changeset
|
1323 os.makedirs(dir) |
|
9ddf9cd8baf5
fix roundup-admin "export" so it creates the target dir if needed
Richard Jones <richard@users.sourceforge.net>
parents:
3214
diff
changeset
|
1324 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4089
diff
changeset
|
1325 # maximum csv field length exceeding configured size? |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4089
diff
changeset
|
1326 max_len = self.db.config.CSV_FIELD_SIZE |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4089
diff
changeset
|
1327 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1328 # do all the classes specified |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1329 for classname in classes: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1330 cl = self.get_class(classname) |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1331 |
|
3670
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1332 if not export_files and hasattr(cl, 'export_files'): |
| 6180 | 1333 sys.stdout.write('Exporting %s WITHOUT the files\r\n' % |
|
3670
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1334 classname) |
|
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1335 |
|
6487
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1336 with open(os.path.join(dir, classname+'.csv'), 'w') as f: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1337 writer = csv.writer(f, colon_separated) |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1338 |
|
6487
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1339 properties = cl.getprops() |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1340 propnames = cl.export_propnames() |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1341 fields = propnames[:] |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1342 fields.append('is retired') |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1343 writer.writerow(fields) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1344 |
|
6487
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1345 # If a node has a key, sort all nodes by key |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1346 # with retired nodes first. Retired nodes |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1347 # must occur before a non-retired node with |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1348 # the same key. Otherwise you get an |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1349 # IntegrityError: UNIQUE constraint failed: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1350 # _class.__retired__, _<class>._<keyname> |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1351 # on imports to rdbms. |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1352 all_nodes = cl.getnodeids() |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6430
diff
changeset
|
1353 |
|
6487
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1354 classkey = cl.getkey() |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1355 if classkey: # False sorts before True, so negate is_retired |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1356 keysort = lambda i: (cl.get(i, classkey), |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1357 not cl.is_retired(i)) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1358 all_nodes.sort(key=keysort) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1359 # if there is no classkey no need to sort |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6430
diff
changeset
|
1360 |
|
6487
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1361 for nodeid in all_nodes: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1362 if self.verbose: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1363 sys.stdout.write('\rExporting %s - %s' % |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1364 (classname, nodeid)) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1365 sys.stdout.flush() |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1366 node = cl.getnode(nodeid) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1367 exp = cl.export_list(propnames, nodeid) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1368 lensum = sum([len(repr_export(node[p])) for p in propnames]) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1369 # for a safe upper bound of field length we add |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1370 # difference between CSV len and sum of all field lengths |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1371 d = sum([len(x) for x in exp]) - lensum |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1372 if not d > 0: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1373 raise AssertionError("Bad assertion d > 0") |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1374 for p in propnames: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1375 ll = len(repr_export(node[p])) + d |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1376 if ll > max_len: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1377 max_len = ll |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1378 writer.writerow(exp) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1379 if export_files and hasattr(cl, 'export_files'): |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1380 cl.export_files(dir, nodeid) |
|
3670
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1381 |
|
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1382 # export the journals |
|
6487
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1383 with open(os.path.join(dir, classname+'-journals.csv'), 'w') as jf: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1384 if self.verbose: |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1385 sys.stdout.write("\nExporting Journal for %s\n" % classname) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1386 sys.stdout.flush() |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1387 journals = csv.writer(jf, colon_separated) |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1388 for row in cl.export_journals(): |
|
a101541fc494
Handle ResourceWarning in admin.py do_export
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
1389 journals.writerow(row) |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4089
diff
changeset
|
1390 if max_len > self.db.config.CSV_FIELD_SIZE: |
| 6180 | 1391 print("Warning: config csv_field_size should be at least %s" % |
| 1392 max_len, file=sys.stderr) | |
|
3669
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1393 return 0 |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1394 |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1395 def do_exporttables(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1396 ''"""Usage: exporttables [[-]class[,class]] export_dir |
|
3669
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1397 Export the database to colon-separated-value files, excluding the |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1398 files below $TRACKER_HOME/db/files/ (which can be archived separately). |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1399 To include the files, use the export command. |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1400 |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1401 Optionally limit the export to just the named classes |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1402 or exclude the named classes, if the 1st argument starts with '-'. |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1403 |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1404 This action exports the current data from the database into |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1405 colon-separated-value files that are placed in the nominated |
|
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
1406 destination directory. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1407 """ |
|
3670
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1408 return self.do_export(args, export_files=False) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1409 |
|
6208
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1410 def do_import(self, args, import_files=True): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1411 ''"""Usage: import import_dir |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1412 Import a database from the directory containing CSV files, |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1413 two per class to import. |
|
952
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1414 |
| 2215 | 1415 The files used in the import are: |
| 1416 | |
| 1417 <class>.csv | |
| 1418 This must define the same properties as the class (including | |
| 1419 having a "header" line with those property names.) | |
| 1420 <class>-journals.csv | |
| 1421 This defines the journals for the items being imported. | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1422 |
|
952
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1423 The imported nodes will have the same nodeid as defined in the |
|
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1424 import file, thus replacing any existing content. |
|
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1425 |
|
1103
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1098
diff
changeset
|
1426 The new nodes are added to the existing database - if you want to |
|
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1098
diff
changeset
|
1427 create a new database using the imported data, then create a new |
|
db787cef1385
handled some XXXs
Richard Jones <richard@users.sourceforge.net>
parents:
1098
diff
changeset
|
1428 database (or, tediously, retire all the old data.) |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1429 """ |
|
952
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1430 if len(args) < 1: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1431 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1432 |
| 6180 | 1433 if hasattr(csv, 'field_size_limit'): |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4089
diff
changeset
|
1434 csv.field_size_limit(self.db.config.CSV_FIELD_SIZE) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4089
diff
changeset
|
1435 |
| 2496 | 1436 # directory to import from |
| 1437 dir = args[0] | |
| 1438 | |
|
3179
88dbe6b3d891
merge removal of rcsv
Richard Jones <richard@users.sourceforge.net>
parents:
2998
diff
changeset
|
1439 class colon_separated(csv.excel): |
|
88dbe6b3d891
merge removal of rcsv
Richard Jones <richard@users.sourceforge.net>
parents:
2998
diff
changeset
|
1440 delimiter = ':' |
|
88dbe6b3d891
merge removal of rcsv
Richard Jones <richard@users.sourceforge.net>
parents:
2998
diff
changeset
|
1441 |
| 2496 | 1442 # import all the files |
| 1443 for file in os.listdir(dir): | |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1444 classname, ext = os.path.splitext(file) |
|
1530
a1e0d17ca12c
only look for csv files on import
Richard Jones <richard@users.sourceforge.net>
parents:
1519
diff
changeset
|
1445 # we only care about CSV files |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1446 if ext != '.csv' or classname.endswith('-journals'): |
|
1530
a1e0d17ca12c
only look for csv files on import
Richard Jones <richard@users.sourceforge.net>
parents:
1519
diff
changeset
|
1447 continue |
|
a1e0d17ca12c
only look for csv files on import
Richard Jones <richard@users.sourceforge.net>
parents:
1519
diff
changeset
|
1448 |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1449 cl = self.get_class(classname) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1450 |
|
952
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1451 # ensure that the properties and the CSV file headings match |
|
3287
7a7f7d3a038d
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3284
diff
changeset
|
1452 f = open(os.path.join(dir, file), 'r') |
|
3214
29bde1f0d364
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3197
diff
changeset
|
1453 reader = csv.reader(f, colon_separated) |
|
1767
fdaa0b751355
python2.3 CSV support, also missing thankyou in index.txt :)
Richard Jones <richard@users.sourceforge.net>
parents:
1751
diff
changeset
|
1454 file_props = None |
|
fdaa0b751355
python2.3 CSV support, also missing thankyou in index.txt :)
Richard Jones <richard@users.sourceforge.net>
parents:
1751
diff
changeset
|
1455 maxid = 1 |
|
952
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1456 # loop through the file and create a node for each entry |
|
3544
5cd1c83dea50
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
3433
diff
changeset
|
1457 for n, r in enumerate(reader): |
|
1767
fdaa0b751355
python2.3 CSV support, also missing thankyou in index.txt :)
Richard Jones <richard@users.sourceforge.net>
parents:
1751
diff
changeset
|
1458 if file_props is None: |
|
fdaa0b751355
python2.3 CSV support, also missing thankyou in index.txt :)
Richard Jones <richard@users.sourceforge.net>
parents:
1751
diff
changeset
|
1459 file_props = r |
|
fdaa0b751355
python2.3 CSV support, also missing thankyou in index.txt :)
Richard Jones <richard@users.sourceforge.net>
parents:
1751
diff
changeset
|
1460 continue |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1461 |
|
3641
ba06fb4030d0
Spacing and CHANGES.txt fixed.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3640
diff
changeset
|
1462 if self.verbose: |
| 6180 | 1463 sys.stdout.write('\rImporting %s - %s' % (classname, n)) |
|
3637
31c79e3aa600
Fix verbose option for roundup-admin (for import and export)
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3602
diff
changeset
|
1464 sys.stdout.flush() |
|
3544
5cd1c83dea50
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
3433
diff
changeset
|
1465 |
|
952
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1466 # do the import and figure the current highest nodeid |
|
3670
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1467 nodeid = cl.import_list(file_props, r) |
|
6208
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1468 if hasattr(cl, 'import_files') and import_files: |
| 2496 | 1469 cl.import_files(dir, nodeid) |
|
3670
64f0b85ea603
fix importing into anydbm backend [SF#1512939]
Richard Jones <richard@users.sourceforge.net>
parents:
3669
diff
changeset
|
1470 maxid = max(maxid, int(nodeid)) |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1471 |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1472 # (print to sys.stdout here to allow tests to squash it .. ugh) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1473 print(file=sys.stdout) |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1474 |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1475 f.close() |
|
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1476 |
|
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1477 # import the journals |
|
3317
032ff189ba33
use binary mode for csv export [SF#1195742];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3314
diff
changeset
|
1478 f = open(os.path.join(args[0], classname + '-journals.csv'), 'r') |
|
3214
29bde1f0d364
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3197
diff
changeset
|
1479 reader = csv.reader(f, colon_separated) |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1480 cl.import_journals(reader) |
|
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1481 f.close() |
|
952
f615fbd02c18
full database export and import is done
Richard Jones <richard@users.sourceforge.net>
parents:
939
diff
changeset
|
1482 |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1483 # (print to sys.stdout here to allow tests to squash it .. ugh) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1484 print('setting', classname, maxid+1, file=sys.stdout) |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1485 |
|
1767
fdaa0b751355
python2.3 CSV support, also missing thankyou in index.txt :)
Richard Jones <richard@users.sourceforge.net>
parents:
1751
diff
changeset
|
1486 # set the id counter |
|
1194
d76b3f8d7bc4
make import set the id counter to maxid+1
Richard Jones <richard@users.sourceforge.net>
parents:
1165
diff
changeset
|
1487 self.db.setid(classname, str(maxid+1)) |
|
2175
723098a10677
Export and import now include journals (incompatible with export < 0.7)
Richard Jones <richard@users.sourceforge.net>
parents:
2093
diff
changeset
|
1488 |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1489 self.db_uncommitted = True |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1490 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1491 |
|
6208
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1492 def do_importtables(self, args): |
|
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1493 ''"""Usage: importtables export_dir |
|
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1494 |
|
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1495 This imports the database tables exported using exporttables. |
|
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1496 """ |
|
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1497 return self.do_import(args, import_files=False) |
|
74784dd531c8
Add importtables roundup-admin command.
John Rouillard <rouilj@ieee.org>
parents:
6198
diff
changeset
|
1498 |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1499 def do_pack(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1500 ''"""Usage: pack period | date |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1501 |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1502 Remove journal entries older than a period of time specified or |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1503 before a certain date. |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1504 |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1505 A period is specified using the suffixes "y", "m", and "d". The |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1506 suffix "w" (for "week") means 7 days. |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1507 |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1508 "3y" means three years |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1509 "2y 1m" means two years and one month |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1510 "1m 25d" means one month and 25 days |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1511 "2w 3d" means two weeks and three days |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1512 |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1513 Date format is "YYYY-MM-DD" eg: |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1514 2001-01-01 |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1515 |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1516 """ |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1517 if len(args) != 1: |
|
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1518 raise UsageError(_('Not enough arguments supplied')) |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
1519 |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1520 # are we dealing with a period or a date |
|
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1521 value = args[0] |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1522 date_re = re.compile(r""" |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1523 (?P<date>\d\d\d\d-\d\d?-\d\d?)? # yyyy-mm-dd |
|
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1524 (?P<period>(\d+y\s*)?(\d+m\s*)?(\d+d\s*)?)? |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1525 """, re.VERBOSE) |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1526 m = date_re.match(value) |
|
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1527 if not m: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1528 raise ValueError(_('Invalid format')) |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1529 m = m.groupdict() |
|
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1530 if m['period']: |
| 6180 | 1531 pack_before = date.Date(". - %s" % value) |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1532 elif m['date']: |
|
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1533 pack_before = date.Date(value) |
|
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1534 self.db.pack(pack_before) |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1535 self.db_uncommitted = True |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1536 return 0 |
|
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
1537 |
|
2650
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1538 def do_reindex(self, args, desre=re.compile('([A-Za-z]+)([0-9]+)')): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1539 ''"""Usage: reindex [classname|designator]* |
| 1098 | 1540 Re-generate a tracker's search indexes. |
|
826
6d7a45c8464a
Added reindex command to roundup-admin.
Richard Jones <richard@users.sourceforge.net>
parents:
773
diff
changeset
|
1541 |
|
2787
dea26f113e6f
do_reindex help string reformatted to reuse existing translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2785
diff
changeset
|
1542 This will re-generate the search indexes for a tracker. |
|
dea26f113e6f
do_reindex help string reformatted to reuse existing translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2785
diff
changeset
|
1543 This will typically happen automatically. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1544 """ |
|
2650
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1545 if args: |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1546 for arg in args: |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1547 m = desre.match(arg) |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1548 if m: |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1549 cl = self.get_class(m.group(1)) |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1550 try: |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1551 cl.index(m.group(2)) |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1552 except IndexError: |
| 6180 | 1553 raise UsageError(_('no such item "%(designator)s"') % { |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1554 'designator': arg}) |
|
2650
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1555 else: |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1556 cl = self.get_class(arg) |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1557 self.db.reindex(arg) |
|
d68a444fcce3
roundup-admin reindex command may now work on single items or classes
Richard Jones <richard@users.sourceforge.net>
parents:
2633
diff
changeset
|
1558 else: |
|
3544
5cd1c83dea50
Features and fixes.
Richard Jones <richard@users.sourceforge.net>
parents:
3433
diff
changeset
|
1559 self.db.reindex(show_progress=True) |
|
826
6d7a45c8464a
Added reindex command to roundup-admin.
Richard Jones <richard@users.sourceforge.net>
parents:
773
diff
changeset
|
1560 return 0 |
|
6d7a45c8464a
Added reindex command to roundup-admin.
Richard Jones <richard@users.sourceforge.net>
parents:
773
diff
changeset
|
1561 |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1562 def do_security(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1563 ''"""Usage: security [Role name] |
|
6187
cc66cf905147
Removed redundant code; fix help text for do_security
John Rouillard <rouilj@ieee.org>
parents:
6180
diff
changeset
|
1564 |
|
cc66cf905147
Removed redundant code; fix help text for do_security
John Rouillard <rouilj@ieee.org>
parents:
6180
diff
changeset
|
1565 Display the Permissions available to one or all Roles. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1566 """ |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1567 if len(args) == 1: |
|
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1568 role = args[0] |
|
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1569 try: |
|
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1570 roles = [(args[0], self.db.security.role[args[0]])] |
|
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1571 except KeyError: |
| 6180 | 1572 sys.stdout.write(_('No such Role "%(role)s"\n') % locals()) |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1573 return 1 |
|
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1574 else: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1575 roles = list(self.db.security.role.items()) |
|
929
f3e978888cb8
include info about new user roles
Richard Jones <richard@users.sourceforge.net>
parents:
928
diff
changeset
|
1576 role = self.db.config.NEW_WEB_USER_ROLES |
|
f3e978888cb8
include info about new user roles
Richard Jones <richard@users.sourceforge.net>
parents:
928
diff
changeset
|
1577 if ',' in role: |
| 6180 | 1578 sys.stdout.write(_('New Web users get the Roles "%(role)s"\n') |
| 1579 % locals()) | |
|
929
f3e978888cb8
include info about new user roles
Richard Jones <richard@users.sourceforge.net>
parents:
928
diff
changeset
|
1580 else: |
| 6180 | 1581 sys.stdout.write(_('New Web users get the Role "%(role)s"\n') |
| 1582 % locals()) | |
|
929
f3e978888cb8
include info about new user roles
Richard Jones <richard@users.sourceforge.net>
parents:
928
diff
changeset
|
1583 role = self.db.config.NEW_EMAIL_USER_ROLES |
|
f3e978888cb8
include info about new user roles
Richard Jones <richard@users.sourceforge.net>
parents:
928
diff
changeset
|
1584 if ',' in role: |
| 6180 | 1585 sys.stdout.write(_('New Email users get the Roles "%(role)s"\n') % locals()) |
|
929
f3e978888cb8
include info about new user roles
Richard Jones <richard@users.sourceforge.net>
parents:
928
diff
changeset
|
1586 else: |
| 6180 | 1587 sys.stdout.write(_('New Email users get the Role "%(role)s"\n') % locals()) |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1588 roles.sort() |
| 6180 | 1589 for _rolename, role in roles: |
| 1590 sys.stdout.write(_('Role "%(name)s":\n') % role.__dict__) | |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1591 for permission in role.permissions: |
|
3359
cf9149fd3c6d
have 'roundup-admin security' display property restrictions [SF#1222135]
Richard Jones <richard@users.sourceforge.net>
parents:
3317
diff
changeset
|
1592 d = permission.__dict__ |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1593 if permission.klass: |
|
3359
cf9149fd3c6d
have 'roundup-admin security' display property restrictions [SF#1222135]
Richard Jones <richard@users.sourceforge.net>
parents:
3317
diff
changeset
|
1594 if permission.properties: |
| 6180 | 1595 sys.stdout.write(_(' %(description)s (%(name)s for "%(klass)s"' + |
| 1596 ': %(properties)s only)\n') % d) | |
|
5897
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1597 # verify that properties exist; report bad props |
| 6180 | 1598 bad_props = [] |
|
5897
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1599 cl = self.db.getclass(permission.klass) |
|
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1600 class_props = cl.getprops(protected=True) |
|
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1601 for p in permission.properties: |
|
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1602 if p in class_props: |
|
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1603 continue |
|
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1604 else: |
|
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1605 bad_props.append(p) |
|
d0aebd4aec72
Provide a method for identifying invalid properties in permissions
John Rouillard <rouilj@ieee.org>
parents:
5762
diff
changeset
|
1606 if bad_props: |
| 6180 | 1607 sys.stdout.write(_('\n **Invalid properties for %(class)s: %(props)s\n\n') % {"class": permission.klass, "props": bad_props}) |
|
6393
51a1a9b0f567
- issue2551062: AddPermission doesn't validate property names.
John Rouillard <rouilj@ieee.org>
parents:
6250
diff
changeset
|
1608 return 1 |
|
3359
cf9149fd3c6d
have 'roundup-admin security' display property restrictions [SF#1222135]
Richard Jones <richard@users.sourceforge.net>
parents:
3317
diff
changeset
|
1609 else: |
| 6180 | 1610 sys.stdout.write(_(' %(description)s (%(name)s for ' |
| 1611 '"%(klass)s" only)\n') % d) | |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1612 else: |
| 6180 | 1613 sys.stdout.write(_(' %(description)s (%(name)s)\n') % d) |
|
928
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1614 return 0 |
|
23c9d4f86380
Added the web access and email access permissions..
Richard Jones <richard@users.sourceforge.net>
parents:
902
diff
changeset
|
1615 |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1616 def do_migrate(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1617 ''"""Usage: migrate |
| 6191 | 1618 |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1619 Update a tracker's database to be compatible with the Roundup |
|
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1620 codebase. |
|
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1621 |
| 6191 | 1622 You should run the "migrate" command for your tracker once |
| 1623 you've installed the latest codebase. | |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1624 |
| 6191 | 1625 Do this before you use the web, command-line or mail interface |
| 1626 and before any users access the tracker. | |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1627 |
| 6191 | 1628 This command will respond with either "Tracker updated" (if |
| 1629 you've not previously run it on an RDBMS backend) or "No | |
| 1630 migration action required" (if you have run it, or have used | |
| 1631 another interface to the tracker, or possibly because you are | |
| 1632 using anydbm). | |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1633 |
| 6191 | 1634 It's safe to run this even if it's not required, so just get |
| 1635 into the habit. | |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1636 """ |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1637 if getattr(self.db, 'db_version_updated'): |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1638 print(_('Tracker updated')) |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1639 self.db_uncommitted = True |
|
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1640 else: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1641 print(_('No migration action required')) |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1642 return 0 |
|
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3923
diff
changeset
|
1643 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1644 def run_command(self, args): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1645 """Run a single command |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1646 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1647 command = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1648 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1649 # handle help now |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1650 if command == 'help': |
| 6180 | 1651 if len(args) > 1: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1652 self.do_help(args[1:]) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1653 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1654 self.do_help(['help']) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1655 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1656 if command == 'morehelp': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1657 self.do_help(['help']) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1658 self.help_commands() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1659 self.help_all() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1660 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1661 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1662 # figure what the command is |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1663 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1664 functions = self.commands.get(command) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1665 except KeyError: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1666 # not a valid command |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1667 print(_('Unknown command "%(command)s" ("help commands" for a ' |
| 6180 | 1668 'list)') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1669 return 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1670 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1671 # check for multiple matches |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1672 if len(functions) > 1: |
| 6180 | 1673 print(_('Multiple commands match "%(command)s": %(list)s') % \ |
| 1674 {'command': command, | |
| 1675 'list': ', '.join([i[0] for i in functions])}) | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1676 return 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1677 command, function = functions[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1678 |
| 1098 | 1679 # make sure we have a tracker_home |
| 1680 while not self.tracker_home: | |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1681 if not self.force: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1682 self.tracker_home = my_input(_('Enter tracker home: ')).strip() |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1683 else: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1684 self.tracker_home = os.curdir |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1685 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
1686 # before we open the db, we may be doing an install or init |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1687 if command == 'initialise': |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
1688 try: |
| 1098 | 1689 return self.do_initialise(self.tracker_home, args) |
| 6180 | 1690 except UsageError as message: # noqa: F841 |
| 1691 print(_('Error: %(message)s') % locals()) | |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
1692 return 1 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
1693 elif command == 'install': |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
1694 try: |
| 1098 | 1695 return self.do_install(self.tracker_home, args) |
| 6180 | 1696 except UsageError as message: # noqa: F841 |
| 1697 print(_('Error: %(message)s') % locals()) | |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
1698 return 1 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1699 |
| 1098 | 1700 # get the tracker |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1701 try: |
| 1098 | 1702 tracker = roundup.instance.open(self.tracker_home) |
| 6180 | 1703 except ValueError as message: # noqa: F841 |
| 1098 | 1704 self.tracker_home = '' |
| 6180 | 1705 print(_("Error: Couldn't open tracker: %(message)s") % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1706 return 1 |
| 6180 | 1707 except NoConfigError as message: # noqa: F841 |
|
5230
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
1708 self.tracker_home = '' |
| 6180 | 1709 print(_("Error: Couldn't open tracker: %(message)s") % locals()) |
|
5230
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
1710 return 1 |
|
6557
8687c096a945
Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
1711 except ParsingOptionError as message: |
|
8687c096a945
Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
1712 print("%(message)s" % locals()) |
|
8687c096a945
Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
1713 return 1 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1714 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1715 # only open the database once! |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1716 if not self.db: |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1717 self.db = tracker.open(self.name) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1718 |
| 4781 | 1719 self.db.tx_Source = 'cli' |
| 1720 | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1721 # do the command |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1722 ret = 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1723 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1724 ret = function(args[1:]) |
| 6180 | 1725 except UsageError as message: # noqa: F841 |
| 1726 print(_('Error: %(message)s') % locals()) | |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1727 print() |
|
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1728 print(function.__doc__) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1729 ret = 1 |
| 6180 | 1730 except Exception: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1731 import traceback |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1732 traceback.print_exc() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1733 ret = 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1734 return ret |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1735 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1736 def interactive(self): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1737 """Run in an interactive mode |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1738 """ |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1739 print(_('Roundup %s ready for input.\nType "help" for help.' |
| 6180 | 1740 % roundup_version)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1741 try: |
| 6180 | 1742 import readline # noqa: F401 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1743 except ImportError: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1744 print(_('Note: command history and editing not available')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1745 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1746 while 1: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1747 try: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1748 command = my_input(_('roundup> ')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1749 except EOFError: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1750 print(_('exit...')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1751 break |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1752 if not command: continue |
|
5245
bc16d91b7a50
Fix token_split() so its one error throws ValueError w/out extra arg.
Eric S. Raymond <esr@thyrsus.com>
parents:
5232
diff
changeset
|
1753 try: |
|
bc16d91b7a50
Fix token_split() so its one error throws ValueError w/out extra arg.
Eric S. Raymond <esr@thyrsus.com>
parents:
5232
diff
changeset
|
1754 args = token.token_split(command) |
|
bc16d91b7a50
Fix token_split() so its one error throws ValueError w/out extra arg.
Eric S. Raymond <esr@thyrsus.com>
parents:
5232
diff
changeset
|
1755 except ValueError: |
| 6180 | 1756 continue # Ignore invalid quoted token |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1757 if not args: continue |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1758 if args[0] in ('quit', 'exit'): break |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1759 self.run_command(args) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1760 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1761 # exit.. check for transactions |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
1762 if self.db and self.db_uncommitted: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1763 commit = my_input(_('There are unsaved changes. Commit them (y/N)? ')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1764 if commit and commit[0].lower() == 'y': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1765 self.db.commit() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1766 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1767 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1768 def main(self): |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1769 try: |
|
3637
31c79e3aa600
Fix verbose option for roundup-admin (for import and export)
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3602
diff
changeset
|
1770 opts, args = getopt.getopt(sys.argv[1:], 'i:u:hcdsS:vV') |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
1771 except getopt.GetoptError as e: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1772 self.usage(str(e)) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1773 return 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1774 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1775 # handle command-line args |
| 1098 | 1776 self.tracker_home = os.environ.get('TRACKER_HOME', '') |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1777 self.name = 'admin' |
|
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1778 self.password = '' # unused |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
1779 if 'ROUNDUP_LOGIN' in os.environ: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1780 l = os.environ['ROUNDUP_LOGIN'].split(':') |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1781 self.name = l[0] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1782 if len(l) > 1: |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1783 self.password = l[1] |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1784 self.separator = None |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1785 self.print_designator = 0 |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1786 self.verbose = 0 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1787 for opt, arg in opts: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1788 if opt == '-h': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1789 self.usage() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1790 return 0 |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1791 elif opt == '-v': |
| 6180 | 1792 print('%s (python %s)' % (roundup_version, |
| 1793 sys.version.split()[0])) | |
|
2186
3f89c8ffe4f1
version info in scripts
Richard Jones <richard@users.sourceforge.net>
parents:
2184
diff
changeset
|
1794 return 0 |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1795 elif opt == '-V': |
|
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1796 self.verbose = 1 |
|
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1797 elif opt == '-i': |
| 1098 | 1798 self.tracker_home = arg |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1799 elif opt == '-c': |
| 6180 | 1800 if self.separator is not None: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1801 self.usage('Only one of -c, -S and -s may be specified') |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1802 return 1 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1803 self.separator = ',' |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1804 elif opt == '-S': |
| 6180 | 1805 if self.separator is not None: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1806 self.usage('Only one of -c, -S and -s may be specified') |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1807 return 1 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1808 self.separator = arg |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1809 elif opt == '-s': |
| 6180 | 1810 if self.separator is not None: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1811 self.usage('Only one of -c, -S and -s may be specified') |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1812 return 1 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1813 self.separator = ' ' |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
1814 elif opt == '-d': |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1815 self.print_designator = 1 |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1816 elif opt == '-u': |
|
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1817 l = arg.split(':') |
|
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1818 self.name = l[0] |
|
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1819 if len(l) > 1: |
|
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
1820 self.password = l[1] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1821 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1822 # if no command - go interactive |
|
1133
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1823 # wrap in a try/finally so we always close off the db |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1824 ret = 0 |
|
1133
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1825 try: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1826 if not args: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1827 self.interactive() |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1828 else: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1829 ret = self.run_command(args) |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1830 if self.db: self.db.commit() |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1831 return ret |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1832 finally: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1833 if self.db: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
1834 self.db.close() |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1835 |
| 6180 | 1836 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1837 if __name__ == '__main__': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1838 tool = AdminTool() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1839 sys.exit(tool.main()) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1840 |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
1841 # vim: set filetype=python sts=4 sw=4 et si : |
