diff --git a/src/command_system/mapping.py b/src/command_system/mapping.py index fb8c83af8..707866a20 100644 --- a/src/command_system/mapping.py +++ b/src/command_system/mapping.py @@ -270,6 +270,16 @@ def adapt_arguments(command, arguments, args, opts): if value not in initial: raise CommandError("%s: Invalid argument" % key, command) + # If argument to an option constrained by a sequence was not given - then + # it's value should be set to None. + for spec_key, spec_value in spec_kwargs: + if isinstance(spec_value, (TupleType, ListType)): + for key, value in opts: + if spec_key == key: + break + else: + opts.append((spec_key, None)) + # We need to encode every keyword argument to a simple string, not the # unicode one, because ** expansion does not support it. for index, (key, value) in enumerate(opts): diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 2eeff5b2c..e6bb1deb7 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -351,7 +351,7 @@ class ConnectionBytestream: file_props['hash'] = hash_id return - def _connect_error(self, to, _id, sid, code = 404): + def _connect_error(self, to, _id, sid, code=404): ''' cb, when there is an error establishing BS connection, or when connection is rejected''' if not self.connection or self.connected < 2: diff --git a/src/common/gajim.py b/src/common/gajim.py index 9a2ff9528..3511fe2d9 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -212,10 +212,10 @@ def get_server_from_jid(jid): pos = jid.find('@') + 1 # after @ return jid[pos:] -def get_nick_from_fjid(jid): - # fake jid is the jid for a contact in a room - # gaim@conference.jabber.no/nick/nick-continued - return jid.split('/', 1)[1] +def get_resource_from_jid(jid): + tokens = jid.split('/', 1) + if len(tokens) > 1: + return tokens[1] def get_name_and_server_from_jid(jid): name = get_nick_from_jid(jid) diff --git a/src/roster_window.py b/src/roster_window.py index 63d334571..c9201e4e7 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -849,7 +849,7 @@ class RosterWindow: self.remove_contact(jid, account, force=True, backend=True) return True - def rename_group(self, old_name, new_name): + def rename_group(self, old_name, new_name, account): """ rename a roster group """ @@ -2396,7 +2396,7 @@ class RosterWindow: else: # user is running svn helpers.exec_command('%s history_manager.py' % sys.executable) else: # Unix user - helpers.exec_command('%s history_manager.py &' % sys.executable) + helpers.exec_command('%s history_manager.py' % sys.executable) def on_info(self, widget, contact, account): '''Call vcard_information_window class to display contact's information''' @@ -2756,7 +2756,7 @@ class RosterWindow: win.show_title() elif row_type == 'group': # in C_JID column, we hold the group name (which is not escaped) - self.rename_group(old_text, new_text) + self.rename_group(old_text, new_text, account) def on_canceled(): if 'rename' in gajim.interface.instances: diff --git a/src/session.py b/src/session.py index 7d8f5576f..dec454c18 100644 --- a/src/session.py +++ b/src/session.py @@ -86,7 +86,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession): '''dispatch a received stanza''' msg_type = msg.getType() subject = msg.getSubject() - resource = gajim.get_nick_from_fjid(full_jid_with_resource) + resource = gajim.get_resource_from_jid(full_jid_with_resource) if self.resource != resource: self.resource = resource if self.control and self.control.resource: