From 019f243aade24b23bd7df62fc03140dc75c9ba4d Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Sun, 25 Jan 2015 20:02:53 +0100
Subject: [PATCH] More network errors catching

---
 src/cutecoin/core/community.py            | 26 +++++------------------
 src/cutecoin/gui/process_cfg_account.py   |  5 +++++
 src/cutecoin/gui/process_cfg_community.py | 26 +++++++++++++++++------
 src/cutecoin/models/peering.py            |  6 ++----
 4 files changed, 31 insertions(+), 32 deletions(-)

diff --git a/src/cutecoin/core/community.py b/src/cutecoin/core/community.py
index cef3bf7c..dda64837 100644
--- a/src/cutecoin/core/community.py
+++ b/src/cutecoin/core/community.py
@@ -12,7 +12,7 @@ from ..tools.exceptions import NoPeerAvailable
 import logging
 import inspect
 import hashlib
-from requests.exceptions import RequestException, ConnectTimeout
+from requests.exceptions import RequestException, Timeout
 
 
 class Cache():
@@ -128,7 +128,7 @@ class Community(object):
                               (next_peer.pubkey not in traversed_pubkeys)))
                 if next_peer.pubkey not in traversed_pubkeys:
                     self._peering_traversal(next_peer, found_peers, traversed_pubkeys)
-        except TimeoutError:
+        except Timeout:
             pass
         except ValueError:
             pass
@@ -208,12 +208,7 @@ class Community(object):
                         continue
                     else:
                         raise
-                except ConnectTimeout:
-                    # Move the timeout peer to the end
-                    self.peers.remove(peer)
-                    self.peers.append(peer)
-                    continue
-                except TimeoutError:
+                except Timeout:
                     # Move the timeout peer to the end
                     self.peers.remove(peer)
                     self.peers.append(peer)
@@ -230,12 +225,7 @@ class Community(object):
                 return
             except ValueError as e:
                 raise
-            except ConnectTimeout:
-                # Move the timeout peer to the end
-                self.peers.remove(peer)
-                self.peers.append(peer)
-                continue
-            except TimeoutError:
+            except Timeout:
                 # Move the timeout peer to the end
                 self.peers.remove(peer)
                 self.peers.append(peer)
@@ -258,13 +248,7 @@ class Community(object):
             except ValueError as e:
                 value_error = e
                 continue
-            except ConnectTimeout:
-                tries = tries + 1
-                # Move the timeout peer to the end
-                self.peers.remove(peer)
-                self.peers.append(peer)
-                continue
-            except TimeoutError:
+            except Timeout:
                 tries = tries + 1
                 # Move the timeout peer to the end
                 self.peers.remove(peer)
diff --git a/src/cutecoin/gui/process_cfg_account.py b/src/cutecoin/gui/process_cfg_account.py
index 7ef72a8a..4384dba4 100644
--- a/src/cutecoin/gui/process_cfg_account.py
+++ b/src/cutecoin/gui/process_cfg_account.py
@@ -4,6 +4,7 @@ Created on 6 mars 2014
 @author: inso
 '''
 import logging
+import requests
 from ucoinpy.documents.peer import Peer
 from ucoinpy.key import SigningKey
 from ..gen_resources.account_cfg_uic import Ui_AccountConfigurationDialog
@@ -197,6 +198,10 @@ class ProcessConfigureAccount(QDialog, Ui_AccountConfigurationDialog):
             QMessageBox.critical(self, "Error",
                                  str(e), QMessageBox.Ok)
             return
+        except requests.exceptions.RequestException as e:
+            QMessageBox.critical(self, "Error",
+                                 str(e), QMessageBox.Ok)
+            return
 
         dialog.accepted.connect(self.action_edit_community)
         dialog.exec_()
diff --git a/src/cutecoin/gui/process_cfg_community.py b/src/cutecoin/gui/process_cfg_community.py
index ac25c61b..a841d9f1 100644
--- a/src/cutecoin/gui/process_cfg_community.py
+++ b/src/cutecoin/gui/process_cfg_community.py
@@ -68,7 +68,7 @@ class StepPageInit(Step):
                               "Cannot join any peer in this community.")
             raise
         except requests.exceptions.RequestException as e:
-            QMessageBox.critical(self, ":(",
+            QMessageBox.critical(self.config_dialog, ":(",
                         str(e),
                         QMessageBox.Ok)
             raise
@@ -94,7 +94,11 @@ class StepPageAddpeers(Step):
         # We add already known peers to the displayed list
         for peer in self.config_dialog.community.peers:
             self.config_dialog.peers.append(peer)
-        tree_model = PeeringTreeModel(self.config_dialog.community)
+        try:
+            tree_model = PeeringTreeModel(self.config_dialog.community)
+        except requests.exceptions.RequestException:
+            raise
+
         self.config_dialog.tree_peers.setModel(tree_model)
         self.config_dialog.button_previous.setEnabled(False)
         self.config_dialog.button_next.setText("Ok")
@@ -136,11 +140,19 @@ class ProcessConfigureCommunity(QDialog, Ui_CommunityConfigurationDialog):
     def next(self):
         if self.step.next_step is not None:
             if self.step.is_valid():
-                self.step.process_next()
-                self.step = self.step.next_step
-                next_index = self.stacked_pages.currentIndex() + 1
-                self.stacked_pages.setCurrentIndex(next_index)
-                self.step.display_page()
+                try:
+                    self.step.process_next()
+                    self.step = self.step.next_step
+                    next_index = self.stacked_pages.currentIndex() + 1
+                    self.stacked_pages.setCurrentIndex(next_index)
+                    self.step.display_page()
+                except NoPeerAvailable:
+                    return
+                except requests.exceptions.RequestException as e:
+                    QMessageBox.critical(self.config_dialog, ":(",
+                                str(e),
+                                QMessageBox.Ok)
+                    return
         else:
             self.accept()
 
diff --git a/src/cutecoin/models/peering.py b/src/cutecoin/models/peering.py
index dffe9639..079218b2 100644
--- a/src/cutecoin/models/peering.py
+++ b/src/cutecoin/models/peering.py
@@ -8,7 +8,7 @@ from ucoinpy.api import bma
 from ucoinpy.documents.peer import BMAEndpoint, Peer
 from PyQt5.QtCore import QAbstractItemModel, QModelIndex, Qt
 from .peer import PeerItem, RootItem
-from requests.exceptions import ConnectTimeout
+from requests.exceptions import Timeout
 import logging
 
 
@@ -111,9 +111,7 @@ class PeeringTreeModel(QAbstractItemModel):
                                                                     peer_data['value']['signature']))
                         child_node_item = PeerItem(peer, peer_item)
                         peer_item.appendChild(child_node_item)
-                except ConnectTimeout:
-                    continue
-                except TimeoutError:
+                except Timeout:
                     continue
 
             except StopIteration as e:
-- 
GitLab