Browse Source

Merge branch 'errors'

master
Julio Biason 14 years ago
parent
commit
cf01f355a1
  1. 13
      mitterlib/network/__init__.py
  2. 53
      mitterlib/network/networkbase.py
  3. 10
      mitterlib/network/twitter.py
  4. 2
      mitterlib/ui/helpers/gtk_messagegrid.py
  5. 26
      mitterlib/ui/ui_pygtk.py

13
mitterlib/network/__init__.py

@ -20,6 +20,7 @@
import logging
import os.path
import urllib2
import gettext
from mitterlib.network.networkbase import NetworkData
from mitterlib import module_search
@ -29,6 +30,13 @@ _log = logging.getLogger('mitterlib.network.Networks')
# List of files that are not networks
SKIPPABLES = ('__init__.py', 'networkbase.py')
#--------------------------------------------------------------------
# i18n
#--------------------------------------------------------------------
t = gettext.translation('networks', fallback=True)
_ = t.gettext
N_ = t.ngettext
#--------------------------------------------------------------------
# Helper functions
#--------------------------------------------------------------------
@ -56,12 +64,15 @@ class NetworksNoSuchNetworkError(NetworksError):
self._network = network
def __str__(self):
return 'Unknown network %s' % (self._network)
return _('Unknown network %s') % (self._network)
pass
class NetworksNoNetworkSetupError(NetworksError):
"""There are no networks set up."""
def __str__(self):
return _('No networks set up.')
pass

53
mitterlib/network/networkbase.py

@ -24,6 +24,7 @@ The :mod:`networkbase` module defines the base classes for all networks.
"""
import logging
import gettext
from mitterlib.constants import version
@ -39,6 +40,12 @@ def auth_options(namespace, options, auths):
default=None,
help=option['help'],
*(option['flags']))
#--------------------------------------------------------------------
# i18n
#--------------------------------------------------------------------
t = gettext.translation('networks', fallback=True)
_ = t.gettext
N_ = t.ngettext
#--------------------------------------------------------------------
# Exceptions
@ -56,36 +63,77 @@ class NetworkUnknownError(NetworkError):
class NetworkLimitExceededError(NetworkError):
"""The number of requests available was exceeded."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('No more available requests on %s') % (self.name)
pass
class NetworkDNSError(NetworkError):
"""A DNS failure prevented the request to continue."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('DNS failure on a request to %s') % (self.name)
pass
class NetworkInvalidResponseError(NetworkError):
"""The server returned the information in an unexpected way."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('The server on %s return the information in an ' \
'unexpected way.') % (self.name)
pass
class NetworkLowLevelError(NetworkError):
"""A low level error occurred in the network layer."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('Low level error in the network layer when talking ' \
'to %s') % (self.name)
pass
class NetworkBadStatusLineError(NetworkError):
"""Bad status line exception."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('Bad status line in network %s') % (self.name)
pass
class NetworkAuthorizationFailError(NetworkError):
"""Authorization failure."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('Autorization failed for %s') % (self.name)
pass
class NetworkPermissionDeniedError(NetworkError):
"""Permission denied when accessing the message/list."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('Permission denied received on %s') % (self.name)
pass
#--------------------------------------------------------------------
@ -99,6 +147,11 @@ class NetworkWarning(Warning):
class MessageTooLongWarning(NetworkWarning):
"""The message is too long for the network."""
def __init__(self, network_name):
self.name = network_name
def __str__(self):
return _('Message too long for %s') % (self.name)
pass
#--------------------------------------------------------------------

10
mitterlib/network/twitter.py

@ -276,17 +276,17 @@ class Connection(NetworkBase):
# pages.
if exc.code == 403:
# Permission denied.
raise NetworkPermissionDeniedError
raise NetworkInvalidResponseError
raise NetworkPermissionDeniedError(self.NAMESPACE)
raise NetworkInvalidResponseError(self.NAMESPACE)
except urllib2.URLError, exc:
_log.error('URL error: %s' % exc.reason)
raise NetworkDNSError
raise NetworkDNSError(self.NAMESPACE)
except BadStatusLine:
_log.error('Bad status line (Twitter is going bananas)')
raise NetworkBadStatusLineError
raise NetworkBadStatusLineError(self.NAMESPACE)
except socketError: # That's the worst exception ever.
_log.error('Socket connection error')
raise NetworkLowLevelError
raise NetworkLowLevelError(self.NAMESPACE)
# TODO: Permission denied?
# Introduced in Twitter in 2009.03.27

2
mitterlib/ui/helpers/gtk_messagegrid.py

@ -247,7 +247,7 @@ class MessageGrid(gtk.ScrolledWindow, gobject.GObject):
# not right click
return False
path = widget.get_path_at_pos(event.x, event.y)
path = widget.get_path_at_pos(int(event.x), int(event.y))
if not path:
return False

26
mitterlib/ui/ui_pygtk.py

@ -26,6 +26,7 @@ import logging
import urllib2
import gettext
import datetime
import warnings
from mitterlib.ui.helpers.image_helpers import find_image
from mitterlib.ui.helpers.gtk_threading import ThreadManager
@ -801,11 +802,11 @@ class Interface(object):
"""Function called if the retrival of current messages returns an
exception."""
_log.debug(str(exception))
message = _('%s\nAuto-refresh is now disabled. Use the "refresh" ' \
'option to re-enable it.') % (str(exception))
error_win = gtk.MessageDialog(parent=self._main_window,
type=gtk.MESSAGE_ERROR,
message_format=_('Error retrieving current messages. ' \
'Auto-refresh disabled. Use the "Refresh" option ' \
'to re-enable it.'),
message_format=_message,
buttons=gtk.BUTTONS_OK)
error_win.run()
error_win.hide()
@ -902,10 +903,10 @@ class Interface(object):
"""Called when there is an exception updating the status."""
_log.debug('Update error')
_log.debug(str(exception))
message = _('%s\nPlease, try again.') % (message)
error_win = gtk.MessageDialog(parent=self._main_window,
type=gtk.MESSAGE_ERROR,
message_format=_('Error updating your status. Please ' \
'try again.'),
message_format=message,
buttons=gtk.BUTTONS_OK)
error_win.run()
error_win.hide()
@ -928,6 +929,12 @@ class Interface(object):
"""Called when the message cannot be deleted."""
_log.debug('Delete error')
_log.debug(str(exception))
error_win = gtk.MessageDialog(parent=self._main_window,
type=gtk.MESSAGE_ERROR,
message_format=str(exception),
buttons=gtk.BUTTONS_OK)
error_win.run()
error_win.hide()
return
### Results for the repost message call
@ -944,8 +951,7 @@ class Interface(object):
error_win = gtk.MessageDialog(parent=self._main_window,
type=gtk.MESSAGE_ERROR,
message_format=_('Error reposting message. Please ' \
'try again.'),
message_format=str(exception),
buttons=gtk.BUTTONS_OK)
error_win.run()
error_win.hide()
@ -969,8 +975,7 @@ class Interface(object):
error_win = gtk.MessageDialog(parent=self._main_window,
type=gtk.MESSAGE_ERROR,
message_format=_('Error changing favorite status of the ' \
'message. Please, try again.'),
message_format=str(exception),
buttons=gtk.BUTTONS_OK)
error_win.run()
error_win.hide()
@ -1018,6 +1023,9 @@ class Interface(object):
"""Call function; displays the interface. This method should
appear on every interface."""
# turn warnings into exception (so we can catch them)
warnings.simplefilter('error')
if self._options[self.NAMESPACE]['statusicon']:
self._statusicon = gtk.StatusIcon()
self._statusicon.set_from_pixbuf(self._images['icon'])

Loading…
Cancel
Save