added --old-user flag to set-pkg-owner-global cli command

This commit is contained in:
Mike McLean 2008-11-18 16:41:10 -05:00
parent abb899114c
commit 0df124f069

View file

@ -3668,35 +3668,57 @@ def handle_set_pkg_owner_global(options, session, args):
parser = OptionParser(usage=usage)
parser.add_option("--verbose", action='store_true', help=_("List changes"))
parser.add_option("--test", action='store_true', help=_("Test mode"))
parser.add_option("--old-user", "--from", action="store", help=_("Only change ownership for packages belonging to this user"))
(options, args) = parser.parse_args(args)
if len(args) < 2:
if options.old_user:
if len(args) < 1:
parser.error(_("Please specify an owner"))
assert False
elif len(args) < 2:
parser.error(_("Please specify an owner and at least one package"))
assert False
activate_session(session)
owner = args[0]
packages = args[1:]
user = session.getUser(owner)
if not user:
print "No such user: %s" % owner
sys.exit(1)
for package in args[1:]:
entries = session.listPackages(pkgID=package, with_dups=True)
opts = {'with_dups' : True}
old_user = None
if options.old_user:
old_user = session.getUser(options.old_user)
if not old_user:
print _("No such user: %s") % options.old_user
sys.exit(1)
opts['userID'] = old_user['id']
to_change = []
for package in packages:
entries = session.listPackages(pkgID=package, **opts)
if not entries:
print "No data for package %s" % package
continue
for entry in entries:
if user['id'] == entry['owner_id']:
if options.verbose:
print "Preserving owner=%s for package %s in tag %s" \
% (user['name'], package, entry['tag_name'] )
else:
if options.test:
print "Would have changed owner for %s in tag %s: %s -> %s" \
% (package, entry['tag_name'], entry['owner_name'], user['name'])
continue
if options.verbose:
print "Changing owner for %s in tag %s: %s -> %s" \
% (package, entry['tag_name'], entry['owner_name'], user['name'])
session.packageListSetOwner(entry['tag_id'], package, user['id'])
to_change.extend(entries)
if not packages and options.old_user:
entries = session.listPackages(**opts)
if not entries:
print "No data for user %s" % old_user['name']
sys.exit(1)
to_change.extend(entries)
for entry in to_change:
if user['id'] == entry['owner_id']:
if options.verbose:
print "Preserving owner=%s for package %s in tag %s" \
% (user['name'], package, entry['tag_name'] )
else:
if options.test:
print "Would have changed owner for %s in tag %s: %s -> %s" \
% (entry['package_name'], entry['tag_name'], entry['owner_name'], user['name'])
continue
if options.verbose:
print "Changing owner for %s in tag %s: %s -> %s" \
% (entry['package_name'], entry['tag_name'], entry['owner_name'], user['name'])
session.packageListSetOwner(entry['tag_id'], entry['package_name'], user['id'])
def anon_handle_watch_task(options, session, args):
"Track progress of particular tasks"