diff --git a/roundup/admin.py b/roundup/admin.py
index 440b0971f6f4e9fae84cb987d8f04bf22dd0473d..51710810eafa2a7876bea19887604788e8505d10 100644 (file)
--- a/roundup/admin.py
+++ b/roundup/admin.py
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#
-# $Id: admin.py,v 1.24 2002-09-09 23:55:18 richard Exp $
+# $Id: admin.py,v 1.27 2002-09-10 07:07:16 richard Exp $
import sys, os, getpass, getopt, re, UserDict, shlex, shutil
try:
for k in AdminTool.__dict__.keys():
if k[:5] == 'help_':
self.help[k[5:]] = getattr(self, k)
- self.instance_home = ''
+ self.tracker_home = ''
self.db = None
def get_class(self, classname):
def usage(self, message=''):
if message:
message = _('Problem: %(message)s)\n\n')%locals()
- print _('''%(message)sUsage: roundup-admin [-i instance home] [-u login] [-c] <command> <arguments>
+ print _('''%(message)sUsage: roundup-admin [options] <command> <arguments>
+
+Options:
+ -i instance home -- specify the issue tracker "home directory" to administer
+ -u -- the user[:password] to use for commands
+ -c -- when outputting lists of data, just comma-separate them
Help:
roundup-admin -h
roundup-admin help -- this help
roundup-admin help <command> -- command-specific help
roundup-admin help all -- all available help
-Options:
- -i instance home -- specify the issue tracker "home directory" to administer
- -u -- the user[:password] to use for commands
- -c -- when outputting lists of data, just comma-separate them''')%locals()
+''')%locals()
self.help_commands()
def help_commands(self):
def help_all(self):
print _('''
-All commands (except help) require an instance specifier. This is just the path
-to the roundup instance you're working with. A roundup instance is where
+All commands (except help) require a tracker specifier. This is just the path
+to the roundup tracker you're working with. A roundup tracker is where
roundup keeps the database and configuration file that defines an issue
tracker. It may be thought of as the issue tracker's "home directory". It may
-be specified in the environment variable ROUNDUP_INSTANCE or on the command
-line as "-i instance".
+be specified in the environment variable TRACKER_HOME or on the command
+line as "-i tracker".
A designator is a classname and a nodeid concatenated, eg. bug1, user10, ...
backends = roundup.backends.__all__
print _('Back ends:'), ', '.join(backends)
- def do_install(self, instance_home, args):
+ def do_install(self, tracker_home, args):
'''Usage: install [template [backend [admin password]]]
- Install a new Roundup instance.
+ Install a new Roundup tracker.
- The command will prompt for the instance home directory (if not supplied
- through INSTANCE_HOME or the -i option). The template, backend and admin
+ The command will prompt for the tracker home directory (if not supplied
+ through TRACKER_HOME or the -i option). The template, backend and admin
password may be specified on the command-line as arguments, in that
order.
The initialise command must be called after this command in order
- to initialise the instance's database. You may edit the instance's
+ to initialise the tracker's database. You may edit the tracker's
initial database contents before running that command by editing
- the instance's dbinit.py module init() function.
+ the tracker's dbinit.py module init() function.
See also initopts help.
'''
if len(args) < 1:
raise UsageError, _('Not enough arguments supplied')
- # make sure the instance home can be created
- parent = os.path.split(instance_home)[0]
+ # make sure the tracker home can be created
+ parent = os.path.split(tracker_home)[0]
if not os.path.exists(parent):
raise UsageError, _('Instance home parent directory "%(parent)s"'
' does not exist')%locals()
backend = 'anydbm'
# install!
- init.install(instance_home, template, backend)
+ init.install(tracker_home, template, backend)
print _('''
- You should now edit the instance configuration file:
+ You should now edit the tracker configuration file:
%(config_file)s
... at a minimum, you must set MAILHOST, MAIL_DOMAIN and ADMIN_EMAIL.
%(database_config_file)s
... see the documentation on customizing for more information.
''')%{
- 'config_file': os.path.join(instance_home, 'config.py'),
- 'database_config_file': os.path.join(instance_home, 'dbinit.py')
+ 'config_file': os.path.join(tracker_home, 'config.py'),
+ 'database_config_file': os.path.join(tracker_home, 'dbinit.py')
}
return 0
- def do_initialise(self, instance_home, args):
+ def do_initialise(self, tracker_home, args):
'''Usage: initialise [adminpw]
- Initialise a new Roundup instance.
+ Initialise a new Roundup tracker.
The administrator details will be set at this step.
- Execute the instance's initialisation function dbinit.init()
+ Execute the tracker's initialisation function dbinit.init()
'''
# password
if len(args) > 1:
adminpw = getpass.getpass(_('Admin Password: '))
confirm = getpass.getpass(_(' Confirm: '))
- # make sure the instance home is installed
- if not os.path.exists(instance_home):
+ # make sure the tracker home is installed
+ if not os.path.exists(tracker_home):
raise UsageError, _('Instance home does not exist')%locals()
- if not os.path.exists(os.path.join(instance_home, 'html')):
+ if not os.path.exists(os.path.join(tracker_home, 'html')):
raise UsageError, _('Instance has not been installed')%locals()
# is there already a database?
- if os.path.exists(os.path.join(instance_home, 'db')):
+ if os.path.exists(os.path.join(tracker_home, 'db')):
print _('WARNING: The database is already initialised!')
print _('If you re-initialise it, you will lose all the data!')
ok = raw_input(_('Erase it? Y/[N]: ')).strip()
return 0
# nuke it
- shutil.rmtree(os.path.join(instance_home, 'db'))
+ shutil.rmtree(os.path.join(tracker_home, 'db'))
# GO
- init.initialise(instance_home, adminpw)
+ init.initialise(tracker_home, adminpw)
return 0
def do_reindex(self, args):
'''Usage: reindex
- Re-generate an instance's search indexes.
+ Re-generate a tracker's search indexes.
- This will re-generate the search indexes for an instance. This will
+ This will re-generate the search indexes for a tracker. This will
typically happen automatically.
'''
self.db.indexer.force_reindex()
return 1
command, function = functions[0]
- # make sure we have an instance_home
- while not self.instance_home:
- self.instance_home = raw_input(_('Enter instance home: ')).strip()
+ # make sure we have a tracker_home
+ while not self.tracker_home:
+ self.tracker_home = raw_input(_('Enter tracker home: ')).strip()
# before we open the db, we may be doing an install or init
if command == 'initialise':
try:
- return self.do_initialise(self.instance_home, args)
+ return self.do_initialise(self.tracker_home, args)
except UsageError, message:
print _('Error: %(message)s')%locals()
return 1
elif command == 'install':
try:
- return self.do_install(self.instance_home, args)
+ return self.do_install(self.tracker_home, args)
except UsageError, message:
print _('Error: %(message)s')%locals()
return 1
- # get the instance
+ # get the tracker
try:
- instance = roundup.instance.open(self.instance_home)
+ tracker = roundup.instance.open(self.tracker_home)
except ValueError, message:
- self.instance_home = ''
- print _("Error: Couldn't open instance: %(message)s")%locals()
+ self.tracker_home = ''
+ print _("Error: Couldn't open tracker: %(message)s")%locals()
return 1
# only open the database once!
if not self.db:
- self.db = instance.open('admin')
+ self.db = tracker.open('admin')
# do the command
ret = 0
return 1
# handle command-line args
- self.instance_home = os.environ.get('ROUNDUP_INSTANCE', '')
+ self.tracker_home = os.environ.get('TRACKER_HOME', '')
# TODO: reinstate the user/password stuff (-u arg too)
name = password = ''
if os.environ.has_key('ROUNDUP_LOGIN'):
self.usage()
return 0
if opt == '-i':
- self.instance_home = arg
+ self.tracker_home = arg
if opt == '-c':
self.comma_sep = 1
tool = AdminTool()
sys.exit(tool.main())
-#
-# $Log: not supported by cvs2svn $
-# Revision 1.23 2002/08/19 02:53:27 richard
-# full database export and import is done
-#
-# Revision 1.22 2002/08/16 04:26:42 richard
-# moving towards full database export
-#
-# Revision 1.21 2002/08/01 01:07:37 richard
-# include info about new user roles
-#
-# Revision 1.20 2002/08/01 00:56:22 richard
-# Added the web access and email access permissions, so people can restrict
-# access to users who register through the email interface (for example).
-# Also added "security" command to the roundup-admin interface to display the
-# Role/Permission config for an instance.
-#
-# Revision 1.19 2002/07/25 07:14:05 richard
-# Bugger it. Here's the current shape of the new security implementation.
-# Still to do:
-# . call the security funcs from cgi and mailgw
-# . change shipped templates to include correct initialisation and remove
-# the old config vars
-# ... that seems like a lot. The bulk of the work has been done though. Honest :)
-#
-# Revision 1.18 2002/07/18 11:17:30 gmcm
-# Add Number and Boolean types to hyperdb.
-# Add conversion cases to web, mail & admin interfaces.
-# Add storage/serialization cases to back_anydbm & back_metakit.
-#
-# Revision 1.17 2002/07/14 06:05:50 richard
-# . fixed the date module so that Date(". - 2d") works
-#
-# Revision 1.16 2002/07/09 04:19:09 richard
-# Added reindex command to roundup-admin.
-# Fixed reindex on first access.
-# Also fixed reindexing of entries that change.
-#
-# Revision 1.15 2002/06/17 23:14:44 richard
-# . #569415 ] {version}
-#
-# Revision 1.14 2002/06/11 06:41:50 richard
-# Removed prompt for admin email in initialisation.
-#
-# Revision 1.13 2002/05/30 23:58:14 richard
-# oops
-#
-# Revision 1.12 2002/05/26 09:04:42 richard
-# out by one in the init args
-#
-# Revision 1.11 2002/05/23 01:14:20 richard
-# . split instance initialisation into two steps, allowing config changes
-# before the database is initialised.
-#
-# Revision 1.10 2002/04/27 10:07:23 richard
-# minor fix to error message
-#
-# Revision 1.9 2002/03/12 22:51:47 richard
-# . #527416 ] roundup-admin uses undefined value
-# . #527503 ] unfriendly init blowup when parent dir
-# (also handles UsageError correctly now in init)
-#
-# Revision 1.8 2002/02/27 03:28:21 richard
-# Ran it through pychecker, made fixes
-#
-# Revision 1.7 2002/02/20 05:04:32 richard
-# Wasn't handling the cvs parser feeding properly.
-#
-# Revision 1.6 2002/01/23 07:27:19 grubert
-# . allow abbreviation of "help" in admin tool too.
-#
-# Revision 1.5 2002/01/21 16:33:19 rochecompaan
-# You can now use the roundup-admin tool to pack the database
-#
-# Revision 1.4 2002/01/14 06:51:09 richard
-# . #503164 ] create and passwords
-#
-# Revision 1.3 2002/01/08 05:26:32 rochecompaan
-# Missing "self" in props_from_args
-#
-# Revision 1.2 2002/01/07 10:41:44 richard
-# #500140 ] AdminTool.get_class() returns nothing
-#
-# Revision 1.1 2002/01/05 02:11:22 richard
-# I18N'ed roundup admin - and split the code off into a module so it can be used
-# elsewhere.
-# Big issue with this is the doc strings - that's the help. We're probably going to
-# have to switch to not use docstrings, which will suck a little :(
-#
-#
-#
# vim: set filetype=python ts=4 sw=4 et si