From: Ed Page Date: Sat, 6 Mar 2010 00:07:19 +0000 (-0600) Subject: Updating TOR to use latest GV bindings from Dialcentral, particularly a bug fix is... X-Git-Url: http://git.maemo.org/git/?p=theonering;a=commitdiff_plain;h=143205c6b83d3ba4ca82d799838c629dafa194c7 Updating TOR to use latest GV bindings from Dialcentral, particularly a bug fix is coming in for when the user's locale doesn't match googles --- diff --git a/src/channel/debug_prompt.py b/src/channel/debug_prompt.py index ce284e0..2104917 100644 --- a/src/channel/debug_prompt.py +++ b/src/channel/debug_prompt.py @@ -257,7 +257,7 @@ class DebugPromptChannel(tp.ChannelTypeText, cmd.Cmd): try: number = args[0] message = " ".join(args[1:]) - self._conn.session.backend.send_sms(number, message) + self._conn.session.backend.send_sms([number], message) except Exception, e: self._report_new_message(str(e)) diff --git a/src/channel/text.py b/src/channel/text.py index 2b34ee5..bd54a81 100644 --- a/src/channel/text.py +++ b/src/channel/text.py @@ -74,7 +74,7 @@ class TextChannel(tp.ChannelTypeText): ) _moduleLogger.info("Sending message to %r" % (self.__otherHandle, )) - self._conn.session.backend.send_sms(self.__otherHandle.phoneNumber, text) + self._conn.session.backend.send_sms([self.__otherHandle.phoneNumber], text) self._conn.session.textsStateMachine.reset_timers() self.Sent(int(time.time()), messageType, text) diff --git a/src/gvoice/backend.py b/src/gvoice/backend.py index 02ea1df..19275f8 100755 --- a/src/gvoice/backend.py +++ b/src/gvoice/backend.py @@ -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