X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Faliasing.py;h=ef12c7cd9e7737d2a70bb8d89a518d3a0d3ca409;hp=936ff70e8b9dc964ac5b9b2394771e7cf573effd;hb=0c5b4724b922bbcb9fc5d4258d78df1ee1b634a3;hpb=d079b698c676f1ef3f05d8b553d9e09c32699a7d diff --git a/src/aliasing.py b/src/aliasing.py index 936ff70..ef12c7c 100644 --- a/src/aliasing.py +++ b/src/aliasing.py @@ -1,17 +1,17 @@ import logging +import dbus import telepathy import tp -import gtk_toolbox -import util.misc as util_misc +import util.misc as misc_utils import handle -_moduleLogger = logging.getLogger('aliasing') +_moduleLogger = logging.getLogger(__name__) -def _make_pretty_with_areacodde(phonenumber): +def _make_pretty_with_areacode(phonenumber): prettynumber = "(%s)" % (phonenumber[0:3], ) if 3 < len(phonenumber): prettynumber += " %s" % (phonenumber[3:6], ) @@ -28,13 +28,14 @@ def _make_pretty_local(phonenumber): def _make_pretty_international(phonenumber): + prettynumber = phonenumber if phonenumber.startswith("0"): prettynumber = "+%s " % (phonenumber[0:3], ) if 3 < len(phonenumber): - prettynumber += _make_pretty_with_areacodde(phonenumber[3:]) - if phonenumber.startswith("1"): + prettynumber += _make_pretty_with_areacode(phonenumber[3:]) + elif phonenumber.startswith("1"): prettynumber = "1 " - prettynumber += _make_pretty_with_areacodde(phonenumber[1:]) + prettynumber += _make_pretty_with_areacode(phonenumber[1:]) return prettynumber @@ -69,19 +70,21 @@ def make_pretty(phonenumber): >>> make_pretty("+1234") '+1 (234)' """ - if phonenumber is None or phonenumber is "": + if phonenumber is None or phonenumber == "": return "" - phonenumber = util_misc.normalize_number(phonenumber) + phonenumber = misc_utils.normalize_number(phonenumber) - if phonenumber[0] == "+": + if phonenumber == "": + return "" + elif phonenumber[0] == "+": prettynumber = _make_pretty_international(phonenumber[1:]) if not prettynumber.startswith("+"): prettynumber = "+"+prettynumber elif 8 < len(phonenumber) and phonenumber[0] in ("0", "1"): prettynumber = _make_pretty_international(phonenumber) elif 7 < len(phonenumber): - prettynumber = _make_pretty_with_areacodde(phonenumber) + prettynumber = _make_pretty_with_areacode(phonenumber) elif 3 < len(phonenumber): prettynumber = _make_pretty_local(phonenumber) else: @@ -101,35 +104,46 @@ class AliasingMixin(tp.ConnectionInterfaceAliasing): """ raise NotImplementedError("Abstract property called") - def handle(self, handleType, handleId): + @property + def callbackNumberParameter(self): + """ + @abstract + """ + raise NotImplementedError("Abstract property called") + + def get_handle_by_id(self, handleType, handleId): """ @abstract """ raise NotImplementedError("Abstract function called") - @gtk_toolbox.log_exception(_moduleLogger) + @misc_utils.log_exception(_moduleLogger) def GetAliasFlags(self): return 0 - @gtk_toolbox.log_exception(_moduleLogger) + @misc_utils.log_exception(_moduleLogger) def RequestAliases(self, contactHandleIds): _moduleLogger.debug("Called RequestAliases") return [self._get_alias(handleId) for handleId in contactHandleIds] - @gtk_toolbox.log_exception(_moduleLogger) + @misc_utils.log_exception(_moduleLogger) def GetAliases(self, contactHandleIds): _moduleLogger.debug("Called GetAliases") - idToAlias = dict( - (handleId, self._get_alias(handleId)) - for handleId in contactHandleIds + idToAlias = dbus.Dictionary( + ( + (handleId, self._get_alias(handleId)) + for handleId in contactHandleIds + ), + signature="us", ) return idToAlias - @gtk_toolbox.log_exception(_moduleLogger) + @misc_utils.log_exception(_moduleLogger) def SetAliases(self, aliases): _moduleLogger.debug("Called SetAliases") # first validate that no other handle types are included + handleId, alias = None, None for handleId, alias in aliases.iteritems(): h = self.get_handle_by_id(telepathy.HANDLE_TYPE_CONTACT, handleId) if isinstance(h, handle.ConnectionHandle): @@ -137,18 +151,18 @@ class AliasingMixin(tp.ConnectionInterfaceAliasing): else: raise telepathy.errors.PermissionDenied("No user customizable aliases") - if len(alias) == 0: + uglyNumber = misc_utils.normalize_number(alias) + if len(uglyNumber) == 0: # Reset to the original from login if one was provided - alias = self.callbackNumberParameter - if not util_misc.is_valid_number(alias): - raise telepathy.errors.InvalidArgument("Invalid phone number %r" % (alias, )) + uglyNumber = self.callbackNumberParameter + if not misc_utils.is_valid_number(uglyNumber): + raise telepathy.errors.InvalidArgument("Invalid phone number %r" % (uglyNumber, )) # Update callback - uglyNumber = util_misc.normalize_number(alias) self.session.backend.set_callback_number(uglyNumber) # Inform of change - userAlias = make_pretty(alias) + userAlias = make_pretty(uglyNumber) changedAliases = ((handleId, userAlias), ) self.AliasesChanged(changedAliases) @@ -159,9 +173,9 @@ class AliasingMixin(tp.ConnectionInterfaceAliasing): userAlias = make_pretty(aliasNumber) return userAlias else: - contactId = h.contactID - if contactId: - contactAlias = self.session.addressbook.get_contact_name(contactId) - else: - contactAlias = make_pretty(h.phoneNumber) + number = h.phoneNumber + try: + contactAlias = self.session.addressbook.get_contact_name(number) + except KeyError: + contactAlias = make_pretty(number) return contactAlias