Mercurial > p > roundup > code
annotate roundup/admin.py @ 8408:e882a5d52ae5
refactor: move RateLimitExceeded to roundup.cgi.exceptions
RateLimitExceeded is an HTTP exception that raises code 429. Move it
to roundup.cgi.exceptions where all the other exceptions that result
in http status codes are located. Also make it inherit from
HTTPException since it is one.
Also add docstrings for all HTTP exceptions and order HTTPExceptions
by status code.
BREAKING CHANGE: if somebody is importing RateLimitExceeded they will
need to change their import. I consider it unlikely anybody is using
RateLimitExceeded. Detectors and extensions are unlikely to raise
RateLimitExceeded. So I am leaving it out of the upgrading doc. Just
doc in change log.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 10 Aug 2025 21:27:06 -0400 |
| parents | e5d07fac0249 |
| children | 1a93dc58f975 |
| rev | line source |
|---|---|
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
8296
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
2 # -*- coding: utf-8 -*- |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # 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
|
5 # 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
|
6 # 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
|
7 # disclaimer are retained in their original form. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 # 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
|
10 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 # 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
|
12 # POSSIBILITY OF SUCH DAMAGE. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 # |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 # 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
|
16 # 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
|
17 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
19 # |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
20 |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
21 """Administration commands for maintaining Roundup trackers. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
22 """ |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
23 from __future__ import print_function |
|
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
24 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
25 __docformat__ = 'restructuredtext' |
| 6959 | 26 import csv |
| 27 import getopt | |
| 28 import getpass | |
| 29 import operator | |
| 30 import os | |
| 31 import re | |
| 32 import shutil | |
| 33 import sys | |
|
3197
6d0b5937ee0d
fix: module csv is in standard library, not in roundup package;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3179
diff
changeset
|
34 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
35 import roundup.instance |
|
773
6e6c63a57df9
[SF#569415] {version]]
Richard Jones <richard@users.sourceforge.net>
parents:
763
diff
changeset
|
36 from roundup import __version__ as roundup_version |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
37 from roundup import date, hyperdb, init, password, token_r |
|
8091
586f76eb33e8
fix: keep python2 working a little longer.
John Rouillard <rouilj@ieee.org>
parents:
8088
diff
changeset
|
38 from roundup.anypy import scandir_ |
|
5401
4cf48ff01e04
Python 3 preparation: replace raw_input uses.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5250
diff
changeset
|
39 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
|
40 from roundup.anypy.strings import repr_export |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
41 from roundup.configuration import ( |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
42 CoreConfig, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
43 NoConfigError, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
44 Option, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
45 OptionUnsetError, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
46 OptionValueError, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
47 ParsingOptionError, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
48 UserConfig, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
49 ) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
50 from roundup.exceptions import UsageError |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
51 from roundup.i18n import _, get_translation |
|
7847
d523d5c648e9
feat: add Progress output for admin export/exporttables
John Rouillard <rouilj@ieee.org>
parents:
7832
diff
changeset
|
52 from roundup import support |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
53 |
|
5455
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
54 try: |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
55 from UserDict import UserDict |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
56 except ImportError: |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
57 from collections import UserDict |
|
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
58 |
| 6180 | 59 |
|
5455
118f5ffd194e
import UserDict from collections or UserDict
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
60 class CommandDict(UserDict): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
61 """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
|
62 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 Original code submitted by Engelbert Gruber. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
64 """ |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
65 _marker = ('CommandDictMarker') |
| 6180 | 66 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 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
|
68 if key in self.data: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
69 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
|
70 keylist = sorted(self.data) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
71 |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
72 matching_keys = [(ki, self.data[ki]) for ki in keylist |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
73 if ki.startswith(key)] |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
74 |
| 6585 | 75 if not matching_keys 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
|
76 raise KeyError(key) |
| 6585 | 77 # FIXME: what happens if default is not self._marker but |
| 78 # there are no matching keys? Should (default, self.data[default]) | |
| 79 # be returned??? | |
| 80 return matching_keys | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 |
| 6180 | 82 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 class AdminTool: |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
84 """ A collection of methods used in maintaining Roundup trackers. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
85 |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
86 Typically these methods are accessed through the roundup-admin |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
87 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
|
88 loop for the roundup-admin script. |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
89 |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
90 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
|
91 given in the method docstring. |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
92 |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
93 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
|
94 """ |
|
7182
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
95 |
|
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
96 # Make my_input a property to allow overriding in testing. |
|
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
97 # my_input is imported in other places, so just set it from |
|
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
98 # the imported value rather than moving def here. |
|
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
99 my_input = my_input |
|
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
100 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
101 def __init__(self): |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 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
|
103 for k in AdminTool.__dict__: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 if k[:3] == 'do_': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
105 self.commands[k[3:]] = getattr(self, k) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
106 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
|
107 for k in AdminTool.__dict__: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
108 if k[:5] == 'help_': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
109 self.help[k[5:]] = getattr(self, k) |
|
7253
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
110 self.tracker = None |
| 1098 | 111 self.tracker_home = '' |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 self.db = None |
|
3889
f7766d5ba962
fix [SF#297014]: roundup-admin interactive tracks uncommitted state
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3803
diff
changeset
|
113 self.db_uncommitted = False |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
114 self._default_savepoint_setting = 10000 |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
115 self.force = None |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
116 self.settings = { |
|
7549
73dfa9df9fb0
issue685275 - show retired/unretired items in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7547
diff
changeset
|
117 'display_header': False, |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
118 'display_protected': False, |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
119 'indexer_backend': "as set in config.ini", |
|
7802
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
120 'history_features': 0, |
|
7795
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
121 'history_length': -1, |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
122 '_reopen_tracker': False, |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
123 'savepoint_limit': self._default_savepoint_setting, |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
124 'show_retired': "no", |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
125 '_retired_val': False, |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
126 'verbose': False, |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
127 '_inttest': 3, |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
128 '_floattest': 3.5, |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
129 } |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
130 self.settings_help = { |
|
7549
73dfa9df9fb0
issue685275 - show retired/unretired items in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7547
diff
changeset
|
131 'display_header': |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
132 _("Have 'display designator[,designator*]' show header inside\n" |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
133 " []'s before items. Includes retired/active status.\n"), |
|
7549
73dfa9df9fb0
issue685275 - show retired/unretired items in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7547
diff
changeset
|
134 |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
135 'display_protected': |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
136 _("Have 'display designator' and 'specification class' show\n" |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
137 " protected fields: creator, id etc.\n"), |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
138 |
|
7802
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
139 'history_features': |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
140 _("Controls history options. It is a bitstring where setting\n" |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
141 " the bit disables the feature. A value of 0 (default)\n" |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
142 " enables all features. Value 1 disables loading of\n" |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
143 " history. Value 2 disables saving history. Value 4\n" |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
144 " disables loading init file. Since it is a bitstring a\n" |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
145 " value of 6 disables both loading init file and saving\n" |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
146 " history.\n"), |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
147 |
|
7796
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
148 'history_length': |
|
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
149 _("Set the number of lines of history to keep for this session.\n" |
|
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
150 " -1 is infinite.\n"), |
|
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
151 |
| 7300 | 152 'indexer_backend': |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
153 _("Set indexer to use when running 'reindex' NYI\n"), |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
154 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
155 '_reopen_tracker': |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
156 _("Force reopening of tracker when running each command.\n"), |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
157 |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
158 'savepoint_limit': |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
159 _("set the number of rows imported before a database commit is\n" |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
160 " done. Used only for imports on PostgreSQL.\n"), |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
161 'show_retired': _("Show retired items in table, list etc. " |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
162 "One of 'no', 'only', 'both'\n"), |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
163 '_retired_val': _("internal mapping for show_retired.\n"), |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
164 'verbose': _("Enable verbose output: tracing, descriptions...\n"), |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
165 |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
166 '_inttest': "Integer valued setting. For testing only.\n", |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
167 '_floattest': "Float valued setting. For testing only.\n", |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
168 } |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
169 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 def get_class(self, classname): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
171 """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
|
172 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
173 try: |
|
489
5db2dad23f09
[SF#500140] AdminTool.get_class() returns nothing
Richard Jones <richard@users.sourceforge.net>
parents:
484
diff
changeset
|
174 return self.db.getclass(classname) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
175 except KeyError: |
| 6180 | 176 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
177 |
|
649
29f7e41ee437
Ran it through pychecker, made fixes
Richard Jones <richard@users.sourceforge.net>
parents:
626
diff
changeset
|
178 def props_from_args(self, args): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
179 """ 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
|
180 |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
181 The args list is specified as ``prop=value prop=value ...``. |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
182 A missing value is recorded as None. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
183 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
184 props = {} |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
185 for arg in args: |
| 6585 | 186 key_val = arg.split('=', 1) |
|
6187
cc66cf905147
Removed redundant code; fix help text for do_security
John Rouillard <rouilj@ieee.org>
parents:
6180
diff
changeset
|
187 # if = not in string, will return one element |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
188 if len(key_val) != 2: |
| 6180 | 189 raise UsageError(_('argument "%(arg)s" not propname=value') % |
| 190 locals()) | |
| 6585 | 191 key, value = key_val |
|
1108
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
192 if value: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
193 props[key] = value |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
194 else: |
|
b0de30171e57
implemented set for all items in a class, and unset
Richard Jones <richard@users.sourceforge.net>
parents:
1103
diff
changeset
|
195 props[key] = None |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
196 return props |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
197 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
198 def usage(self, message=''): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
199 """ Display a simple usage message. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
200 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
201 if message: |
| 6585 | 202 message = _('Problem: %(message)s\n\n') % locals() |
| 6180 | 203 sys.stdout.write(_("""%(message)sUsage: roundup-admin [options] [<command> <arguments>] |
| 1098 | 204 |
| 205 Options: | |
| 206 -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
|
207 -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
|
208 -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
|
209 -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
|
210 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
|
211 -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
|
212 -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
|
213 Same as '-S " "'. |
|
7546
534f8bdb8f94
Add -P pragma=value command line option to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7545
diff
changeset
|
214 -P pragma=value -- Set a pragma on command line rather than interactively. |
|
534f8bdb8f94
Add -P pragma=value command line option to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7545
diff
changeset
|
215 Can be used multiple times. |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
216 -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
|
217 -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
|
218 |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
219 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
|
220 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
221 Help: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
222 roundup-admin -h |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
223 roundup-admin help -- this help |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
224 roundup-admin help <command> -- command-specific help |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
225 roundup-admin help all -- all available help |
| 6180 | 226 """) % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
227 self.help_commands() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
228 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
229 def help_commands(self): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
230 """List the commands available with their help summary. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
231 """ |
| 6180 | 232 sys.stdout.write(_('Commands: ')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
233 commands = [''] |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
234 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
|
235 h = _(command.__doc__).split('\n')[0] |
|
8296
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
236 # ascii colon and space, U+003A ':' as ascii repr (for |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
237 # Chinese locales), 'fallback' |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
238 for seq in [': ', '\uff1a', 'fallback']: |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
239 if seq == 'fallback': |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
240 # command hasn't been printed yet so ... |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
241 commands.append(' ' + h.lstrip()) |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
242 break |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
243 if seq in h: |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
244 commands.append(' ' + h.split(seq, 1)[1].lstrip()) |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
245 break |
|
4d3b371ed543
fix: issue1895197 - translated help texts in admin.py not displayed correctly.
John Rouillard <rouilj@ieee.org>
parents:
8240
diff
changeset
|
246 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
247 commands.sort() |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
248 commands.append(_( |
|
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
249 """Commands may be abbreviated as long as the abbreviation |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
250 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
|
251 sys.stdout.write('\n'.join(commands) + '\n\n') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
252 |
| 6959 | 253 indent_re = re.compile(r'^(\s+)\S+') |
| 254 | |
| 255 def help_commands_html(self, indent_re=indent_re): | |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
256 """ Produce an HTML command list. |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
257 """ |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
258 commands = sorted(iter(self.commands.values()), |
| 6180 | 259 key=operator.attrgetter('__name__')) |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
260 print("<table>") |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1230
diff
changeset
|
261 for command in commands: |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
262 h = _(command.__doc__).split('\n') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
263 name = command.__name__[3:] |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
264 # first line is "<name> <params and stuff> |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
265 usage = h[0][len(name) + 1:].replace('<','<').replace('>','>')[7:] |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
266 print(""" |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
267 <tr><td valign=top><strong>%(name)s</strong></td> |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
268 <td><p><tt>%(usage)s</tt></p> |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
269 """ % locals()) |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
270 indent = indent_re.match(h[1]) |
| 6959 | 271 if indent: indent = len(indent.group(1)) # noqa: E701 |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
272 lines_to_process = len(h[1:]) |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
273 print('<p>') |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
274 for lineno, line in enumerate(h[1:]): |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
275 line = line.replace('<','<').replace('>','>') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
276 if indent: |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
277 clean_line = line[indent:] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
278 else: |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
279 clean_line = line |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
280 if not clean_line: |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
281 print('</p><p>') |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
282 continue |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
283 if clean_line.startswith(' '): # indented example line |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
284 print("<pre>%s</pre>" % clean_line) |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
285 else: |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
286 print(clean_line) |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
287 if lineno == lines_to_process: |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
288 print('</p>') |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
289 print('</td></tr>\n') |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
290 print("</table>") |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
291 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
292 def help_all(self): |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
293 print(_(""" |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
294 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
|
295 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
|
296 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
|
297 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
|
298 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
|
299 or on the command line as "-i tracker". |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
300 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
301 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
|
302 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
303 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
|
304 printed results: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
305 . Strings are, well, strings. |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
306 . 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
|
307 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
|
308 below. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
309 . 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
|
310 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
|
311 . 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
|
312 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
|
313 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
|
314 of nodes joined by commas is accepted. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
315 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
316 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
|
317 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
|
318 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
|
319 quotes. Examples: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
320 hello world (2 tokens: hello, world) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
321 "hello world" (1 token: hello world) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
322 "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
|
323 Roch\\'e Compaan (2 tokens: Roch'e Compaan) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
324 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
|
325 \\\\ (1 token: \\) |
|
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
326 \\n\\r\\t (1 token: a newline, carriage-return and tab) |
|
7859
9a74dfeb8620
feat: can use escaped tokens inside quotes including quotes.
John Rouillard <rouilj@ieee.org>
parents:
7847
diff
changeset
|
327 f "test\\"q" (2 tokens: f test"q) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
328 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
329 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
|
330 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
|
331 nodes. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
332 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
333 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
|
334 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
|
335 the -c) option. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
336 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
337 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
|
338 login may be specified as either "name" or "name:password". |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
339 . ROUNDUP_LOGIN environment variable |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
340 . the -u command-line option |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
341 If either the name or password is not supplied, they are obtained from the |
|
7093
f72ce883e677
Mitigation for issue2551246 -u opton to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7078
diff
changeset
|
342 command-line. (See admin guide before using -u.) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
343 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
344 Date format examples: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
345 "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
|
346 "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
|
347 "01-25" means <Date yyyy-01-25.00:00:00> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
348 "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
|
349 "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
|
350 "14:25" means <Date yyyy-mm-dd.19:25:00> |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
351 "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
|
352 "." means "right now" |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
353 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
354 Command help: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
355 """)) |
|
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
356 for name, command in list(self.commands.items()): |
| 6180 | 357 print(_('%s:') % name) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
358 print(' ', _(command.__doc__)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
359 |
| 6959 | 360 nl_re = re.compile('[\r\n]') |
| 361 # indent_re defined above | |
| 362 | |
|
6957
f924af12ef50
issue2551233 - create new roundup-admin command "templates"
John Rouillard <rouilj@ieee.org>
parents:
6818
diff
changeset
|
363 def listTemplates(self, trace_search=False): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
364 """ List all the available templates. |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
365 |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
366 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
|
367 |
|
3894
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
368 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
|
369 this is where they will be if we installed an egg via easy_install |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
370 or we are in the source tree. |
|
3894
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
371 2. <prefix>/share/roundup/templates/* |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
372 this should be the standard place to find them when Roundup is |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
373 installed using setup.py without a prefix |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
374 3. <roundup.admin.__file__>/../../<sys.prefix>/share/\ |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
375 roundup/templates/* which is where they will be found if |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
376 roundup is installed as a wheel using pip install |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
377 4. <current working dir>/* |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
378 this is for when someone unpacks a 3rd-party template |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
379 5. <current working dir> |
|
1863
d2ad3309c415
Clarify listTemplates docstring...
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
1775
diff
changeset
|
380 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
|
381 """ |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
382 # 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
|
383 # and <egg-directory>/share/roundup/templates |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
384 # -- 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
|
385 # like: |
|
3894
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
386 # /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
|
387 # 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
|
388 # /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
|
389 # (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
|
390 # |
|
44f2158fe76e
Marek Kubica's patch to find templates installed by easy_install
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3889
diff
changeset
|
391 # we're interested in where the directory containing "share" is |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
392 debug = False |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
393 templates = {} |
| 6959 | 394 if debug: print(__file__) # noqa: E701 |
|
4900
349a83aca61f
Correctly locate templates in a virtualenv (issue2550841)
John Kristensen <john@jerrykan.com>
parents:
4781
diff
changeset
|
395 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
|
396 path = __file__ |
|
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
397 # move up N elements in the path |
| 6180 | 398 for _i in range(N): |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
399 path = os.path.dirname(path) |
|
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
400 tdir = os.path.join(path, 'share', 'roundup', 'templates') |
| 6959 | 401 if debug or trace_search: print(tdir) # noqa: E701 |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
402 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
|
403 templates = init.listTemplates(tdir) |
| 6959 | 404 if debug: print(" Found templates breaking loop") # noqa: E701 |
|
1652
7fb3bf18babb
attempt to fix the template finding
Richard Jones <richard@users.sourceforge.net>
parents:
1634
diff
changeset
|
405 break |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
406 |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
407 # 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
|
408 # install dir. E.G. a wheel install |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
409 # 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
|
410 # to create a base path for searching. |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
411 |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
412 import sys |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
413 # __file__ should be something like: |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
414 # /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
|
415 # 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
|
416 # strip leading / to make os.path.join work right. |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
417 path = __file__ |
| 6585 | 418 for _N in 1, 2: |
|
6527
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
419 path = os.path.dirname(path) |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
420 # path is /usr/local/lib/python3.10/site-packages |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
421 tdir = os.path.join(path, sys.prefix[1:], 'share', |
|
5ad7fb912227
issue2551167 - update wheel support.
John Rouillard <rouilj@ieee.org>
parents:
6524
diff
changeset
|
422 'roundup', 'templates') |
| 6959 | 423 if debug or trace_search: print(tdir) # noqa: E701 |
|
6524
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
424 if os.path.isdir(tdir): |
|
f961dbbc3573
issue2551167 roundup issues when using pip install
John Rouillard <rouilj@ieee.org>
parents:
6491
diff
changeset
|
425 templates.update(init.listTemplates(tdir)) |
| 6585 | 426 |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
427 try: |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
428 # sigh pip 3.10 in virtual env finds another place to bury them. |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
429 # why local and sys.base_prefix are in path I do not know. |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
430 # path is /usr/local/lib/python3.10/site-packages |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
431 tdir = os.path.join(path, sys.base_prefix[1:], 'local', 'share', |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
432 'roundup', 'templates') |
| 6959 | 433 if debug or trace_search: print(tdir) # noqa: E701 |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
434 if os.path.isdir(tdir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
435 templates.update(init.listTemplates(tdir)) |
| 6959 | 436 # path is /usr/local/lib/python3.10/site-packages |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
437 |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
438 tdir = os.path.join(path, sys.base_prefix[1:], 'share', |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
439 'roundup', 'templates') |
| 6959 | 440 if debug or trace_search: print(tdir) # noqa: E701 |
|
6739
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
441 if os.path.isdir(tdir): |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
442 templates.update(init.listTemplates(tdir)) |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
443 except AttributeError: |
|
00fe67eb8a91
Update locations templates and locale files are stored
John Rouillard <rouilj@ieee.org>
parents:
6658
diff
changeset
|
444 pass # sys.base_prefix doesn't work under python2 |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
445 |
|
1593
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
446 # 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
|
447 templates.update(init.listTemplates(os.getcwd())) |
| 6959 | 448 if debug or trace_search: print(os.getcwd() + '/*') # noqa: E701 |
| 449 | |
|
1593
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
450 # 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
|
451 template = init.loadTemplateInfo(os.getcwd()) |
| 6959 | 452 if debug or trace_search: print(os.getcwd()) # noqa: E701 |
|
1593
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
453 if template: |
| 6959 | 454 if debug: print(" Found template %s" % # noqa: E701 |
| 455 template['name']) | |
|
1593
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
456 templates[template['name']] = template |
|
6318b21b0f73
more places to look for templates
Richard Jones <richard@users.sourceforge.net>
parents:
1591
diff
changeset
|
457 |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
458 return templates |
|
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
459 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
460 def help_initopts(self): |
|
1591
21312a7564fd
moving templates around
Richard Jones <richard@users.sourceforge.net>
parents:
1570
diff
changeset
|
461 templates = self.listTemplates() |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
462 print(_('Templates:'), ', '.join(templates)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
463 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
|
464 backends = roundup.backends.list_backends() |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
465 print(_('Back ends:'), ', '.join(backends)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
466 |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
467 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
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 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
|
474 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
|
475 while argument not in options: |
|
7182
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
476 argument = self.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
|
477 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
|
478 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
|
479 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
|
480 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
481 def do_commit(self, args): # noqa: ARG002 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
482 ''"""Usage: commit |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
483 Commit changes made to the database during an interactive session. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
484 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
485 The changes made during an interactive session are not |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
486 automatically written to the database - they must be committed |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
487 using this command. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
488 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
489 One-off commands on the command-line are automatically committed if |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
490 they are successful. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
491 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
492 self.db.commit() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
493 self.db_uncommitted = False |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
494 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
495 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
496 def do_create(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
497 ''"""Usage: create classname property=value ... |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
498 Create a new entry of a given class. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
499 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
500 This creates a new entry of the given class using the property |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
501 name=value arguments provided on the command line after the "create" |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
502 command. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
503 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
504 if len(args) < 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
505 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
506 from roundup import hyperdb |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
507 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
508 classname = args[0] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
509 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
510 # get the class |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
511 cl = self.get_class(classname) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
512 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
513 # now do a create |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
514 props = {} |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
515 properties = cl.getprops(protected=0) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
516 if len(args) == 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
517 # ask for the properties |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
518 for key in properties: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
519 if key == 'id': continue # noqa: E701 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
520 value = properties[key] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
521 name = value.__class__.__name__ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
522 if isinstance(value, hyperdb.Password): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
523 again = None |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
524 while value != again: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
525 value = getpass.getpass(_('%(propname)s (Password): ') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
526 % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
527 {'propname': key.capitalize()}) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
528 again = getpass.getpass(_(' %(propname)s (Again): ') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
529 % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
530 {'propname': key.capitalize()}) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
531 if value != again: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
532 print(_('Sorry, try again...')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
533 if value: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
534 props[key] = value |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
535 else: |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
536 value = self.my_input(_( |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
537 '%(propname)s (%(proptype)s): ') % { |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
538 'propname': key.capitalize(), 'proptype': name}) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
539 if value: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
540 props[key] = value |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
541 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
542 props = self.props_from_args(args[1:]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
543 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
544 # convert types |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
545 try: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
546 for propname in props: |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
547 props[propname] = hyperdb.rawToHyperdb(self.db, cl, None, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
548 propname, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
549 props[propname]) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
550 except hyperdb.HyperdbValueError as message: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
551 raise UsageError(message) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
552 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
553 # check for the key property |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
554 propname = cl.getkey() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
555 if propname and propname not in props: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
556 raise UsageError(_('you must provide the "%(propname)s" ' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
557 'property.') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
558 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
559 # do the actual create |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
560 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
561 sys.stdout.write(cl.create(**props) + '\n') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
562 except (TypeError, IndexError, ValueError) as message: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
563 raise UsageError(message) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
564 self.db_uncommitted = True |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
565 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
566 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
567 def do_display(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
568 ''"""Usage: display designator[,designator]* |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
569 Show the property values for the given node(s). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
570 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
571 A designator is a classname and a nodeid concatenated, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
572 eg. bug1, user10, ... |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
573 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
574 This lists the properties and their associated values |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
575 for the given node. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
576 """ |
|
2889
accb3b411ef6
instructions and method for generating config.ini
Richard Jones <richard@users.sourceforge.net>
parents:
2856
diff
changeset
|
577 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
|
578 raise UsageError(_('Not enough arguments supplied')) |
|
7203
12a3cd86668f
auto update 'password_pbkdf2_default_rounds' "
John Rouillard <rouilj@ieee.org>
parents:
7182
diff
changeset
|
579 |
|
7588
8329b2227adb
fix: restore roundup-admin display output format w/o pragmas
John Rouillard <rouilj@ieee.org>
parents:
7566
diff
changeset
|
580 display_protected = self.settings['display_protected'] |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
581 display_header = self.settings['display_header'] |
|
7588
8329b2227adb
fix: restore roundup-admin display output format w/o pragmas
John Rouillard <rouilj@ieee.org>
parents:
7566
diff
changeset
|
582 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
583 # decode the node designator |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
584 for designator in args[0].split(','): |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
585 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
|
586 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
|
587 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
|
588 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
589 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
590 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
591 cl = self.get_class(classname) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
592 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
593 # display the values |
|
7543
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
594 normal_props = sorted(cl.properties) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
595 |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
596 keys = sorted(cl.getprops()) if display_protected else normal_props |
|
7543
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
597 |
|
7588
8329b2227adb
fix: restore roundup-admin display output format w/o pragmas
John Rouillard <rouilj@ieee.org>
parents:
7566
diff
changeset
|
598 if display_header: |
|
7549
73dfa9df9fb0
issue685275 - show retired/unretired items in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7547
diff
changeset
|
599 status = "retired" if cl.is_retired(nodeid) else "active" |
|
73dfa9df9fb0
issue685275 - show retired/unretired items in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7547
diff
changeset
|
600 print('\n[%s (%s)]' % (designator, status)) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
601 for key in keys: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
602 value = cl.get(nodeid, key) |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
603 # prepend * for protected properties else just indent |
|
7543
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
604 # with space. |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
605 if display_protected or display_header: # noqa: SIM108 |
|
7588
8329b2227adb
fix: restore roundup-admin display output format w/o pragmas
John Rouillard <rouilj@ieee.org>
parents:
7566
diff
changeset
|
606 protected = "*" if key not in normal_props else ' ' |
|
8329b2227adb
fix: restore roundup-admin display output format w/o pragmas
John Rouillard <rouilj@ieee.org>
parents:
7566
diff
changeset
|
607 else: |
|
8329b2227adb
fix: restore roundup-admin display output format w/o pragmas
John Rouillard <rouilj@ieee.org>
parents:
7566
diff
changeset
|
608 protected = "" |
|
7543
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
609 print(_('%(protected)s%(key)s: %(value)s') % locals()) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
610 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
611 def do_export(self, args, export_files=True): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
612 ''"""Usage: export [[-]class[,class]] export_dir |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
613 Export the database and file content. |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
614 |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
615 Database content is exported to colon separated files. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
616 To exclude the files (e.g. for the msg or file class), |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
617 use the exporttables command. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
618 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
619 Optionally limit the export to just the named classes |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
620 or exclude the named classes, if the 1st argument |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
621 starts with '-'. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
622 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
623 This action exports the current data from the database into |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
624 colon-separated-value files that are placed in the nominated |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
625 export_dir directory. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
626 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
627 # grab the directory to export to |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
628 if len(args) < 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
629 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
630 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
631 export_dir = args[-1] |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
632 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
633 # get the list of classes to export |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
634 if len(args) == 2: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
635 if args[0].startswith('-'): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
636 classes = [c for c in self.db.classes |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
637 if c not in args[0][1:].split(',')] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
638 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
639 classes = args[0].split(',') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
640 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
641 classes = self.db.classes |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
642 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
643 class colon_separated(csv.excel): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
644 delimiter = ':' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
645 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
646 # make sure target dir exists |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
647 if not os.path.exists(export_dir): |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
648 os.makedirs(export_dir) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
649 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
650 # maximum csv field length exceeding configured size? |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
651 max_len = self.db.config.CSV_FIELD_SIZE |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
652 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
653 # do all the classes specified |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
654 for classname in classes: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
655 cl = self.get_class(classname) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
656 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
657 if not export_files and hasattr(cl, 'export_files'): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
658 sys.stdout.write('Exporting %s WITHOUT the files\r\n' % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
659 classname) |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
660 |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
661 with open(os.path.join(export_dir, classname + '.csv'), 'w') as f: |
|
7882
77c109725a7e
fix: import/export under windows.
John Rouillard <rouilj@ieee.org>
parents:
7869
diff
changeset
|
662 writer = csv.writer(f, colon_separated, lineterminator='\n') |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
663 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
664 propnames = cl.export_propnames() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
665 fields = propnames[:] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
666 fields.append('is retired') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
667 writer.writerow(fields) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
668 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
669 # If a node has a key, sort all nodes by key |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
670 # with retired nodes first. Retired nodes |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
671 # must occur before a non-retired node with |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
672 # the same key. Otherwise you get an |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
673 # IntegrityError: UNIQUE constraint failed: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
674 # _class.__retired__, _<class>._<keyname> |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
675 # on imports to rdbms. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
676 all_nodes = cl.getnodeids() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
677 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
678 classkey = cl.getkey() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
679 if classkey: # False sorts before True, so negate is_retired |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
680 keysort = lambda i: ( # noqa: E731 |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
681 cl.get(i, classkey), # noqa: B023 cl is not loop var |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
682 not cl.is_retired(i), # noqa: B023 cl is not loop var |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
683 ) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
684 all_nodes.sort(key=keysort) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
685 # if there is no classkey no need to sort |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
686 |
|
7847
d523d5c648e9
feat: add Progress output for admin export/exporttables
John Rouillard <rouilj@ieee.org>
parents:
7832
diff
changeset
|
687 for nodeid in support.Progress( "Exporting %s" % |
|
d523d5c648e9
feat: add Progress output for admin export/exporttables
John Rouillard <rouilj@ieee.org>
parents:
7832
diff
changeset
|
688 classname, all_nodes): |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
689 if self.verbose: |
|
7847
d523d5c648e9
feat: add Progress output for admin export/exporttables
John Rouillard <rouilj@ieee.org>
parents:
7832
diff
changeset
|
690 sys.stdout.write('\rExporting %s - %s ' % |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
691 (classname, nodeid)) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
692 sys.stdout.flush() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
693 node = cl.getnode(nodeid) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
694 exp = cl.export_list(propnames, nodeid) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
695 lensum = sum([len(repr_export(node[p])) for |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
696 p in propnames]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
697 # for a safe upper bound of field length we add |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
698 # difference between CSV len and sum of all field lengths |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
699 d = sum([len(x) for x in exp]) - lensum |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
700 if not d > 0: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
701 raise AssertionError("Bad assertion d > 0") |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
702 for p in propnames: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
703 ll = len(repr_export(node[p])) + d |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
704 if ll > max_len: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
705 max_len = ll |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
706 writer.writerow(exp) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
707 if export_files and hasattr(cl, 'export_files'): |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
708 cl.export_files(export_dir, nodeid) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
709 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
710 # export the journals |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
711 with open(os.path.join(export_dir, |
|
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
712 classname + '-journals.csv'), 'w') as jf: |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
713 if self.verbose: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
714 sys.stdout.write("\nExporting Journal for %s\n" % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
715 classname) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
716 sys.stdout.flush() |
|
7882
77c109725a7e
fix: import/export under windows.
John Rouillard <rouilj@ieee.org>
parents:
7869
diff
changeset
|
717 journals = csv.writer(jf, colon_separated, lineterminator='\n') |
|
7847
d523d5c648e9
feat: add Progress output for admin export/exporttables
John Rouillard <rouilj@ieee.org>
parents:
7832
diff
changeset
|
718 for row in support.Progress(" Writing journals", |
|
d523d5c648e9
feat: add Progress output for admin export/exporttables
John Rouillard <rouilj@ieee.org>
parents:
7832
diff
changeset
|
719 cl.export_journals()): |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
720 journals.writerow(row) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
721 if max_len > self.db.config.CSV_FIELD_SIZE: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
722 print("Warning: config csv_field_size should be at least %s" % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
723 max_len, file=sys.stderr) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
724 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
725 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
726 def do_exporttables(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
727 ''"""Usage: exporttables [[-]class[,class]] export_dir |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
728 Export only the database to files, no file content. |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
729 |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
730 Database content is exported to colon separated files. |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
731 The files below $TRACKER_HOME/db/files/ (which can be |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
732 archived separately) are not part of the export. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
733 To include the files, use the export command. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
734 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
735 Optionally limit the export to just the named classes |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
736 or exclude the named classes, if the 1st argument |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
737 starts with '-'. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
738 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
739 This action exports the current data from the database into |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
740 colon-separated-value files that are placed in the export_dir |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
741 destination directory. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
742 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
743 return self.do_export(args, export_files=False) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
744 |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
745 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
|
746 ''"""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
|
747 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
|
748 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
749 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
|
750 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
|
751 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
|
752 '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
|
753 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
|
754 """ |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
755 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
|
756 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
|
757 classname = args[0] |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
758 # get the class |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
759 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
|
760 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
761 # 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
|
762 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
|
763 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
764 # 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
|
765 # multiple , separated values become a list |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
766 for propname, prop_value in props.items(): |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
767 values = prop_value.split(',') if ',' in prop_value \ |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
768 else [prop_value] |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
769 |
|
6177
41907e1f9c3f
Fix postgres/mysql testing; test filter.
John Rouillard <rouilj@ieee.org>
parents:
6176
diff
changeset
|
770 props[propname] = [] |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
771 # start handling transitive props |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
772 # 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
|
773 # start at issue |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
774 curclass = cl |
| 6585 | 775 lastprop = propname # handle case 'issue assignedto=admin' |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
776 if '.' in propname: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
777 # 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
|
778 # 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
|
779 for pn in propname.split('.'): |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
780 try: |
| 6585 | 781 lastprop = pn # get current component |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
782 # get classname for this link |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
783 try: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
784 curclassname = curclass.getprops()[pn].classname |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
785 except KeyError: |
| 6959 | 786 raise UsageError(_( |
| 787 "Class %(curclassname)s has " | |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
788 "no property %(pn)s in %(propname)s.") % |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
789 locals()) |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
790 # get class object |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
791 curclass = self.get_class(curclassname) |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
792 except AttributeError: |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
793 # 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
|
794 # 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
|
795 pass |
|
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
796 |
|
6177
41907e1f9c3f
Fix postgres/mysql testing; test filter.
John Rouillard <rouilj@ieee.org>
parents:
6176
diff
changeset
|
797 for value in values: |
|
6250
95183d73ac64
issue2550522 - add transitive searching to filter in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
6208
diff
changeset
|
798 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
|
799 lastprop, value) |
|
6177
41907e1f9c3f
Fix postgres/mysql testing; test filter.
John Rouillard <rouilj@ieee.org>
parents:
6176
diff
changeset
|
800 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
|
801 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
802 # now do the filter |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
803 props = {"filterspec": props} |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
804 try: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
805 output_items = cl.filter(None, **props) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
806 if self.print_designator: |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
807 output_items = [classname + i for i in output_items] |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
808 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
809 if self.separator: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
810 print(self.separator.join(output_items)) |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
811 else: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
812 print(output_items) |
|
6176
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
813 except KeyError: |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
814 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
|
815 '"%(propname)s"') % locals()) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
816 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
|
817 raise UsageError(message) |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
818 return 0 |
|
d25638d1826c
Add roundup-admin filter command; fix bad doc example; add tests
John Rouillard <rouilj@ieee.org>
parents:
6001
diff
changeset
|
819 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
820 def do_find(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
821 ''"""Usage: find classname propname=value ... |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
822 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
|
823 |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
824 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
|
825 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
|
826 value. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
827 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
828 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
|
829 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
830 classname = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
831 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
832 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
833 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
834 # handle the propname=value argument |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
835 props = self.props_from_args(args[1:]) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
836 |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
837 # convert the user-input value to a value used for find() |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
838 for propname, prop_value in props.items(): |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
839 values = prop_value.split(',') if ',' in prop_value \ |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
840 else [prop_value] |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
841 |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2450
diff
changeset
|
842 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
|
843 for value in values: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
844 val = hyperdb.rawToHyperdb(self.db, cl, None, |
| 6180 | 845 propname, value) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
846 if isinstance(val, list): |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
847 for entry in val: |
|
3314
4372716a675a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3295
diff
changeset
|
848 d[entry] = 1 |
|
4372716a675a
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3295
diff
changeset
|
849 else: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
850 d[val] = 1 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
851 |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
852 # now do the find |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
853 try: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
854 output_items = cl.find(**props) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
855 if self.print_designator: |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
856 output_items = [classname + i for i in output_items] |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
857 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
858 if self.separator: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
859 print(self.separator.join(output_items)) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
860 else: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
861 print(output_items) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
862 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
|
863 raise UsageError(_('%(classname)s has no property ' |
| 6180 | 864 '"%(propname)s"') % locals()) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
865 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
|
866 raise UsageError(message) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
867 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
868 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
869 def do_genconfig(self, args, update=False): |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
870 ''"""Usage: genconfig filename |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
871 Create a new tracker config file with default values in filename. |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
872 See also updateconfig. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
873 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
874 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
|
875 raise UsageError(_('Not enough arguments supplied')) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
876 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
877 if update: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
878 # load current config for writing |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
879 config = CoreConfig(self.tracker_home) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
880 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
881 # change config to update settings to new defaults |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
882 # where prior defaults were chosen |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
883 default_ppdr = config._get_option( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
884 'PASSWORD_PBKDF2_DEFAULT_ROUNDS')._default_value |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
885 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
886 print("") # put a blank line before feedback |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
887 if config.PASSWORD_PBKDF2_DEFAULT_ROUNDS in [10000]: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
888 print(_("Changing option\n" |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
889 " 'password_pbkdf2_default_rounds'\n" |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
890 "from old default of %(old_number)s to new " |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
891 "default of %(new_number)s.") % { |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
892 "old_number": |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
893 config.PASSWORD_PBKDF2_DEFAULT_ROUNDS, |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
894 "new_number": default_ppdr, |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
895 }) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
896 config.PASSWORD_PBKDF2_DEFAULT_ROUNDS = default_ppdr |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
897 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
898 if default_ppdr > config.PASSWORD_PBKDF2_DEFAULT_ROUNDS: |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
899 print(_("Update " |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
900 "'password_pbkdf2_default_rounds' " |
|
7869
eb1fbbd53b6c
fix: roundup-admin updateconfig warn on mysql_{charset/collation} mismatch
John Rouillard <rouilj@ieee.org>
parents:
7859
diff
changeset
|
901 "to a number equal to or larger\n than %s.\n") % |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
902 default_ppdr) |
|
7869
eb1fbbd53b6c
fix: roundup-admin updateconfig warn on mysql_{charset/collation} mismatch
John Rouillard <rouilj@ieee.org>
parents:
7859
diff
changeset
|
903 |
|
eb1fbbd53b6c
fix: roundup-admin updateconfig warn on mysql_{charset/collation} mismatch
John Rouillard <rouilj@ieee.org>
parents:
7859
diff
changeset
|
904 if not config.RDBMS_MYSQL_COLLATION.startswith( |
|
eb1fbbd53b6c
fix: roundup-admin updateconfig warn on mysql_{charset/collation} mismatch
John Rouillard <rouilj@ieee.org>
parents:
7859
diff
changeset
|
905 config.RDBMS_MYSQL_CHARSET + "_"): |
|
eb1fbbd53b6c
fix: roundup-admin updateconfig warn on mysql_{charset/collation} mismatch
John Rouillard <rouilj@ieee.org>
parents:
7859
diff
changeset
|
906 print(_("Check the rdbms mysql_* settings. Your charset and " |
|
eb1fbbd53b6c
fix: roundup-admin updateconfig warn on mysql_{charset/collation} mismatch
John Rouillard <rouilj@ieee.org>
parents:
7859
diff
changeset
|
907 "collations may need\n" |
|
eb1fbbd53b6c
fix: roundup-admin updateconfig warn on mysql_{charset/collation} mismatch
John Rouillard <rouilj@ieee.org>
parents:
7859
diff
changeset
|
908 " to be changed. See upgrading instructions.\n")) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
909 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
910 # generate default config |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
911 config = CoreConfig() |
| 6191 | 912 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
913 config.save(args[0]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
914 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
915 def do_get(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
916 ''"""Usage: get property designator[,designator]* |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
917 Get the given property of one or more designator(s). |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
918 |
|
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
|
919 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
|
920 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
|
921 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
922 Retrieves the property value of the nodes specified |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
923 by the designators. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
924 """ |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
925 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
|
926 raise UsageError(_('Not enough arguments supplied')) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
927 propname = args[0] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
928 designators = args[1].split(',') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
929 linked_props = [] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
930 for designator in designators: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
931 # decode the node designator |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
932 try: |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
933 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
|
934 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
|
935 raise UsageError(message) |
|
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 # get the class |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
938 cl = self.get_class(classname) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
939 try: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
940 if not (self.separator or self.print_designator): |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
941 print(cl.get(nodeid, propname)) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
942 continue |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
943 |
|
7755
417c8ddc98ac
fix: undo last minute edit and try to get make checkin clean.
John Rouillard <rouilj@ieee.org>
parents:
7754
diff
changeset
|
944 properties = cl.getprops() |
|
417c8ddc98ac
fix: undo last minute edit and try to get make checkin clean.
John Rouillard <rouilj@ieee.org>
parents:
7754
diff
changeset
|
945 prop_obj = properties[propname] |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
946 if not (isinstance(prop_obj, |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
947 (hyperdb.Link, hyperdb.Multilink))): |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
948 raise UsageError(_( |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
949 'property %s is not of type' |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
950 ' Multilink or Link so -d flag does not ' |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
951 'apply.') % propname) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
952 propclassname = self.db.getclass( |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
953 prop_obj.classname).classname |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
954 |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
955 output_items = cl.get(nodeid, propname) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
956 if self.print_designator: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
957 output_items = [propclassname + i for i in output_items] |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
958 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
959 if self.separator: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
960 print(self.separator.join(output_items)) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
961 else: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
962 # default is to list each on a line |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
963 print('\n'.join(output_items)) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
964 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
965 except IndexError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
966 raise UsageError(_('no such %(classname)s node ' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
967 '"%(nodeid)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
968 except KeyError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
969 raise UsageError(_('no such %(classname)s property ' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
970 '"%(propname)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
971 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
972 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
973 def do_help(self, args, nl_re=nl_re, indent_re=indent_re): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
974 ''"""Usage: help topic |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
975 Give help about topic. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
976 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
977 commands -- list commands |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
978 <command> -- help specific to a command |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
979 initopts -- init command options |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
980 all -- all available help |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
981 """ |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
982 topic = args[0] if len(args) > 0 else 'help' |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
983 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
984 # try help_ methods |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
985 if topic in self.help: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
986 self.help[topic]() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
987 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
988 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
989 # try command docstrings |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
990 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
991 cmd_docs = self.commands.get(topic) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
992 except KeyError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
993 print(_('Sorry, no help for "%(topic)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
994 return 1 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
995 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
996 # display the help for each match, removing the docstring indent |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
997 for _name, do_function in cmd_docs: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
998 lines = nl_re.split(_(do_function.__doc__)) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
999 print(lines[0]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1000 indent = indent_re.match(lines[1]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1001 if indent: indent = len(indent.group(1)) # noqa: E701 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1002 for line in lines[1:]: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1003 if indent: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1004 print(line[indent:]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1005 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1006 print(line) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1007 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1008 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1009 def do_history(self, args): |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1010 ''"""Usage: history designator [skipquiet] [raw] |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1011 Show the history entries of a designator. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1012 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1013 A designator is a classname and a nodeid concatenated, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1014 eg. bug1, user10, ... |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1015 |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1016 Lists the journal entries viewable by the user for the node |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1017 identified by the designator. If skipquiet is added, journal |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1018 entries for quiet properties are not shown. If raw is added, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1019 the output is the raw representation of the journal entries. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1020 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1021 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1022 if len(args) < 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1023 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1024 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1025 classname, nodeid = hyperdb.splitDesignator(args[0]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1026 except hyperdb.DesignatorError as message: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1027 raise UsageError(message) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1028 |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1029 valid_args = ['skipquiet', 'raw'] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1030 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1031 if len(args) >= 2: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1032 check = [a for a in args[1:] if a not in valid_args] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1033 if check: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1034 raise UsageError( |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1035 _("Unexpected argument(s): %s. " |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1036 "Expected 'skipquiet' or 'raw'.") % ", ".join(check)) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1037 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1038 skipquiet = 'skipquiet' in args[1:] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1039 raw = 'raw' in args[1:] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1040 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1041 getclass = self.db.getclass |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1042 |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1043 def get_prop_name(key, prop_name): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1044 # getclass and classname from enclosing method |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1045 klass = getclass(classname) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1046 try: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1047 property_obj = klass.properties[prop_name] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1048 except KeyError: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1049 # the property has been removed from the schema. |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1050 return None |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1051 if isinstance(property_obj, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1052 (hyperdb.Link, hyperdb.Multilink)): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1053 prop_class = getclass(property_obj.classname) |
|
7800
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1054 label_prop_name = prop_class.labelprop(default_to_id=True) |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1055 if label_prop_name not in ['id', 'title']: |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1056 # Don't return 'id', its value is the key. If name is |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1057 # empty, the caller will use the classname with the key |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1058 # as the identifier: show "issue23" not "23(23)". |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1059 # Also don't use the title. It's too long in most |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1060 # cases. show: "issue23" not "please help me with |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1061 # samba use athentication issue(23)" |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1062 return prop_class.get(key, label_prop_name) |
|
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1063 # None indicates that there is no viable label_prop |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1064 return None |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1065 return None |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1066 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1067 def get_prop_class(prop_name): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1068 # getclass and classname from enclosing method |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1069 klass = getclass(classname) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1070 try: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1071 property_obj = klass.properties[prop_name] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1072 except KeyError: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1073 # the property has been removed from the schema. |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1074 return None |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1075 if isinstance(property_obj, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1076 (hyperdb.Link, hyperdb.Multilink)): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1077 prop_class = getclass(property_obj.classname) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1078 return prop_class.classname |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1079 return None # it's not a link |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1080 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1081 def _format_tuple_change(data, prop): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1082 ''' ('-', ['2', '4'] -> |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1083 "removed fred(2), jim(6)" |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1084 ''' |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1085 if data[0] == '-': |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1086 op = _("removed") |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1087 elif data[0] == '+': |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1088 op = _("added") |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1089 else: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1090 raise ValueError(_("Unknown history set operation '%s'. " |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1091 "Expected +/-.") % op) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1092 op_params = data[1] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1093 name = get_prop_name(op_params[0], prop) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1094 if name is not None: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1095 list_items = ["%s(%s)" % |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1096 (get_prop_name(o, prop), o) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1097 for o in op_params] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1098 else: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1099 propclass = get_prop_class(prop) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1100 if propclass: # noqa: SIM108 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1101 list_items = ["%s%s" % (propclass, o) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1102 for o in op_params] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1103 else: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1104 list_items = op_params |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1105 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1106 return "%s: %s" % (op, ", ".join(list_items)) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1107 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1108 def format_report_class(_data): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1109 """Eat the empty data dictionary or None""" |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1110 return classname |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1111 |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1112 def format_link(data): |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1113 '''data = ('issue', '157', 'dependson')''' |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1114 # .Hint added issue23 to superseder |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1115 f = _("added %(class)s%(item_id)s to %(propname)s") |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1116 return f % { |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1117 'class': data[0], 'item_id': data[1], 'propname': data[2]} |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1118 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1119 def format_set(data): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1120 '''data = set {'fyi': None, 'priority': '5'} |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1121 set {'fyi': '....\ned through cleanly', 'priority': '3'} |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1122 ''' |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1123 result = [] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1124 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1125 # Note that set data is the old value. So don't use |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1126 # current/future tense in sentences. |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1127 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1128 for prop, value in data.items(): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1129 if isinstance(value, str): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1130 name = get_prop_name(value, prop) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1131 if name: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1132 result.append( |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1133 # .Hint read as: assignedto was admin(1) |
|
7821
aa1fd8704469
fix(i18n): clean up translator hint
John Rouillard <rouilj@ieee.org>
parents:
7802
diff
changeset
|
1134 # where assignedto is the property |
|
aa1fd8704469
fix(i18n): clean up translator hint
John Rouillard <rouilj@ieee.org>
parents:
7802
diff
changeset
|
1135 # admin is the key name for value 1 |
|
7800
2d4684e4702d
fix: enhancement to history command output and % template fix.
John Rouillard <rouilj@ieee.org>
parents:
7799
diff
changeset
|
1136 _("%(prop)s was %(name)s(%(value)s)") % { |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1137 "prop": prop, "name": name, "value": value}) |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1138 else: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1139 # use repr so strings with embedded \n etc. don't |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1140 # generate newlines in output. Try to keep each |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1141 # journal entry on 1 line. |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1142 result.append(_("%(prop)s was %(value)s") % { |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1143 "prop": prop, "value": repr(value)}) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1144 elif isinstance(value, list): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1145 # test to see if there is a key prop. |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1146 # Assumption, geting None here means no key |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1147 # is defined for the property's class. |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1148 name = get_prop_name(value[0], prop) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1149 if name is not None: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1150 list_items = ["%s(%s)" % |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1151 (get_prop_name(v, prop), v) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1152 for v in value] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1153 else: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1154 prop_class = get_prop_class(prop) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1155 if prop_class: # noqa: SIM108 |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1156 list_items = ["%s%s" % (prop_class, v) |
|
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1157 for v in value] |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1158 else: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1159 list_items = value |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1160 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1161 result.append(_("%(prop)s was [%(value_list)s]") % { |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1162 "prop": prop, "value_list": ", ".join(list_items)}) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1163 elif isinstance(value, tuple): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1164 # operation data |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1165 decorated = [_format_tuple_change(data, prop) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1166 for data in value] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1167 result.append(# .Hint modified nosy: added demo(3) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1168 _("modified %(prop)s: %(how)s") % { |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1169 "prop": prop, "how": ", ".join(decorated)}) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1170 else: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1171 result.append(_("%(prop)s was %(value)s") % { |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1172 "prop": prop, "value": value}) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1173 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1174 return '; '.join(result) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1175 |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1176 def format_unlink(data): |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1177 '''data = ('issue', '157', 'dependson')''' |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1178 return "removed %s%s from %s" % (data[0], data[1], data[2]) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1179 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1180 formatters = { |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1181 "create": format_report_class, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1182 "link": format_link, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1183 "restored": format_report_class, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1184 "retired": format_report_class, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1185 "set": format_set, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1186 "unlink": format_unlink, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1187 } |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1188 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1189 try: |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1190 # returns a tuple: ( |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1191 # [0] = nodeid |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1192 # [1] = date |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1193 # [2] = userid |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1194 # [3] = operation |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1195 # [4] = details |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1196 raw_history = self.db.getclass(classname).history(nodeid, |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1197 skipquiet=skipquiet) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1198 if raw: |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1199 print(raw_history) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1200 return 0 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1201 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1202 def make_readable(hist): |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1203 return "%s(%s) %s %s" % (self.db.user.get(hist[2], 'username'), |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1204 hist[1], |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1205 hist[3], |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1206 formatters.get(hist[3], lambda x: x)( |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1207 hist[4])) |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1208 printable_history = [make_readable(hist) for hist in raw_history] |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1209 |
|
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
1210 print("\n".join(printable_history)) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1211 except KeyError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1212 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1213 except IndexError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1214 raise UsageError(_('no such %(classname)s node ' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1215 '"%(nodeid)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1216 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1217 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1218 def do_import(self, args, import_files=True): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1219 ''"""Usage: import import_dir |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1220 Import a database and file contents from the directory. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1221 |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1222 The directory should have the same format as one containing |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1223 the output of export. There are two files imported per class. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1224 The files used in the import are: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1225 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1226 <class>.csv |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1227 This must define the same properties as the class |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1228 (including having a "header" line with those |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1229 property names.) |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1230 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1231 <class>-journals.csv |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1232 This defines the journals for the items |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1233 being imported. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1234 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1235 The imported nodes will have the same nodeid as defined in the |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1236 import file, thus replacing any existing content. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1237 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1238 The new nodes are added to the existing database - if you want to |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1239 create a new database using the imported data, then create a new |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1240 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
|
1241 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1242 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
|
1243 raise UsageError(_('Not enough arguments supplied')) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1244 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1245 if hasattr(csv, 'field_size_limit'): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1246 csv.field_size_limit(self.db.config.CSV_FIELD_SIZE) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1247 |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
1248 # default value is 10000, only go through this if default |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
1249 # is different. |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1250 if self.settings['savepoint_limit'] != self._default_savepoint_setting: |
|
7687
4dda4a9dfe0b
doc: add comment on method to set savepoint_limit dynamically
John Rouillard <rouilj@ieee.org>
parents:
7668
diff
changeset
|
1251 # create a new option on the fly in the config under the |
|
4dda4a9dfe0b
doc: add comment on method to set savepoint_limit dynamically
John Rouillard <rouilj@ieee.org>
parents:
7668
diff
changeset
|
1252 # rdbms section. It is used by the postgresql backend's |
|
4dda4a9dfe0b
doc: add comment on method to set savepoint_limit dynamically
John Rouillard <rouilj@ieee.org>
parents:
7668
diff
changeset
|
1253 # checkpoint_data method. |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
1254 self.db.config.add_option(Option(self.db.config, |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
1255 "rdbms", "savepoint_limit")) |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
1256 self.db.config.options["RDBMS_SAVEPOINT_LIMIT"].set( |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
1257 self.settings['savepoint_limit']) |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7650
diff
changeset
|
1258 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1259 # directory to import from |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1260 import_dir = args[0] |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1261 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1262 class colon_separated(csv.excel): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1263 delimiter = ':' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1264 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1265 # import all the files |
|
8088
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
7998
diff
changeset
|
1266 for dir_entry in os.scandir(import_dir): |
|
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
7998
diff
changeset
|
1267 filename = dir_entry.name |
|
1045425c23b2
refactor!: replace os.listdir() with os.scandir()
John Rouillard <rouilj@ieee.org>
parents:
7998
diff
changeset
|
1268 classname, ext = os.path.splitext(filename) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1269 # we only care about CSV files |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1270 if ext != '.csv' or classname.endswith('-journals'): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1271 continue |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1272 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1273 cl = self.get_class(classname) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1274 |
|
8224
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1275 maxid = self.import_class(dir_entry.path, colon_separated, cl, |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1276 import_dir, import_files) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1277 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1278 # import the journals |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1279 with open(os.path.join(import_dir, classname + '-journals.csv'), 'r') as f: |
|
7882
77c109725a7e
fix: import/export under windows.
John Rouillard <rouilj@ieee.org>
parents:
7869
diff
changeset
|
1280 reader = csv.reader(f, colon_separated, lineterminator='\n') |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1281 cl.import_journals(reader) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1282 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1283 # (print to sys.stdout here to allow tests to squash it .. ugh) |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1284 print('setting', classname, maxid + 1, file=sys.stdout) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1285 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1286 # set the id counter |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1287 self.db.setid(classname, str(maxid + 1)) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1288 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1289 self.db_uncommitted = True |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1290 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1291 |
|
8224
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1292 def import_class(self, filepath, csv_format_class, hyperdb_class, |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1293 import_dir, import_files): |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1294 """Import class given csv class filepath, csv_format_class and |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1295 hyperdb_class, directory for import, and boolean to import |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1296 files. |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1297 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1298 Optionally import files as well if import_files is True |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1299 otherwise just import database data. |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1300 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1301 Returns: maxid seen in csv file |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1302 """ |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1303 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1304 maxid = 1 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1305 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1306 # ensure that the properties and the CSV file headings match |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1307 with open(filepath, 'r') as f: |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1308 reader = csv.reader(f, csv_format_class, lineterminator='\n') |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1309 file_props = None |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1310 # loop through the file and create a node for each entry |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1311 for n, r in enumerate(reader): |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1312 if file_props is None: |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1313 file_props = r |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1314 continue |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1315 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1316 if self.verbose: |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1317 sys.stdout.write('\rImporting %s - %s' % ( |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1318 hyperdb_class.classname, n)) |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1319 sys.stdout.flush() |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1320 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1321 # do the import and figure the current highest nodeid |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1322 nodeid = hyperdb_class.import_list(file_props, r) |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1323 if hasattr(hyperdb_class, 'import_files') and import_files: |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1324 hyperdb_class.import_files(import_dir, nodeid) |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1325 maxid = max(maxid, int(nodeid)) |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1326 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1327 # (print to sys.stdout here to allow tests to squash it .. ugh) |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1328 print(file=sys.stdout) |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1329 |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1330 return maxid |
|
5913ec1673c2
refactor: extract code as method from do_import
John Rouillard <rouilj@ieee.org>
parents:
8119
diff
changeset
|
1331 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1332 def do_importtables(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1333 ''"""Usage: importtables export_dir |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1334 This imports the database tables exported using exporttables. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1335 |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1336 It does not import the content of files like msgs and files. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1337 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1338 return self.do_import(args, import_files=False) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1339 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1340 def do_initialise(self, tracker_home, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1341 ''"""Usage: initialise [adminpw] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1342 Initialise a new Roundup tracker. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1343 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1344 The administrator details will be set at this step. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1345 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1346 Execute the tracker's initialisation function dbinit.init() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1347 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1348 # password |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1349 if len(args) > 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1350 adminpw = args[1] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1351 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1352 adminpw = '' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1353 confirm = 'x' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1354 while adminpw != confirm: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1355 adminpw = getpass.getpass(_('Admin Password: ')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1356 confirm = getpass.getpass(_(' Confirm: ')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1357 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1358 # make sure the tracker home is installed |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1359 if not os.path.exists(tracker_home): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1360 raise UsageError(_('Instance home does not exist') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1361 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1362 tracker = roundup.instance.open(tracker_home) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1363 except roundup.instance.TrackerError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1364 raise UsageError(_('Instance has not been installed') % locals()) |
|
7427
36916abe36e9
Handle traceback when OptionValueError raised during init.
John Rouillard <rouilj@ieee.org>
parents:
7397
diff
changeset
|
1365 except OptionValueError as e: |
|
36916abe36e9
Handle traceback when OptionValueError raised during init.
John Rouillard <rouilj@ieee.org>
parents:
7397
diff
changeset
|
1366 raise UsageError(e) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1367 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1368 # is there already a database? |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1369 if tracker.exists(): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1370 if not self.force: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1371 ok = self.my_input(_( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1372 """WARNING: The database is already initialised! |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1373 If you re-initialise it, you will lose all the data! |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1374 Erase it? Y/N: """)) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1375 if ok.strip().lower() != 'y': |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1376 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1377 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1378 # nuke it |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1379 tracker.nuke() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1380 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1381 # GO |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1382 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1383 tracker.init(password.Password(adminpw, config=tracker.config), |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1384 tx_Source='cli') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1385 except OptionUnsetError as e: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1386 raise UsageError("In %(tracker_home)s/config.ini - %(error)s" % { |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1387 'error': str(e), 'tracker_home': tracker_home}) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1388 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1389 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1390 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1391 def do_install(self, tracker_home, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1392 ''"""Usage: install [template [backend [key=val[,key=val]]]] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1393 Install a new Roundup tracker. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1394 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1395 The command will prompt for the tracker home directory |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1396 (if not supplied through TRACKER_HOME or the -i option). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1397 The template and backend may be specified on the command-line |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1398 as arguments, in that order. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1399 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1400 Command line arguments following the backend allows you to |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1401 pass initial values for config options. For example, passing |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1402 "web_http_auth=no,rdbms_user=dinsdale" will override defaults |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1403 for options http_auth in section [web] and user in section [rdbms]. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1404 Please be careful to not use spaces in this argument! (Enclose |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1405 whole argument in quotes if you need spaces in option value). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1406 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1407 The initialise command must be called after this command in order |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1408 to initialise the tracker's database. You may edit the tracker's |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1409 initial database contents before running that command by editing |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1410 the tracker's dbinit.py module init() function. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1411 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1412 See also initopts help. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1413 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1414 if len(args) < 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1415 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1416 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1417 # make sure the tracker home can be created |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1418 tracker_home = os.path.abspath(tracker_home) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1419 parent = os.path.split(tracker_home)[0] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1420 if not os.path.exists(parent): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1421 raise UsageError(_('Instance home parent directory "%(parent)s"' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1422 ' does not exist') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1423 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1424 config_ini_file = os.path.join(tracker_home, CoreConfig.INI_FILE) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1425 # check for both old- and new-style configs |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1426 if list(filter(os.path.exists, [config_ini_file, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1427 os.path.join(tracker_home, 'config.py')])): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1428 if not self.force: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1429 ok = self.my_input(_( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1430 """WARNING: There appears to be a tracker in "%(tracker_home)s"! |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1431 If you re-install it, you will lose all the data! |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1432 Erase it? Y/N: """) % locals()) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1433 if ok.strip().lower() != 'y': |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1434 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1435 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1436 # clear it out so the install isn't confused |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1437 shutil.rmtree(tracker_home) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1438 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1439 # select template |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1440 templates = self.listTemplates() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1441 template = self._get_choice( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1442 list_name=_('Templates:'), |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1443 prompt=_('Select template'), |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1444 options=templates, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1445 argument=len(args) > 1 and args[1] or '', |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1446 default='classic') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1447 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1448 # select hyperdb backend |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1449 import roundup.backends |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1450 backends = roundup.backends.list_backends() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1451 backend = self._get_choice( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1452 list_name=_('Back ends:'), |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1453 prompt=_('Select backend'), |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1454 options=backends, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1455 argument=len(args) > 2 and args[2] or '', |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1456 default='anydbm') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1457 # XXX perform a unit test based on the user's selections |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1458 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1459 # Process configuration file definitions |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1460 if len(args) > 3: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1461 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1462 defns = dict([item.split("=") for item in args[3].split(",")]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1463 except Exception: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1464 print(_('Error in configuration settings: "%s"') % args[3]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1465 raise |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1466 else: |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1467 defns = {} |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1468 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1469 defns['rdbms_backend'] = backend |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1470 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1471 # load config_ini.ini from template if it exists. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1472 # it sets parameters like template_engine that are |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1473 # template specific. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1474 template_config = UserConfig(templates[template]['path'] + |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1475 "/config_ini.ini") |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1476 |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1477 # .keys() is required. UserConfig has no __iter__ or __next__ |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1478 for k in template_config.keys(): # noqa: SIM118 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1479 if k == 'HOME': # ignore home. It is a default param. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1480 continue |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1481 defns[k] = template_config[k] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1482 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1483 # install! |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1484 init.install(tracker_home, templates[template]['path'], settings=defns) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1485 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1486 # Remove config_ini.ini file from tracker_home (not template dir). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1487 # Ignore file not found - not all templates have |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1488 # config_ini.ini files. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1489 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1490 os.remove(tracker_home + "/config_ini.ini") |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1491 except OSError as e: # FileNotFound exception under py3 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1492 if e.errno == 2: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1493 pass |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1494 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1495 raise |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1496 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1497 print(_(""" |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1498 --------------------------------------------------------------------------- |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1499 You should now edit the tracker configuration file: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1500 %(config_file)s""") % {"config_file": config_ini_file}) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1501 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1502 # find list of options that need manual adjustments |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1503 # XXX config._get_unset_options() is marked as private |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1504 # (leading underscore). make it public or don't care? |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1505 need_set = CoreConfig(tracker_home)._get_unset_options() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1506 if need_set: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1507 print(_(" ... at a minimum, you must set following options:")) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1508 for section in need_set: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1509 print(" [%s]: %s" % (section, ", ".join(need_set[section]))) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1510 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1511 # note about schema modifications |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1512 print(_(""" |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1513 If you wish to modify the database schema, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1514 you should also edit the schema file: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1515 %(database_config_file)s |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1516 You may also change the database initialisation file: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1517 %(database_init_file)s |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1518 ... see the documentation on customizing for more information. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1519 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1520 You MUST run the "roundup-admin initialise" command once you've performed |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1521 the above steps. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1522 --------------------------------------------------------------------------- |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1523 """) % {'database_config_file': os.path.join(tracker_home, 'schema.py'), |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1524 'database_init_file': os.path.join(tracker_home, 'initial_data.py')}) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1525 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1526 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1527 def do_list(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1528 ''"""Usage: list classname [property] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1529 List the instances of a class. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1530 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1531 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
|
1532 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
|
1533 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
|
1534 property, alphabetically. |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1535 |
|
2329
e128fd807054
fix invalid backslash escapes; wrap long lines
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2313
diff
changeset
|
1536 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
|
1537 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
|
1538 for every class instance. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
1539 """ |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1540 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
|
1541 raise UsageError(_('Too many arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1542 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
|
1543 raise UsageError(_('Not enough arguments supplied')) |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1544 |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1545 retired = self.settings['_retired_val'] |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1546 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1547 classname = args[0] |
| 6180 | 1548 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1549 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1550 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1551 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1552 # figure the property |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1553 propname = args[1] if len(args) > 1 else cl.labelprop() |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1554 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
1555 if self.separator: |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1556 if len(args) == 2: |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
1557 # create a list of propnames since user specified propname |
| 6180 | 1558 proplist = [] |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1559 try: |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1560 proplist = [cl.get(nodeid, propname) for nodeid in |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1561 cl.getnodeids(retired=retired)] |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1562 except KeyError: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1563 raise UsageError(_('%(classname)s has no property ' |
| 6180 | 1564 '"%(propname)s"') % locals()) |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
1565 print(self.separator.join(proplist)) |
|
1676
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1566 else: |
|
4856faf558a2
Get rid of TABs, use spaces instead.
Jean Jordaan <neaj@users.sourceforge.net>
parents:
1652
diff
changeset
|
1567 # 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
|
1568 # otherwise |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1569 print(self.separator.join(cl.getnodeids(retired=retired))) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1570 else: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1571 try: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1572 for nodeid in cl.getnodeids(retired=retired): |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1573 value = cl.get(nodeid, propname) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1574 print(_('%(nodeid)4s: %(value)s') % locals()) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1575 except KeyError: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1576 raise UsageError(_('%(classname)s has no property ' |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1577 '"%(propname)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1578 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1579 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1580 def do_migrate(self, args): # noqa: ARG002 - args unused |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1581 ''"""Usage: migrate |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1582 Update a tracker's database to be compatible with the Roundup |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1583 codebase. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1584 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1585 You should run the "migrate" command for your tracker once |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1586 you've installed the latest codebase. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1587 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1588 Do this before you use the web, command-line or mail interface |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1589 and before any users access the tracker. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1590 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1591 This command will respond with either "Tracker updated" (if |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1592 you've not previously run it on an RDBMS backend) or "No |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1593 migration action required" (if you have run it, or have used |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1594 another interface to the tracker, or possibly because you are |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1595 using anydbm). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1596 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1597 It's safe to run this even if it's not required, so just get |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1598 into the habit. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1599 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1600 if self.db.db_version_updated: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1601 print(_('Tracker updated to schema version %s.') % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1602 self.db.database_schema['version']) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1603 self.db_uncommitted = True |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1604 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1605 print(_('No migration action required. At schema version %s.') % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1606 self.db.database_schema['version']) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1607 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1608 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1609 def do_pack(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1610 ''"""Usage: pack period | date |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1611 Remove journal entries older than the date/period. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1612 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1613 A period is specified using the suffixes "y", "m", and "d". The |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1614 suffix "w" (for "week") means 7 days. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1615 |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1616 "3y" means three years |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1617 "2y 1m" means two years and one month |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1618 "1m 25d" means one month and 25 days |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
1619 "2w 3d" means two weeks and three days |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1620 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1621 Date format is "YYYY-MM-DD" eg: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1622 2001-01-01 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1623 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1624 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1625 if len(args) != 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1626 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1627 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1628 # are we dealing with a period or a date |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1629 value = args[0] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1630 date_re = re.compile(r""" |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1631 (?P<date>\d\d\d\d-\d\d?-\d\d?)? # yyyy-mm-dd |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1632 (?P<period>(\d+y\s*)?(\d+m\s*)?(\d+d\s*)?)? |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1633 """, re.VERBOSE) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1634 m = date_re.match(value) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1635 if not m: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1636 raise ValueError(_('Invalid format')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1637 m = m.groupdict() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1638 if m['period']: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1639 pack_before = date.Date(". - %s" % value) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1640 elif m['date']: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1641 pack_before = date.Date(value) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1642 self.db.pack(pack_before) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1643 self.db_uncommitted = True |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1644 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1645 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1646 def do_perftest(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1647 ''"""Usage: perftest [mode] [arguments]* |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1648 Time operations in Roundup. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1649 |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1650 Supported arguments: |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1651 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1652 [password] [rounds=<integer>] [scheme=<scheme>] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1653 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1654 'password' is the default mode. The tracker's config.ini |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1655 setting for 'password_pbkdf2_default_rounds' is the default |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1656 value for 'rounds'. On the command line, 'rounds' can include |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1657 thousands separator of ',' or '.'. 'scheme' is the default |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1658 coded into Roundup. List supported schemes by using 'scheme='. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1659 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1660 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1661 from roundup.anypy.time_ import perf_counter |
|
6957
f924af12ef50
issue2551233 - create new roundup-admin command "templates"
John Rouillard <rouilj@ieee.org>
parents:
6818
diff
changeset
|
1662 |
|
8240
1189c742e4b3
fix: crash roundup-admin perftest password without rounds= argument.
John Rouillard <rouilj@ieee.org>
parents:
8224
diff
changeset
|
1663 # default rounds from db.config is an int not str |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1664 props = {"rounds": self.db.config.PASSWORD_PBKDF2_DEFAULT_ROUNDS, |
|
7375
9bd7ed918121
issue2551253 - Modify password PBKDF2 method to use SHA512
John Rouillard <rouilj@ieee.org>
parents:
7371
diff
changeset
|
1665 "scheme": password.Password.default_scheme} |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1666 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1667 print_supported_schemes = lambda: print( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1668 "Supported schemes (default is first, case " |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1669 "sensitive):\n %s." % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1670 ", ".join(password.Password.known_schemes)) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1671 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1672 if (args[0].find("=") != -1): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1673 args.insert(0, 'password') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1674 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1675 props.update(self.props_from_args(args[1:])) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1676 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1677 if args[0] == "password": |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1678 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1679 # convert 10,000,000 or 10.000.000 to 10000000 |
|
8240
1189c742e4b3
fix: crash roundup-admin perftest password without rounds= argument.
John Rouillard <rouilj@ieee.org>
parents:
8224
diff
changeset
|
1680 r = int(re.sub('[,.]', '', props['rounds'])) \ |
|
1189c742e4b3
fix: crash roundup-admin perftest password without rounds= argument.
John Rouillard <rouilj@ieee.org>
parents:
8224
diff
changeset
|
1681 if not isinstance(props['rounds'], int) \ |
|
1189c742e4b3
fix: crash roundup-admin perftest password without rounds= argument.
John Rouillard <rouilj@ieee.org>
parents:
8224
diff
changeset
|
1682 else props['rounds'] |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1683 if r < 1000: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1684 print(_("Invalid 'rounds'. Must be larger than 999.")) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1685 return |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1686 props['rounds'] = r |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1687 except (TypeError, ValueError): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1688 print(_("Invalid 'rounds'. It must be an integer not: %s") % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1689 props['rounds']) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1690 return |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1691 if props['scheme'] is None: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1692 print_supported_schemes() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1693 return |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1694 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1695 self.db.config.PASSWORD_PBKDF2_DEFAULT_ROUNDS = props['rounds'] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1696 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1697 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1698 tic = perf_counter() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1699 pw_hash = password.encodePassword( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1700 "this is a long password to hash", |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1701 props['scheme'], |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1702 None, |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1703 config=self.db.config, |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1704 ) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1705 toc = perf_counter() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1706 except password.PasswordValueError as e: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1707 print(e) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1708 print_supported_schemes() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1709 return |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1710 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1711 if props['scheme'].startswith('PBKDF2'): |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1712 (rounds, _salt, _raw_salt, _digest) = password.pbkdf2_unpack( |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1713 pw_hash) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1714 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1715 rounds = _("scheme does not support rounds.") |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1716 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1717 print(_( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1718 "Hash time: %(time)0.9f seconds, scheme: %(scheme)s, " |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1719 "rounds: %(rounds)s") % |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
1720 {"time": toc - tic, "scheme": props['scheme'], |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1721 "rounds": rounds}) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1722 |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1723 def do_pragma(self, args): |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1724 ''"""Usage: pragma setting=value | 'list' |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1725 Set internal admin settings to a value. |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1726 |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1727 For example: |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1728 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1729 pragma verbose=True |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1730 pragma verbose=yes |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1731 pragma verbose=on |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1732 pragma verbose=1 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1733 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1734 will turn on verbose mode for roundup-admin. |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1735 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1736 pragma list |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1737 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1738 will show all settings and their current values. If verbose |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1739 is enabled hidden settings and descriptions will be shown. |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1740 """ |
|
7543
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1741 """ |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1742 The following are to be implemented: |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1743 exportfiles={true|false} - Not Implemented - If true |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1744 (default) export/import db tables and files. If |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1745 False, export/import just database tables, not |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1746 files. Use for faster database migration. |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1747 Replaces exporttables/importtables with |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1748 exportfiles=false then export/import |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
1749 """ |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1750 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1751 if len(args) < 1: |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1752 raise UsageError(_('Not enough arguments supplied')) |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1753 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1754 try: |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1755 (setting, value) = args[0].split("=", 1) |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1756 except ValueError: |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1757 if args[0] != "list": |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1758 raise UsageError(_( |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1759 'Argument must be setting=value, was given: %s.') % |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1760 args[0]) |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1761 |
|
7773
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1762 print(_("Current settings and values " |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1763 "(NYI - not yet implemented):")) |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1764 is_verbose = self.settings['verbose'] |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1765 for key in sorted(self.settings.keys()): |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1766 if key.startswith('_') and not is_verbose: |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1767 continue |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1768 print(" %s=%s" % (key, self.settings[key])) |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1769 if is_verbose: |
|
7796
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
1770 try: |
|
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
1771 print(" %s" % self.settings_help[key]) |
|
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
1772 except KeyError: |
|
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
1773 print(_(" Help for this pragma is missing. " |
|
5f3b49bb7742
add missing help text for history_length pragma. Also don't crash report missing text if text is missing
John Rouillard <rouilj@ieee.org>
parents:
7795
diff
changeset
|
1774 "Please report it to the Roundup project.\n")) |
|
7773
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1775 |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1776 return |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1777 |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1778 if setting not in self.settings: |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1779 raise UsageError(_('Unknown setting %s. Try "pragma list".') |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1780 % setting) |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1781 if isinstance(self.settings[setting], bool): |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1782 value = value.lower() |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1783 if value in ("yes", "true", "on", "1"): |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1784 value = True |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1785 elif value in ("no", "false", "off", "0"): |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1786 value = False |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1787 else: |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1788 raise UsageError(_( |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1789 'Incorrect value for boolean setting %(setting)s: ' |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1790 '%(value)s.') % {"setting": setting, "value": value}) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1791 elif isinstance(self.settings[setting], int): |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1792 try: |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1793 _val = int(value) |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1794 except ValueError: |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1795 raise UsageError(_( |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1796 'Incorrect value for integer setting %(setting)s: ' |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1797 '%(value)s.') % {"setting": setting, "value": value}) |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1798 value = _val |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1799 elif isinstance(self.settings[setting], str): |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1800 if setting == "show_retired": |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1801 if value not in ["no", "only", "both"]: |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1802 raise UsageError(_( |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1803 'Incorrect value for setting %(setting)s: ' |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1804 '%(value)s. Should be no, both, or only.') % { |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1805 "setting": setting, "value": value}) |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1806 if value == "both": |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1807 self.settings['_retired_val'] = None |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1808 elif value == "only": # numerical value not boolean |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1809 self.settings['_retired_val'] = True |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1810 else: # numerical value not boolean |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
1811 self.settings['_retired_val'] = False |
|
7252
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1812 else: |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1813 raise UsageError(_('Internal error: pragma can not handle ' |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1814 'values of type: %s') % |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1815 type(self.settings[setting]).__name__) |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1816 self.settings[setting] = value |
|
9c067ed4568b
add pragma command to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7250
diff
changeset
|
1817 |
|
7395
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1818 designator_re = re.compile('([A-Za-z]+)([0-9]+)$') |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1819 designator_rng = re.compile('([A-Za-z]+):([0-9]+)-([0-9]+)$') |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1820 |
|
7395
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1821 def do_reindex(self, args, desre=designator_re, desrng=designator_rng): |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1822 ''"""Usage: reindex [classname|classname:#-#|designator]* |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1823 Re-generate a tracker's search indexes. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1824 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1825 This will re-generate the search indexes for a tracker. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1826 This will typically happen automatically. |
|
7395
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1827 |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1828 You can incrementally reindex using an argument like: |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1829 |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1830 reindex issue:23-1000 |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1831 |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1832 to reindex issue class items 23-1000. Missing items |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1833 are reported but do not stop indexing of the range. |
|
6957
f924af12ef50
issue2551233 - create new roundup-admin command "templates"
John Rouillard <rouilj@ieee.org>
parents:
6818
diff
changeset
|
1834 """ |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1835 if args: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1836 for arg in args: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1837 m = desre.match(arg) |
|
7395
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1838 r = desrng.match(arg) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1839 if m: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1840 cl = self.get_class(m.group(1)) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1841 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1842 cl.index(m.group(2)) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1843 except IndexError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1844 raise UsageError(_('no such item "%(designator)s"') % { |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1845 'designator': arg}) |
|
7395
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1846 elif r: |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1847 cl = self.get_class(r.group(1)) |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1848 for item in support.Progress( |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1849 'Reindexing %s' % r.group(1), |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1850 range(int(r.group(2)), int(r.group(3)))): |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1851 try: |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1852 cl.index(str(item)) |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1853 except IndexError: |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1854 print(_('no such item "%(class)s%(id)s"') % { |
| 7566 | 1855 'class': r.group(1), |
| 1856 'id': item}) | |
| 1857 | |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1858 else: |
|
7395
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1859 cl = self.get_class(arg) # Bad class raises UsageError |
|
312d52305583
- issue2551190 - Allow roundup-admin reindex to work in batches.
John Rouillard <rouilj@ieee.org>
parents:
7392
diff
changeset
|
1860 self.db.reindex(arg, show_progress=True) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1861 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1862 self.db.reindex(show_progress=True) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1863 return 0 |
|
6957
f924af12ef50
issue2551233 - create new roundup-admin command "templates"
John Rouillard <rouilj@ieee.org>
parents:
6818
diff
changeset
|
1864 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1865 def do_restore(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1866 ''"""Usage: restore designator[,designator]* |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1867 Restore the retired node specified by designator. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1868 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1869 A designator is a classname and a nodeid concatenated, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1870 eg. bug1, user10, ... |
|
6957
f924af12ef50
issue2551233 - create new roundup-admin command "templates"
John Rouillard <rouilj@ieee.org>
parents:
6818
diff
changeset
|
1871 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1872 The given nodes will become available for users again. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1873 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1874 if len(args) < 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1875 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1876 designators = args[0].split(',') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1877 for designator in designators: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1878 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1879 classname, nodeid = hyperdb.splitDesignator(designator) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1880 except hyperdb.DesignatorError as message: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1881 raise UsageError(message) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1882 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1883 dbclass = self.db.getclass(classname) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1884 except KeyError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1885 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1886 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1887 dbclass.restore(nodeid) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1888 except KeyError as e: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1889 raise UsageError(e.args[0]) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1890 except IndexError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1891 raise UsageError(_('no such %(classname)s node ' |
|
8105
e579aef218aa
fix: broken translatable error message template
John Rouillard <rouilj@ieee.org>
parents:
8095
diff
changeset
|
1892 '"%(nodeid)s"') % locals()) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1893 self.db_uncommitted = True |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1894 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1895 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1896 def do_retire(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1897 ''"""Usage: retire designator[,designator]* |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1898 Retire the node specified by designator. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1899 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1900 A designator is a classname and a nodeid concatenated, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1901 eg. bug1, user10, ... |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1902 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1903 This action indicates that a particular node is not to be retrieved |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1904 by the list or find commands, and its key value may be re-used. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1905 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1906 if len(args) < 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1907 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1908 designators = args[0].split(',') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1909 for designator in designators: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1910 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1911 classname, nodeid = hyperdb.splitDesignator(designator) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1912 except hyperdb.DesignatorError as message: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1913 raise UsageError(message) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1914 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1915 self.db.getclass(classname).retire(nodeid) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1916 except KeyError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1917 raise UsageError(_('no such class "%(classname)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1918 except IndexError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1919 raise UsageError(_('no such %(classname)s node ' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1920 '"%(nodeid)s"') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1921 self.db_uncommitted = True |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1922 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1923 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
1924 def do_rollback(self, args): # noqa: ARG002 - args unused |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1925 ''"""Usage: rollback |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1926 Undo all changes that are pending commit to the database. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1927 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1928 The changes made during an interactive session are not |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1929 automatically written to the database - they must be committed |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1930 manually. This command undoes all those changes, so a commit |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1931 immediately after would make no changes to the database. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1932 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1933 self.db.rollback() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1934 self.db_uncommitted = False |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1935 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1936 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1937 def do_security(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1938 ''"""Usage: security [Role name] |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1939 Display the Permissions available to one or all Roles. |
|
6957
f924af12ef50
issue2551233 - create new roundup-admin command "templates"
John Rouillard <rouilj@ieee.org>
parents:
6818
diff
changeset
|
1940 |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1941 Also validates that any properties defined in a |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1942 permission are valid. |
|
7379
40cab56a97f1
Document that security subcommand reports invalid properties.
John Rouillard <rouilj@ieee.org>
parents:
7375
diff
changeset
|
1943 |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1944 Run this after changing your permissions to catch |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
1945 typos. |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1946 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1947 if len(args) == 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1948 role = args[0] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1949 try: |
|
7650
4de48eadf5f4
bug: Fix roundup-admin security command. Lowercase optionalarg.
John Rouillard <rouilj@ieee.org>
parents:
7588
diff
changeset
|
1950 roles = [(args[0].lower(), |
|
4de48eadf5f4
bug: Fix roundup-admin security command. Lowercase optionalarg.
John Rouillard <rouilj@ieee.org>
parents:
7588
diff
changeset
|
1951 self.db.security.role[args[0].lower()])] |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1952 except KeyError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1953 sys.stdout.write(_('No such Role "%(role)s"\n') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1954 return 1 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1955 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1956 roles = list(self.db.security.role.items()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1957 role = self.db.config.NEW_WEB_USER_ROLES |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1958 if ',' in role: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1959 sys.stdout.write(_('New Web users get the Roles "%(role)s"\n') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1960 % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1961 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1962 sys.stdout.write(_('New Web users get the Role "%(role)s"\n') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1963 % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1964 role = self.db.config.NEW_EMAIL_USER_ROLES |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1965 if ',' in role: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1966 sys.stdout.write(_('New Email users get the Roles "%(role)s"\n') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1967 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1968 sys.stdout.write(_('New Email users get the Role "%(role)s"\n') % locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1969 roles.sort() |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1970 for _rolename, role in roles: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1971 sys.stdout.write(_('Role "%(name)s":\n') % role.__dict__) |
|
8119
c12377fb4144
Change permission representation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8105
diff
changeset
|
1972 for permission in role.permission_list(): |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1973 d = permission.__dict__ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1974 if permission.klass: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1975 if permission.properties: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1976 sys.stdout.write(_( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1977 ' %(description)s (%(name)s for "%(klass)s"' + |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1978 ': %(properties)s only)\n') % d) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1979 # verify that properties exist; report bad props |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1980 bad_props = [] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1981 cl = self.db.getclass(permission.klass) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1982 class_props = cl.getprops(protected=True) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1983 for p in permission.properties: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1984 if p in class_props: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1985 continue |
|
7773
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1986 |
|
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
1987 bad_props.append(p) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1988 if bad_props: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1989 sys.stdout.write(_( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1990 '\n **Invalid properties for %(class)s: ' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1991 '%(props)s\n\n') % { |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1992 "class": permission.klass, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1993 "props": bad_props}) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1994 return 1 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1995 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1996 sys.stdout.write(_(' %(description)s (%(name)s for ' |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1997 '"%(klass)s" only)\n') % d) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1998 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
1999 sys.stdout.write(_(' %(description)s (%(name)s)\n') % d) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2000 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2001 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2002 def do_set(self, args): |
|
7380
6480443c2607
set items can take 1 or more property=value
John Rouillard <rouilj@ieee.org>
parents:
7379
diff
changeset
|
2003 ''"""Usage: set items property=value [property=value ...] |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2004 Set the given properties of one or more items(s). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2005 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2006 The items are specified as a class or as a comma-separated |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2007 list of item designators (ie "designator[,designator,...]"). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2008 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2009 A designator is a classname and a nodeid concatenated, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2010 eg. bug1, user10, ... |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2011 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2012 This command sets the properties to the values for all |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2013 designators given. If a class is used, the property will be |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2014 set for all items in the class. If the value is missing |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2015 (ie. "property=") then the property is un-set. If the property |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2016 is a multilink, you specify the linked ids for the multilink |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2017 as comma-separated numbers (ie "1,2,3"). |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2018 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2019 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2020 import copy # needed for copying props list |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2021 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2022 if len(args) < 2: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2023 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2024 from roundup import hyperdb |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2025 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2026 designators = args[0].split(',') |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2027 if len(designators) == 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2028 designator = designators[0] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2029 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2030 designator = hyperdb.splitDesignator(designator) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2031 designators = [designator] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2032 except hyperdb.DesignatorError: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2033 cl = self.get_class(designator) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2034 designators = [(designator, x) for x in cl.list()] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2035 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2036 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2037 designators = [hyperdb.splitDesignator(x) for x in designators] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2038 except hyperdb.DesignatorError as message: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2039 raise UsageError(message) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2040 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2041 # get the props from the args |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2042 propset = self.props_from_args(args[1:]) # parse the cli once |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2043 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2044 # now do the set for all the nodes |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2045 for classname, itemid in designators: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2046 props = copy.copy(propset) # make a new copy for every designator |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2047 cl = self.get_class(classname) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2048 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2049 try: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2050 for key, value in list(props.items()): |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2051 # You must reinitialize the props every time though. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2052 # if props['nosy'] = '+admin' initally, it gets |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2053 # set to 'demo,admin' (assuming it was set to demo |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2054 # in the db) after rawToHyperdb returns. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2055 # This new value is used for all the rest of the |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2056 # designators if not reinitalized. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2057 props[key] = hyperdb.rawToHyperdb(self.db, cl, itemid, |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2058 key, value) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2059 except hyperdb.HyperdbValueError as message: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2060 raise UsageError(message) |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2061 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2062 # try the set |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2063 try: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2064 cl.set(itemid, **props) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2065 except (TypeError, IndexError, ValueError) as message: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2066 raise UsageError(message) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2067 self.db_uncommitted = True |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2068 return 0 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2069 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2070 def do_specification(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2071 ''"""Usage: specification classname |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2072 Show the properties for a classname. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2073 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2074 This lists the properties for a given class. |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2075 """ |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2076 if len(args) < 1: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2077 raise UsageError(_('Not enough arguments supplied')) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2078 classname = args[0] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2079 # get the class |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2080 cl = self.get_class(classname) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2081 |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2082 # get the key property |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2083 keyprop = cl.getkey() |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2084 properties = cl.getprops() if self.settings['display_protected'] \ |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2085 else cl.properties |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2086 |
|
7543
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
2087 for key in properties: |
|
fc9daba984c0
- issue2551103 - add pragma 'display_protected' to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7439
diff
changeset
|
2088 value = properties[key] |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2089 if keyprop == key: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2090 sys.stdout.write(_('%(key)s: %(value)s (key property)\n') % |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2091 locals()) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2092 else: |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2093 sys.stdout.write(_('%(key)s: %(value)s\n') % locals()) |
|
6957
f924af12ef50
issue2551233 - create new roundup-admin command "templates"
John Rouillard <rouilj@ieee.org>
parents:
6818
diff
changeset
|
2094 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2095 def do_table(self, args): |
|
4073
145b32238093
Revert docstring markup for use with gettext tool.
Stefan Seefeld <stefan@seefeld.name>
parents:
4067
diff
changeset
|
2096 ''"""Usage: table classname [property[,property]*] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2097 List the instances of a class in tabular form. |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2098 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2099 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
|
2100 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
|
2101 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
|
2102 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
|
2103 For example:: |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
2104 |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2105 roundup> table priority id,name:10 |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2106 Id Name |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2107 1 fatal-bug |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2108 2 bug |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2109 3 usability |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2110 4 feature |
|
1544
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
2111 |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
2112 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
|
2113 leave a trailing : without a width on the property. For example:: |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1916
diff
changeset
|
2114 |
|
8393
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2115 roundup> table priority id,name: |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2116 Id Name |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2117 1 fata |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2118 2 bug |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2119 3 usab |
|
e5d07fac0249
build: remove extra <p></p> generated by blank lines.
John Rouillard <rouilj@ieee.org>
parents:
8296
diff
changeset
|
2120 4 feat |
|
1544
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
2121 |
|
6db2cbcd390e
finally, tables autosize columns [SF#609070]
Richard Jones <richard@users.sourceforge.net>
parents:
1539
diff
changeset
|
2122 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
|
2123 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2124 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
|
2125 raise UsageError(_('Not enough arguments supplied')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2126 classname = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2127 |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
2128 retired = self.settings['_retired_val'] |
|
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
2129 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2130 # get the class |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2131 cl = self.get_class(classname) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2132 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2133 # figure the property names to display |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2134 if len(args) > 1: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2135 prop_names = args[1].split(',') |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2136 all_props = cl.getprops() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2137 for spec in prop_names: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2138 if ':' in spec: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2139 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2140 propname, width = spec.split(':') |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2141 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
|
2142 raise UsageError(_('"%(spec)s" not ' |
| 6180 | 2143 'name:width') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2144 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2145 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
|
2146 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
|
2147 raise UsageError(_('%(classname)s has no property ' |
| 6180 | 2148 '"%(propname)s"') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2149 else: |
|
4357
13b3155869e0
Beginnings of a big code cleanup / modernisation to make 2to3 happy
Richard Jones <richard@users.sourceforge.net>
parents:
4299
diff
changeset
|
2150 prop_names = cl.getprops() |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2151 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2152 # now figure column widths |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2153 props = [] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2154 for spec in prop_names: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2155 if ':' in spec: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2156 name, width = spec.split(':') |
| 1546 | 2157 if width == '': |
| 6585 | 2158 # spec includes trailing :, use label/name width |
|
6198
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
2159 props.append((name, len(name))) |
| 1546 | 2160 else: |
|
6198
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
2161 try: |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
2162 props.append((name, int(width))) |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
2163 except ValueError: |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
2164 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
|
2165 'integer width: "%(width)s"') % |
|
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
2166 locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2167 else: |
| 6180 | 2168 # this is going to be slow |
| 2169 maxlen = len(spec) | |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
2170 for nodeid in cl.getnodeids(retired=retired): |
| 6180 | 2171 curlen = len(str(cl.get(nodeid, spec))) |
| 2172 if curlen > maxlen: | |
| 2173 maxlen = curlen | |
|
6198
39513b36ca59
Add set tests. Test and fix table command.
John Rouillard <rouilj@ieee.org>
parents:
6195
diff
changeset
|
2174 props.append((spec, maxlen)) |
|
2307
f786a1b9dbdf
translatabe strings adjustments, postponed help text translation
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2215
diff
changeset
|
2175 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2176 # now display the heading |
| 6180 | 2177 print(' '.join([name.capitalize().ljust(width) |
| 2178 for name, width in props])) | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2179 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2180 # and the table data |
|
7547
c8c4514f4c3e
issue685275 - show retired/unretire commands
John Rouillard <rouilj@ieee.org>
parents:
7546
diff
changeset
|
2181 for nodeid in cl.getnodeids(retired=retired): |
| 6585 | 2182 table_columns = [] |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2183 for name, width in props: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2184 if name != 'id': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2185 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2186 value = str(cl.get(nodeid, name)) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2187 except KeyError: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2188 # we already checked if the property is valid - a |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2189 # KeyError here means the node just doesn't have a |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2190 # value for it |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2191 value = '' |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2192 else: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2193 value = str(nodeid) |
| 6180 | 2194 f = '%%-%ds' % width |
| 6585 | 2195 table_columns.append(f % value[:width]) |
| 2196 print(' '.join(table_columns)) | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2197 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2198 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2199 def do_templates(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2200 ''"""Usage: templates [trace_search] |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2201 List templates and their installed directories. |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2202 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2203 With trace_search also list all directories that are |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2204 searched for templates. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
2205 """ |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2206 import textwrap |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6430
diff
changeset
|
2207 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2208 trace_search = False |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2209 if args and args[0] == "trace_search": |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2210 trace_search = True |
|
3669
07d1d8e22271
new "exporttables" command in roundup-admin [SF#1533791]
Richard Jones <richard@users.sourceforge.net>
parents:
3641
diff
changeset
|
2211 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2212 templates = self.listTemplates(trace_search=trace_search) |
|
3179
88dbe6b3d891
merge removal of rcsv
Richard Jones <richard@users.sourceforge.net>
parents:
2998
diff
changeset
|
2213 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2214 for name in sorted(templates.keys()): |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2215 templates[name]['description'] = textwrap.fill( |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2216 "\n".join([line.lstrip() for line in |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2217 templates[name]['description'].split("\n")]), |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2218 70, |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2219 subsequent_indent=" ", |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2220 ) |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2221 print(""" |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2222 Name: %(name)s |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2223 Path: %(path)s |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2224 Desc: %(description)s |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2225 """ % templates[name]) |
|
562
62febbd7ffec
You can now use the roundup-admin tool to pack the database
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
529
diff
changeset
|
2226 |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2227 def do_updateconfig(self, args): |
|
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2228 ''"""Usage: updateconfig <filename> |
|
8095
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
2229 Merge existing tracker config with new settings. |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
2230 |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
2231 Output the updated config file to <filename>. Use current |
|
5aed4911836b
docs: normalize all help strings and make html output look better.
John Rouillard <rouilj@ieee.org>
parents:
8091
diff
changeset
|
2232 settings from existing roundup tracker in tracker home. |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
2233 """ |
|
7250
ee972b3073cb
alphabetize all do_X methods.
John Rouillard <rouilj@ieee.org>
parents:
7249
diff
changeset
|
2234 self.do_genconfig(args, update=True) |
|
7209
c1227f883177
Implement password hash testing using new roundup-admin perftest.
John Rouillard <rouilj@ieee.org>
parents:
7207
diff
changeset
|
2235 |
|
7392
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2236 def usageError_feedback(self, message, function): |
|
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2237 print(_('Error: %s') % message) |
|
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2238 print() |
|
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2239 print(function.__doc__) |
|
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2240 return 1 |
|
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2241 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2242 def run_command(self, args): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
2243 """Run a single command |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
2244 """ |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2245 command = args[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2246 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2247 # handle help now |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2248 if command == 'help': |
| 6180 | 2249 if len(args) > 1: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2250 self.do_help(args[1:]) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2251 else: |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2252 self.do_help(['help']) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2253 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2254 if command == 'morehelp': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2255 self.do_help(['help']) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2256 self.help_commands() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2257 self.help_all() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2258 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2259 |
|
7998
851ddd72f9ce
issue2550983 - help_commands_html unused
John Rouillard <rouilj@ieee.org>
parents:
7882
diff
changeset
|
2260 if command == 'htmlhelp': |
|
851ddd72f9ce
issue2550983 - help_commands_html unused
John Rouillard <rouilj@ieee.org>
parents:
7882
diff
changeset
|
2261 self.help_commands_html() |
|
851ddd72f9ce
issue2550983 - help_commands_html unused
John Rouillard <rouilj@ieee.org>
parents:
7882
diff
changeset
|
2262 return 0 |
|
851ddd72f9ce
issue2550983 - help_commands_html unused
John Rouillard <rouilj@ieee.org>
parents:
7882
diff
changeset
|
2263 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2264 # figure what the command is |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2265 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2266 functions = self.commands.get(command) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2267 except KeyError: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2268 # not a valid command |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
2269 print(_('Unknown command "%(command)s" ("help commands" for a ' |
| 6585 | 2270 'list)') % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2271 return 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2272 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2273 # check for multiple matches |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2274 if len(functions) > 1: |
| 6585 | 2275 print(_('Multiple commands match "%(command)s": %(list)s') % |
| 6180 | 2276 {'command': command, |
| 2277 'list': ', '.join([i[0] for i in functions])}) | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2278 return 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2279 command, function = functions[0] |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2280 |
|
7392
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2281 if command in ['genconfig', 'templates']: |
|
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2282 try: |
|
7773
ac2c034542e6
chore: reduce nesting if/elif/else blocks; uneeded var assignment
John Rouillard <rouilj@ieee.org>
parents:
7755
diff
changeset
|
2283 return function(args[1:]) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2284 except UsageError as message: |
| 7566 | 2285 return self.usageError_feedback(message, function) |
|
7392
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2286 |
| 1098 | 2287 # make sure we have a tracker_home |
| 2288 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
|
2289 if not self.force: |
|
7182
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
2290 self.tracker_home = self.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
|
2291 else: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
2292 self.tracker_home = os.curdir |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2293 |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
2294 # 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
|
2295 if command == 'initialise': |
|
656
eae9b69a0115
[SF#527416] roundup-admin uses undefined value
Richard Jones <richard@users.sourceforge.net>
parents:
649
diff
changeset
|
2296 try: |
| 1098 | 2297 return self.do_initialise(self.tracker_home, args) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2298 except UsageError as message: |
| 7566 | 2299 return self.usageError_feedback(message, function) |
|
738
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
2300 elif command == 'install': |
|
7e093cbaaa98
split instance initialisation into two steps...
Richard Jones <richard@users.sourceforge.net>
parents:
698
diff
changeset
|
2301 try: |
| 1098 | 2302 return self.do_install(self.tracker_home, args) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2303 except UsageError as message: |
| 7566 | 2304 return self.usageError_feedback(message, function) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2305 |
| 1098 | 2306 # get the tracker |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2307 try: |
|
7253
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
2308 if self.tracker and not self.settings['_reopen_tracker']: |
|
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
2309 tracker = self.tracker |
|
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
2310 else: |
|
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
2311 if self.settings["verbose"]: |
|
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
2312 print("Reopening tracker") |
|
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
2313 tracker = roundup.instance.open(self.tracker_home) |
|
393ae88bf7b1
Cache result of tracker open in roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
7252
diff
changeset
|
2314 self.tracker = tracker |
|
7544
4c90a57c89e3
initialize indexer_backend pragma from config.
John Rouillard <rouilj@ieee.org>
parents:
7543
diff
changeset
|
2315 self.settings['indexer_backend'] = self.tracker.config['INDEXER'] |
|
4c90a57c89e3
initialize indexer_backend pragma from config.
John Rouillard <rouilj@ieee.org>
parents:
7543
diff
changeset
|
2316 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2317 except ValueError as message: # noqa: F841 -- used from locals |
| 1098 | 2318 self.tracker_home = '' |
| 6180 | 2319 print(_("Error: Couldn't open tracker: %(message)s") % locals()) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2320 return 1 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2321 except NoConfigError as message: # noqa: F841 -- used from locals |
|
5230
62a88d69ac52
Add new command updateconfig to admin command. This acts like
John Rouillard <rouilj@ieee.org>
parents:
5229
diff
changeset
|
2322 self.tracker_home = '' |
| 6180 | 2323 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
|
2324 return 1 |
| 6959 | 2325 # message used via locals |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2326 except ParsingOptionError as message: # noqa: F841 -- used from locals |
|
6557
8687c096a945
Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
2327 print("%(message)s" % locals()) |
|
8687c096a945
Handle configparser.InterpolationSyntaxError
John Rouillard <rouilj@ieee.org>
parents:
6527
diff
changeset
|
2328 return 1 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2329 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2330 # only open the database once! |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2331 if not self.db: |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
2332 self.db = tracker.open(self.name) |
| 7439 | 2333 # don't use tracker.config["TRACKER_LANGUAGE"] here as the |
|
6658
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6585
diff
changeset
|
2334 # cli operator likely wants to have i18n as set in the |
|
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6585
diff
changeset
|
2335 # environment. |
|
408fd477761f
Add i18n object to roundupdb.Database
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6585
diff
changeset
|
2336 # This is needed to fetch the locale's of the tracker's home dir. |
| 6959 | 2337 self.db.i18n = get_translation(tracker_home=tracker.tracker_home) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2338 |
| 4781 | 2339 self.db.tx_Source = 'cli' |
| 2340 | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2341 # do the command |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2342 ret = 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2343 try: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2344 ret = function(args[1:]) |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2345 except UsageError as message: |
|
7392
bd6523c84a95
Fix test failure caused by making genconfig trackerless
John Rouillard <rouilj@ieee.org>
parents:
7380
diff
changeset
|
2346 ret = self.usageError_feedback(message, function) |
| 6180 | 2347 except Exception: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2348 import traceback |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2349 traceback.print_exc() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2350 ret = 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2351 return ret |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2352 |
|
7802
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2353 def history_features(self, feature): |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2354 """ self.settings['history_features'] = 0: load rc, load/save history |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2355 self.settings['history_features'] = 1: do not load history |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2356 self.settings['history_features'] = 2: do not save history |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2357 self.settings['history_features'] = 4: don't load rc |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2358 """ |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2359 |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2360 features = { # bit bashing |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2361 'load_history': 1, |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2362 'save_history': 2, |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2363 'load_rc': 4} |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2364 |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2365 # setting the bit disables the feature, so use not. |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2366 return not self.settings['history_features'] & features[feature] |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2367 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2368 def interactive(self): |
|
4067
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
2369 """Run in an interactive mode |
|
7309ac3b6e24
Uniformly use """...""" instead of '''...''' for comments.
Stefan Seefeld <stefan@seefeld.name>
parents:
4066
diff
changeset
|
2370 """ |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2371 print(_('Roundup %s ready for input.\nType "help" for help.') |
|
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2372 % roundup_version) |
|
7795
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2373 |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2374 initfile = os.path.join(os.path.expanduser("~"), |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2375 ".roundup_admin_rlrc") |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2376 histfile = os.path.join(os.path.expanduser("~"), |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2377 ".roundup_admin_history") |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2378 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2379 try: |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
2380 import readline |
|
7798
f84f7879c768
fix: handle case where readline init file is missing
John Rouillard <rouilj@ieee.org>
parents:
7797
diff
changeset
|
2381 try: |
|
7802
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2382 if self.history_features('load_rc'): |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2383 readline.read_init_file(initfile) |
|
7799
10da9e12c10f
fix: replace FileNotFoundError with IOError
John Rouillard <rouilj@ieee.org>
parents:
7798
diff
changeset
|
2384 except IOError: # FileNotFoundError under python3 |
|
7798
f84f7879c768
fix: handle case where readline init file is missing
John Rouillard <rouilj@ieee.org>
parents:
7797
diff
changeset
|
2385 # file is optional |
|
f84f7879c768
fix: handle case where readline init file is missing
John Rouillard <rouilj@ieee.org>
parents:
7797
diff
changeset
|
2386 pass |
|
f84f7879c768
fix: handle case where readline init file is missing
John Rouillard <rouilj@ieee.org>
parents:
7797
diff
changeset
|
2387 |
|
7795
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2388 try: |
|
7802
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2389 if self.history_features('load_history'): |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2390 readline.read_history_file(histfile) |
|
7799
10da9e12c10f
fix: replace FileNotFoundError with IOError
John Rouillard <rouilj@ieee.org>
parents:
7798
diff
changeset
|
2391 except IOError: # FileNotFoundError under python3 |
|
7795
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2392 # no history file yet |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2393 pass |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2394 |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2395 # Default history length is unlimited. |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2396 # Set persistently in readline init file |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2397 # Pragma history_length allows setting on a per |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2398 # invocation basis at startup |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2399 if self.settings['history_length'] != -1: |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2400 readline.set_history_length( |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2401 self.settings['history_length']) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2402 except ImportError: |
|
7795
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2403 readline = None |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
2404 print(_('Note: command history and editing not available')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2405 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2406 while 1: |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2407 try: |
|
7182
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
2408 command = self.my_input('roundup> ') |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2409 except EOFError: |
|
5250
ac7fe3483206
Make admin.py 2/3-agnostic.
Eric S. Raymond <esr@thyrsus.com>
parents:
5248
diff
changeset
|
2410 print(_('exit...')) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2411 break |
| 6959 | 2412 if not command: continue # noqa: E701 |
|
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
|
2413 try: |
|
7178
db06d4aeb978
unshadow stdlib token from roundup's token.
John Rouillard <rouilj@ieee.org>
parents:
7093
diff
changeset
|
2414 args = token_r.token_split(command) |
|
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
|
2415 except ValueError: |
| 6180 | 2416 continue # Ignore invalid quoted token |
| 6959 | 2417 if not args: continue # noqa: E701 |
| 2418 if args[0] in ('quit', 'exit'): break # noqa: E701 | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2419 self.run_command(args) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2420 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2421 # 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
|
2422 if self.db and self.db_uncommitted: |
|
7182
0c6617db0b97
Add testing interactive mode to roundup_admin. remove redundant imports
John Rouillard <rouilj@ieee.org>
parents:
7178
diff
changeset
|
2423 commit = self.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
|
2424 if commit and commit[0].lower() == 'y': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2425 self.db.commit() |
|
7795
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2426 |
|
d7d68da9878f
save roundup-admin history between sessions.
John Rouillard <rouilj@ieee.org>
parents:
7773
diff
changeset
|
2427 # looks like histfile is saved with mode 600 |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
2428 if readline and self.history_features('save_history'): |
|
7802
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2429 readline.write_history_file(histfile) |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2430 return 0 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2431 |
|
7752
b2dbab2b34bc
fix(refactor): multiple fixups using ruff linter; more testing.
John Rouillard <rouilj@ieee.org>
parents:
7687
diff
changeset
|
2432 def main(self): # noqa: PLR0912, PLR0911 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2433 try: |
|
7546
534f8bdb8f94
Add -P pragma=value command line option to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7545
diff
changeset
|
2434 opts, args = getopt.getopt(sys.argv[1:], 'i:u:hcdP:sS:vV') |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5245
diff
changeset
|
2435 except getopt.GetoptError as e: |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2436 self.usage(str(e)) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2437 return 1 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2438 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2439 # handle command-line args |
| 1098 | 2440 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
|
2441 self.name = 'admin' |
|
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
2442 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
|
2443 if 'ROUNDUP_LOGIN' in os.environ: |
| 6585 | 2444 login_env = os.environ['ROUNDUP_LOGIN'].split(':') |
| 2445 self.name = login_env[0] | |
| 2446 if len(login_env) > 1: | |
| 2447 self.password = login_env[1] | |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
2448 self.separator = None |
|
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
2449 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
|
2450 self.verbose = 0 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2451 for opt, arg in opts: |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
2452 if opt == '-h': |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2453 self.usage() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2454 return 0 |
|
7797
8bdf0484215c
Summary: feat: roundup-admin history command has human interpretable output
John Rouillard <rouilj@ieee.org>
parents:
7796
diff
changeset
|
2455 elif opt == '-v': # noqa: RET505 - allow elif after returns |
| 6180 | 2456 print('%s (python %s)' % (roundup_version, |
| 2457 sys.version.split()[0])) | |
|
2186
3f89c8ffe4f1
version info in scripts
Richard Jones <richard@users.sourceforge.net>
parents:
2184
diff
changeset
|
2458 return 0 |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
2459 elif opt == '-V': |
|
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
2460 self.verbose = 1 |
|
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
2461 elif opt == '-i': |
| 1098 | 2462 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
|
2463 elif opt == '-c': |
| 6180 | 2464 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
|
2465 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
|
2466 return 1 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
2467 self.separator = ',' |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
2468 elif opt == '-S': |
| 6180 | 2469 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
|
2470 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
|
2471 return 1 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
2472 self.separator = arg |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
2473 elif opt == '-s': |
| 6180 | 2474 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
|
2475 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
|
2476 return 1 |
|
1566
053065585406
added command-line functionality for roundup-adming (feature [SF#687664])
Richard Jones <richard@users.sourceforge.net>
parents:
1563
diff
changeset
|
2477 self.separator = ' ' |
|
3602
064515f658e8
verbose output during import is optional now [SF#1475624]
Richard Jones <richard@users.sourceforge.net>
parents:
3544
diff
changeset
|
2478 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
|
2479 self.print_designator = 1 |
|
7546
534f8bdb8f94
Add -P pragma=value command line option to roundup-admin.
John Rouillard <rouilj@ieee.org>
parents:
7545
diff
changeset
|
2480 elif opt == '-P': |
|
7802
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2481 try: |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2482 self.do_pragma([arg]) |
|
7c0a8088b053
feat: add support for controlling readline history features
John Rouillard <rouilj@ieee.org>
parents:
7800
diff
changeset
|
2483 except UsageError as e: |
|
7832
b530069f3120
chore(lint): formatting whitespace consolidate nested if ...
John Rouillard <rouilj@ieee.org>
parents:
7821
diff
changeset
|
2484 print('\n%s\n' % e) |
|
5979
33a7b10618a6
Add support for -u to roundup-admin
John Rouillard <rouilj@ieee.org>
parents:
5897
diff
changeset
|
2485 elif opt == '-u': |
| 6585 | 2486 login_opt = arg.split(':') |
| 2487 self.name = login_opt[0] | |
| 2488 if len(login_opt) > 1: | |
| 2489 self.password = login_opt[1] | |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2490 |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2491 # if no command - go interactive |
|
1133
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2492 # 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
|
2493 ret = 0 |
|
1133
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2494 try: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2495 if not args: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2496 self.interactive() |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2497 else: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2498 ret = self.run_command(args) |
| 6959 | 2499 if self.db: self.db.commit() # noqa: E701 |
|
1133
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2500 return ret |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2501 finally: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2502 if self.db: |
|
36ec30d286ea
Cleaned up CHANGES/TODO
Richard Jones <richard@users.sourceforge.net>
parents:
1108
diff
changeset
|
2503 self.db.close() |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2504 |
| 6180 | 2505 |
|
484
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2506 if __name__ == '__main__': |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2507 tool = AdminTool() |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2508 sys.exit(tool.main()) |
|
b35f229dd049
I18N'ed roundup admin...
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2509 |
|
2767
f6072f395f87
do_install: consider both old- and new-style layouts in reinstall check;
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2736
diff
changeset
|
2510 # vim: set filetype=python sts=4 sw=4 et si : |
