online-desktop r7275 - in trunk/weblogindriver: . weblogindriver



Author: marinaz
Date: Fri Oct 24 19:40:00 2008
New Revision: 7275
URL: http://svn.gnome.org/viewvc/online-desktop?rev=7275&view=rev

Log:
Add error/notification handling when adding accounts in the merge mode.

Make sure we remove accounts that could not be added on the server once we are done with the merge mode.


Modified:
   trunk/weblogindriver/web-login-driver
   trunk/weblogindriver/weblogindriver/accounts_dialog.py

Modified: trunk/weblogindriver/web-login-driver
==============================================================================
--- trunk/weblogindriver/web-login-driver	(original)
+++ trunk/weblogindriver/web-login-driver	Fri Oct 24 19:40:00 2008
@@ -702,19 +702,32 @@
         
   def __on_datamodel_response(self, myself):    
     _logger.debug("received data model response")
+    self.__received_response_from_server = True
     myself.connect(self.__update_google_enabled_emails, 'googleEnabledEmails') 
     myself.connect(self.__update_loved_accounts, 'lovedAccounts') 
     self.__update_google_enabled_emails(myself)
     self.__update_loved_accounts(myself)
     if self.__save_online_flag:
+      prev_merge_mode = self.__merge_mode
       self.__merge_mode = False
-      self.__received_response_from_server = True
+      if prev_merge_mode:
+        # Get online accounts again, since some could have caused an error when being saved and are not actually
+        # on the server. Also, Google e-mails might need to be verified before they can show up.
+        self.__update_google_enabled_emails(myself)
+        self.__update_loved_accounts(myself)    
 
   # def __on_loved_accounts(self, myself):    
     # _logger.debug("received some loved accounts")
     # myself.connect(self.__update_loved_accounts, 'lovedAccounts') 
     # self.__update_loved_accounts(myself)
 
+  def __on_server_google_account_added(self, result):
+    self.AccountUpdateFeedback("Information Note", "If some Google enabled account is missing, check your e-mail to verify it.", False)
+
+  def __on_server_account_add_failed(self, error_type, error_message):
+    _logger.error("Add failed %s %s" % (str(error_type), error_message))
+    self.AccountUpdateFeedback("Could not save an account on the server", error_message, True)
+
   def __update_google_enabled_emails(self, myself):
     if not self.__save_online_flag:
       _logger.warn("got into __update_google_enabled_emails when self.__save_online_flag is False")
@@ -739,9 +752,8 @@
         if gconf_account not in self.__server_accounts:
           # add the account on the server
           query = self.__model.update(("http://mugshot.org/p/accounts";, "addOnlineAccount"), accountType=gconf_account.GetType(), username=gconf_account.GetUsername())
-          # TODO: add eror handler that would display a message, possibe a note one for
-          # Google on success too
-          # query.add_error_handler(self.__on_server_account_add_failed)        
+          query.add_handler(self.__on_server_google_account_added)
+          query.add_error_handler(self.__on_server_account_add_failed)        
           query.execute()
 
   def __update_loved_accounts(self, myself):
@@ -784,9 +796,7 @@
         if self.__merge_mode:
           # add the account on the server
           query = self.__model.update(("http://mugshot.org/p/accounts";, "addOnlineAccount"), accountType=gconf_account.GetType(), username=gconf_account.GetUsername())
-          # TODO: add eror handler that would display a message, possibly a note one for
-          # Google on success too
-          # query.add_error_handler(self.__on_server_account_add_failed)        
+          query.add_error_handler(self.__on_server_account_add_failed)        
           query.execute()
         else:
           # remove the account locally
@@ -1083,6 +1093,11 @@
   def SaveOnlineFlagChanged(self, new_save_online_flag):
     pass
 
+  @dbus.service.signal(OA_BUS_IFACE_STR,
+                       signature='ssb')
+  def AccountUpdateFeedback(self, feedback_header, feedback_message, is_error_flag):
+    pass
+
   # new_properties is a dictionary, valid properties are "password" and "enabled"
   @dbus.service.method(OA_BUS_IFACE_STR,                      
                        in_signature="oa{ss}")
@@ -1211,7 +1226,8 @@
       query.add_error_handler(on_server_account_remove_failed)        
       query.execute()
     else:
-      self.__remove_gconf_dir(account._get_gconf_dir())
+      if account._get_gconf_dir():
+        self.__remove_gconf_dir(account._get_gconf_dir())
       if account in self.__server_accounts:
         _logger.warn("Account %s was in self.__server_accounts, but did not have a resource_id or we were in the mode when we should not be kepping track of server accounts" % str(account)) 
         self.__server_accounts.remove(account)

Modified: trunk/weblogindriver/weblogindriver/accounts_dialog.py
==============================================================================
--- trunk/weblogindriver/weblogindriver/accounts_dialog.py	(original)
+++ trunk/weblogindriver/weblogindriver/accounts_dialog.py	Fri Oct 24 19:40:00 2008
@@ -236,6 +236,9 @@
         id = self.__onlineaccounts_proxy.connect_to_signal('SaveOnlineFlagChanged',
                                                            self.__on_save_online_flag_changed)
         self.__connections.add(self.__onlineaccounts_proxy, id)        
+        id = self.__onlineaccounts_proxy.connect_to_signal('AccountUpdateFeedback',
+                                                           self.__on_account_update_feedback)
+        self.__connections.add(self.__onlineaccounts_proxy, id)        
 
     def __open_account_page(self, l):
         gnome.url_show(urlparse.urljoin(ddm_util.get_baseurl(), "/account"))
@@ -347,15 +350,23 @@
         self.__password_entry.set_text(self.__current_account.GetPassword())
         self.__check_box.set_active(self.__current_account.GetEnabled())
 
+    def __on_account_update_feedback(self, feedback_header, feedback_message, is_error_flag):
+        message_dialog = None
+        if is_error_flag: 
+            message_dialog = gtk.MessageDialog(parent=self, type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK, message_format=feedback_header)
+        else:
+            message_dialog = gtk.MessageDialog(parent=self, type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_OK, message_format=feedback_header)
+            
+        message_dialog.set_default_response(gtk.BUTTONS_OK)
+        message_dialog.format_secondary_text(feedback_message)
+        message_dialog.run()
+        message_dialog.destroy()
+
     def account_remove_return_cb(self):
         pass
 
     def account_remove_error_cb(self, error):
-        message_dialog = gtk.MessageDialog(parent=self, type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK, message_format="Could not remove an account")
-        message_dialog.set_default_response(gtk.BUTTONS_OK)
-        message_dialog.format_secondary_text(error)
-        message_dialog.run()
-        message_dialog.destroy()        
+        self.__on_account_update_feedback("Could not remove an account", error, True)     
 
     def __on_account_remove_clicked(self, widget):
         self.__online_accounts_service.RemoveAccount(self.__current_account.GetObjectPath(), self.account_remove_return_cb, self.account_remove_error_cb)
@@ -372,19 +383,13 @@
         feedback_message = account_tuple[2]
         
         if (feedback_message is not None and len(feedback_message) > 0) or (object_path is None and not new_account_flag):
-            message_dialog = None
             if object_path is None and (not new_account_flag): 
                 # feedback_message is an error
-                message_dialog = gtk.MessageDialog(parent=self, type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK, message_format="Could not add an account")
+                self.__on_account_update_feedback("Could not add an account", feedback_message, True)
             else:
                 # feedback_message is a just there to provide extra info
-                message_dialog = gtk.MessageDialog(parent=self, type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_OK, message_format="Information note")
                 self.__username_entry.set_text("")
-            
-            message_dialog.set_default_response(gtk.BUTTONS_OK)
-            message_dialog.format_secondary_text(feedback_message)
-            message_dialog.run()
-            message_dialog.destroy()
+                self.__on_account_update_feedback("Information note", feedback_message, False)
         else: 
             self.__username_entry.set_text("")
             self.__notebook.set_current_page(0)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]