X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Fgvoice%2Fbackend.py;h=19275f887b7bf2110683dfa42d029a6928086413;hp=0279b797767aa087205ba966b6122c6aa309bb94;hb=074b7adedaeba92d5993f8015be26c684f8bbfd8;hpb=fa00131aec4855ecc3a811a6332d90998f7ba567 diff --git a/src/gvoice/backend.py b/src/gvoice/backend.py index 0279b79..19275f8 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): @@ -364,12 +364,16 @@ class GVoiceBackend(object): ) self._parse_with_validation(page) - def send_sms(self, phoneNumber, message): - phoneNumber = self._send_validation(phoneNumber) + def send_sms(self, phoneNumbers, message): + validatedPhoneNumbers = [ + self._send_validation(phoneNumber) + for phoneNumber in phoneNumbers + ] + flattenedPhoneNumbers = ",".join(validatedPhoneNumbers) page = self._get_page_with_token( self._sendSmsURL, { - 'phoneNumber': phoneNumber, + 'phoneNumber': flattenedPhoneNumbers, 'text': message }, ) @@ -553,7 +557,7 @@ class GVoiceBackend(object): for messageId, messageHtml in itergroup(splitVoicemail[1:], 2): exactTimeGroup = self._exactVoicemailTimeRegex.search(messageHtml) exactTime = exactTimeGroup.group(1).strip() if exactTimeGroup else "" - exactTime = datetime.datetime.strptime(exactTime, "%m/%d/%y %I:%M %p") + exactTime = google_strptime(exactTime) relativeTimeGroup = self._relativeVoicemailTimeRegex.search(messageHtml) relativeTime = relativeTimeGroup.group(1).strip() if relativeTimeGroup else "" locationGroup = self._voicemailLocationRegex.search(messageHtml) @@ -601,7 +605,7 @@ class GVoiceBackend(object): exactTimeGroup = self._exactVoicemailTimeRegex.search(messageHtml) exactTimeText = exactTimeGroup.group(1).strip() if exactTimeGroup else "" - conv.time = datetime.datetime.strptime(exactTimeText, "%m/%d/%y %I:%M %p") + conv.time = google_strptime(exactTimeText) relativeTimeGroup = self._relativeVoicemailTimeRegex.search(messageHtml) conv.relTime = relativeTimeGroup.group(1).strip() if relativeTimeGroup else "" locationGroup = self._voicemailLocationRegex.search(messageHtml) @@ -651,7 +655,7 @@ class GVoiceBackend(object): exactTimeGroup = self._exactVoicemailTimeRegex.search(messageHtml) exactTimeText = exactTimeGroup.group(1).strip() if exactTimeGroup else "" - conv.time = datetime.datetime.strptime(exactTimeText, "%m/%d/%y %I:%M %p") + conv.time = google_strptime(exactTimeText) relativeTimeGroup = self._relativeVoicemailTimeRegex.search(messageHtml) conv.relTime = relativeTimeGroup.group(1).strip() if relativeTimeGroup else "" conv.location = "" @@ -718,6 +722,19 @@ class GVoiceBackend(object): return json +def google_strptime(time): + """ + Hack: Google always returns the time in the same locale. Sadly if the + local system's locale is different, there isn't a way to perfectly handle + the time. So instead we handle implement some time formatting + """ + abbrevTime = time[:-3] + parsedTime = datetime.datetime.strptime(abbrevTime, "%m/%d/%y %I:%M") + if time[-2] == "PN": + parsedTime += datetime.timedelta(hours=12) + return parsedTime + + def itergroup(iterator, count, padValue = None): """ Iterate in groups of 'count' values. If there