online-desktop r7281 - trunk/weblogindriver



Author: marinaz
Date: Mon Oct 27 23:37:22 2008
New Revision: 7281
URL: http://svn.gnome.org/viewvc/online-desktop?rev=7281&view=rev

Log:
Connect to the "online" flag to know that we shouldn't be sending change requests to the server when the server becomes unavailable after initially being available.

Return True for GetHaveOnlineUser() when the server is not available, so that we don't try to get the user to sign in when the server is actually not available.


Modified:
   trunk/weblogindriver/web-login-driver

Modified: trunk/weblogindriver/web-login-driver
==============================================================================
--- trunk/weblogindriver/web-login-driver	(original)
+++ trunk/weblogindriver/web-login-driver	Mon Oct 27 23:37:22 2008
@@ -702,10 +702,17 @@
       query.add_handler(self.__on_datamodel_response)
       query.add_error_handler(self.__on_datamodel_error)        
       query.execute()
-    elif self.__model.self_resource == None:
+
+      query2 = self.__model.query_resource(self.__model.global_resource, "online")
+      query2.add_handler(self.__on_datamodel_global_resource_response)
+      query2.add_error_handler(self.__on_datamodel_error)        
+      query2.execute()
+    elif not self.__model.global_resource.online or self.__model.self_resource == None:
+      self.__received_response_from_server = False
+      self.HaveOnlineUserFlagChanged(self.GetHaveOnlineUserFlag())    
       # we will want to use the merge mode once we do get the self resource
-      self.__merge_mode = True    
-        
+      self.__merge_mode = True
+  
   def __on_datamodel_error(self, code, str):
     _logger.error("datamodel error %s: %s", code, str)        
         
@@ -714,7 +721,7 @@
     if not self.__received_account_types_from_server:
       self.__download_online_account_types()
     self.__received_response_from_server = True
-    self.HaveOnlineUserFlagChanged(self.__received_response_from_server)
+    self.HaveOnlineUserFlagChanged(self.GetHaveOnlineUserFlag())
     myself.connect(self.__update_google_enabled_emails, 'googleEnabledEmails') 
     myself.connect(self.__update_loved_accounts, 'lovedAccounts') 
     self.__update_google_enabled_emails(myself)
@@ -728,6 +735,17 @@
         self.__update_google_enabled_emails(myself)
         self.__update_loved_accounts(myself)    
 
+  def __on_datamodel_global_resource_response(self, global_resource):
+    global_resource.connect(self.__update_global_resource_online_status, "online")
+
+  def __update_global_resource_online_status(self, global_resource):
+    # __on_ready gets called again anyway when the server becomes available again,
+    # so we only need to handle the server becoming unavailable here
+    if not global_resource.online:  
+      self.__received_response_from_server = False
+      self.HaveOnlineUserFlagChanged(self.GetHaveOnlineUserFlag())
+      self.__merge_mode = True
+
   # def __on_loved_accounts(self, myself):    
     # _logger.debug("received some loved accounts")
     # myself.connect(self.__update_loved_accounts, 'lovedAccounts') 
@@ -915,10 +933,11 @@
         else:
           self.__server_accounts.clear() 
           self.__received_response_from_server = False
-          self.HaveOnlineUserFlagChanged(self.__received_response_from_server)
+          self.HaveOnlineUserFlagChanged(self.GetHaveOnlineUserFlag())
           if self.__model.self_resource != None:
             self.__model.self_resource.disconnect(self.__update_google_enabled_emails) 
             self.__model.self_resource.disconnect(self.__update_loved_accounts)
+            self.__model.global_resource.disconnect(self.__update_global_resource_online_status) 
             for account in self.__loved_data_model_accounts:
               account.disconnect(self.__update_loved_account) 
             self.__loved_data_model_accounts.clear()
@@ -1111,7 +1130,9 @@
   @dbus.service.method(OA_BUS_IFACE_STR,                      
                        out_signature="b")
   def GetHaveOnlineUserFlag(self): 
-    return self.__received_response_from_server
+    # we only want to return False when we don't have an online user, but are
+    # connected to the server
+    return self.__received_response_from_server or not self.__model.global_resource.online
 
   @dbus.service.signal(OA_BUS_IFACE_STR,
                        signature='b')
@@ -1202,7 +1223,6 @@
     if account:         
       return_cb((account.GetObjectPath(), False, None))
     
-    _logger.debug("received response from server %s", self.__received_response_from_server)
     if self.__save_online_flag and self.__received_response_from_server and account_type in ACCOUNT_TYPES_FROM_SERVER:      
       query = self.__model.update(("http://mugshot.org/p/accounts";, "addOnlineAccount"), accountType=account_type, username=username)
       query.add_handler(on_server_account_added)



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