X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fgvoice%2Fbackend.py;h=02ea1dff4ed3bc1203f89eed50dc8fbf5254167c;hb=f0ea094f455611ca2edebc3ff859fc67f8d1d5c0;hp=3b1d568492aa1cede759c1da4fdff164fdb63313;hpb=65374a31d2215fb2883146dbab644336514fb31d;p=theonering diff --git a/src/gvoice/backend.py b/src/gvoice/backend.py index 3b1d568..02ea1df 100755 --- a/src/gvoice/backend.py +++ b/src/gvoice/backend.py @@ -48,7 +48,7 @@ except ImportError: import browser_emu -_moduleLogger = logging.getLogger("gvoice.backend") +_moduleLogger = logging.getLogger(__name__) class NetworkError(RuntimeError): @@ -546,10 +546,6 @@ class GVoiceBackend(object): raise ValueError('Number is not valid: "%s"' % number) elif not self.is_authed(): raise RuntimeError("Not Authenticated") - - if len(number) == 11 and number[0] == 1: - # Strip leading 1 from 11 digit dialing - number = number[1:] return number def _parse_history(self, historyHtml): @@ -801,13 +797,13 @@ def validate_response(response): def guess_phone_type(number): - if number.startswith("747") or number.startswith("1747"): + if number.startswith("747") or number.startswith("1747") or number.startswith("+1747"): return GVoiceBackend.PHONE_TYPE_GIZMO else: return GVoiceBackend.PHONE_TYPE_MOBILE -def set_sane_callback(backend): +def get_sane_callback(backend): """ Try to set a sane default callback number on these preferences 1) 1747 numbers ( Gizmo ) @@ -818,7 +814,9 @@ def set_sane_callback(backend): numbers = backend.get_callback_numbers() priorityOrderedCriteria = [ + ("\+1747", None), ("1747", None), + ("747", None), (None, "gizmo"), (None, "computer"), (None, "sip"), @@ -826,13 +824,31 @@ def set_sane_callback(backend): ] for numberCriteria, descriptionCriteria in priorityOrderedCriteria: + numberMatcher = None + descriptionMatcher = None + if numberCriteria is not None: + numberMatcher = re.compile(numberCriteria) + elif descriptionCriteria is not None: + descriptionMatcher = re.compile(descriptionCriteria, re.I) + for number, description in numbers.iteritems(): - if numberCriteria is not None and re.compile(numberCriteria).match(number) is None: + if numberMatcher is not None and numberMatcher.match(number) is None: continue - if descriptionCriteria is not None and re.compile(descriptionCriteria).match(description) is None: + if descriptionMatcher is not None and descriptionMatcher.match(description) is None: continue - backend.set_callback_number(number) - return + return number + + +def set_sane_callback(backend): + """ + Try to set a sane default callback number on these preferences + 1) 1747 numbers ( Gizmo ) + 2) anything with gizmo in the name + 3) anything with computer in the name + 4) the first value + """ + number = get_sane_callback(backend) + backend.set_callback_number(number) def _is_not_special(name):