changeset aea349158914 in /home/hg/repos/gajim

details:http://hg.gajim.org/gajim?cmd=changeset;node=aea349158914
description: don't traceback when remove a disabled account. Fixes #5647

diffstat:

 src/config.py |  61 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 37 insertions(+), 24 deletions(-)

diffs (112 lines):

diff -r 5fecaef990ba -r aea349158914 src/config.py
--- a/src/config.py     Tue Mar 09 21:48:57 2010 +0100
+++ b/src/config.py     Wed Mar 10 13:51:55 2010 +0100
@@ -1740,9 +1740,9 @@
                        return
 
                win_opened = False
-               if gajim.interface.msg_win_mgr.get_controls(acct = account):
+               if gajim.interface.msg_win_mgr.get_controls(acct=account):
                        win_opened = True
-               else:
+               elif account in gajim.interface.instances:
                        for key in gajim.interface.instances[account]:
                                if gajim.interface.instances[account][key] and 
key != \
                                'remove_account':
@@ -1750,10 +1750,13 @@
                                        break
                # Detect if we have opened windows for this account
                def remove(account):
-                       if 'remove_account' in 
gajim.interface.instances[account]:
+                       if account in gajim.interface.instances and \
+                       'remove_account' in gajim.interface.instances[account]:
                                
gajim.interface.instances[account]['remove_account'].window.\
                                        present()
                        else:
+                               if not account in gajim.interface.instances:
+                                       gajim.interface.instances[account] = {}
                                
gajim.interface.instances[account]['remove_account'] = \
                                        RemoveAccountWindow(account)
                if win_opened:
@@ -2706,12 +2709,19 @@
 
        def on_remove_button_clicked(self, widget):
                def remove():
-                       if gajim.connections[self.account].connected and \
+                       if self.account in gajim.connections and \
+                       gajim.connections[self.account].connected and \
                        not self.remove_and_unregister_radiobutton.get_active():
                                # change status to offline only if we will not 
remove this JID from
                                # server
                                
gajim.connections[self.account].change_status('offline', 'offline')
                        if self.remove_and_unregister_radiobutton.get_active():
+                               if not self.account in gajim.connections:
+                                       dialogs.ErrorDialog(
+                                               _('Account is disabled'),
+                                               _('To unregister from a server, 
account must be '
+                                               'enabled.'))
+                                       return
                                if not gajim.connections[self.account].password:
                                        def on_ok(passphrase, checked):
                                                if passphrase == -1:
@@ -2731,7 +2741,8 @@
                        else:
                                self._on_remove_success(True)
 
-               if gajim.connections[self.account].connected:
+               if self.account in gajim.connections and \
+               gajim.connections[self.account].connected:
                        dialogs.ConfirmationDialog(
                                _('Account "%s" is connected to the server') % 
self.account,
                                _('If you remove it, the connection will be 
lost.'),
@@ -2745,29 +2756,31 @@
                if not res:
                        return
                # Close all opened windows
-               gajim.interface.roster.close_all(self.account, force = True)
-               gajim.connections[self.account].disconnect(on_purpose = True)
-               del gajim.connections[self.account]
+               gajim.interface.roster.close_all(self.account, force=True)
+               if self.account in gajim.connections:
+                       
gajim.connections[self.account].disconnect(on_purpose=True)
+                       del gajim.connections[self.account]
                
gajim.logger.remove_roster(gajim.get_jid_from_account(self.account))
                gajim.config.del_per('accounts', self.account)
                gajim.interface.save_config()
                del gajim.interface.instances[self.account]
-               del gajim.interface.minimized_controls[self.account]
-               del gajim.nicks[self.account]
-               del gajim.block_signed_in_notifications[self.account]
-               del gajim.groups[self.account]
-               gajim.contacts.remove_account(self.account)
-               del gajim.gc_connected[self.account]
-               del gajim.automatic_rooms[self.account]
-               del gajim.to_be_removed[self.account]
-               del gajim.newly_added[self.account]
-               del gajim.sleeper_state[self.account]
-               del gajim.encrypted_chats[self.account]
-               del gajim.last_message_time[self.account]
-               del gajim.status_before_autoaway[self.account]
-               del gajim.transport_avatar[self.account]
-               del gajim.gajim_optional_features[self.account]
-               del gajim.caps_hash[self.account]
+      if self.account in gajim.nicks:
+                       del gajim.interface.minimized_controls[self.account]
+            del gajim.nicks[self.account]
+            del gajim.block_signed_in_notifications[self.account]
+            del gajim.groups[self.account]
+            gajim.contacts.remove_account(self.account)
+            del gajim.gc_connected[self.account]
+            del gajim.automatic_rooms[self.account]
+            del gajim.to_be_removed[self.account]
+            del gajim.newly_added[self.account]
+            del gajim.sleeper_state[self.account]
+            del gajim.encrypted_chats[self.account]
+            del gajim.last_message_time[self.account]
+            del gajim.status_before_autoaway[self.account]
+            del gajim.transport_avatar[self.account]
+            del gajim.gajim_optional_features[self.account]
+            del gajim.caps_hash[self.account]
                if len(gajim.connections) >= 2: # Do not merge accounts if only 
one exists
                        gajim.interface.roster.regroup = 
gajim.config.get('mergeaccounts')
                else:
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to