Fix #3217 (allow /groupadd "group" with selected row in the roster)

This commit is contained in:
mathieui 2016-08-25 20:22:01 +02:00
parent e8aa89687f
commit b7c23313b6

View file

@ -72,38 +72,38 @@ class RosterInfoTab(Tab):
desc='Deny your presence to the provided JID (or the ' desc='Deny your presence to the provided JID (or the '
'selected contact in your roster), who is asking' 'selected contact in your roster), who is asking'
'you to be in his/here roster.', 'you to be in his/here roster.',
shortdesc='Deny an user your presence.', shortdesc='Deny a user your presence.',
completion=self.completion_deny) completion=self.completion_deny)
self.register_command('accept', self.command_accept, self.register_command('accept', self.command_accept,
usage='[jid]', usage='[jid]',
desc='Allow the provided JID (or the selected contact ' desc='Allow the provided JID (or the selected contact '
'in your roster), to see your presence.', 'in your roster), to see your presence.',
shortdesc='Allow an user your presence.', shortdesc='Allow a user your presence.',
completion=self.completion_deny) completion=self.completion_deny)
self.register_command('add', self.command_add, self.register_command('add', self.command_add,
usage='<jid>', usage='<jid>',
desc='Add the specified JID to your roster, ask him to' desc='Add the specified JID to your roster, ask him to'
' allow you to see his presence, and allow him to' ' allow you to see his presence, and allow him to'
' see your presence.', ' see your presence.',
shortdesc='Add an user to your roster.') shortdesc='Add a user to your roster.')
self.register_command('name', self.command_name, self.register_command('name', self.command_name,
usage='<jid> [name]', usage='<jid> [name]',
shortdesc='Set the given JID\'s name.', shortdesc='Set the given JID\'s name.',
completion=self.completion_name) completion=self.completion_name)
self.register_command('groupadd', self.command_groupadd, self.register_command('groupadd', self.command_groupadd,
usage='<jid> <group>', usage='[<jid> <group>]|<group>',
desc='Add the given JID to the given group.', desc='Add the given JID or selected line to the given group.',
shortdesc='Add an user to a group', shortdesc='Add a user to a group',
completion=self.completion_groupadd) completion=self.completion_groupadd)
self.register_command('groupmove', self.command_groupmove, self.register_command('groupmove', self.command_groupmove,
usage='<jid> <old group> <new group>', usage='<jid> <old group> <new group>',
desc='Move the given JID from the old group to the new group.', desc='Move the given JID from the old group to the new group.',
shortdesc='Move an user to another group.', shortdesc='Move a user to another group.',
completion=self.completion_groupmove) completion=self.completion_groupmove)
self.register_command('groupremove', self.command_groupremove, self.register_command('groupremove', self.command_groupremove,
usage='<jid> <group>', usage='<jid> <group>',
desc='Remove the given JID from the given group.', desc='Remove the given JID from the given group.',
shortdesc='Remove an user from a group.', shortdesc='Remove a user from a group.',
completion=self.completion_groupremove) completion=self.completion_groupremove)
self.register_command('remove', self.command_remove, self.register_command('remove', self.command_remove,
usage='[jid]', usage='[jid]',
@ -111,7 +111,7 @@ class RosterInfoTab(Tab):
'will unsubscribe you from its presence, cancel ' 'will unsubscribe you from its presence, cancel '
'its subscription to yours, and remove the item ' 'its subscription to yours, and remove the item '
'from your roster.', 'from your roster.',
shortdesc='Remove an user from your roster.', shortdesc='Remove a user from your roster.',
completion=self.completion_remove) completion=self.completion_remove)
self.register_command('export', self.command_export, self.register_command('export', self.command_export,
usage='[/path/to/file]', usage='[/path/to/file]',
@ -664,15 +664,25 @@ class RosterInfoTab(Tab):
self.core.xmpp.update_roster(jid, name=name, groups=groups, self.core.xmpp.update_roster(jid, name=name, groups=groups,
subscription=subscription, callback=callback) subscription=subscription, callback=callback)
@command_args_parser.quoted(2) @command_args_parser.quoted(1, 1)
def command_groupadd(self, args): def command_groupadd(self, args):
""" """
Add the specified JID to the specified group Add the specified JID to the specified group
""" """
if args is None: if args is None:
return self.core.command.help('groupadd') return self.core.command.help('groupadd')
jid = safeJID(args[0]).bare if len(args) == 1:
group = args[1] group = args[0]
item = self.roster_win.selected_row
if isinstance(item, Contact):
jid = item.bare_jid
elif isinstance(item, Resource):
jid = item.jid
else:
return self.core.command.help('groupadd')
else:
jid = safeJID(args[0]).bare
group = args[1]
contact = roster[jid] contact = roster[jid]
if contact is None: if contact is None: