Yann Leboulanger pushed to branch xep-0319 at gajim / gajim

Commits:
ff8c17c3 by Yann Leboulanger at 2017-07-28T21:51:56+02:00
fix parsing since attribute

- - - - -


1 changed file:

- gajim/common/connection_handlers_events.py


Changes:

=====================================
gajim/common/connection_handlers_events.py
=====================================
--- a/gajim/common/connection_handlers_events.py
+++ b/gajim/common/connection_handlers_events.py
@@ -125,6 +125,30 @@ class HelperEvent:
                     self.chatstate = child.getName()
                     break
 
+    def get_datetime(self, time_str):
+        """
+        Parse datetime according to XEP-0082
+        Returns a datetime object or None
+        """
+        if time_str[-1:] == 'Z':
+            # Remove the trailing 'Z'
+            time_str = time_str[:-1]
+        elif time_str[-6:] == "+00:00":
+            # Remove the trailing "+00:00"
+            time_str = time_str[:-6]
+        else:
+            log.info("Wrong timezone defintion: %s" % time_str)
+            return None
+        try:
+            t = datetime.datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S')
+        except ValueError:
+            try:
+                t = datetime.datetime.strptime(time_str,
+                    '%Y-%m-%dT%H:%M:%S.%f')
+            except ValueError as e:
+                log.info('Wrong time format: %s' % str(e))
+                return None
+
 class HttpAuthReceivedEvent(nec.NetworkIncomingEvent):
     name = 'http-auth-received'
     base_network_events = []
@@ -209,24 +233,9 @@ class TimeResultReceivedEvent(nec.NetworkIncomingEvent, 
HelperEvent):
             def dst(self, dt):
                 return ZERO
 
-        if utc_time[-1:] == 'Z':
-            # Remove the trailing 'Z'
-            utc_time = utc_time[:-1]
-        elif utc_time[-6:] == "+00:00":
-            # Remove the trailing "+00:00"
-            utc_time = utc_time[:-6]
-        else:
-            log.info("Wrong timezone defintion: %s" % utc_time)
+        t = self.get_datetime(utc_time)
+        if not t:
             return
-        try:
-            t = datetime.datetime.strptime(utc_time, '%Y-%m-%dT%H:%M:%S')
-        except ValueError:
-            try:
-                t = datetime.datetime.strptime(utc_time,
-                                               '%Y-%m-%dT%H:%M:%S.%f')
-            except ValueError as e:
-                log.info('Wrong time format: %s' % str(e))
-                return
 
         t = t.replace(tzinfo=UTC())
         self.time_info = t.astimezone(contact_tz()).strftime('%c')
@@ -801,8 +810,8 @@ PresenceHelperEvent):
         self.idle_time = None
         idle_tag = self.stanza.getTag('idle', namespace=nbxmpp.NS_IDLE)
         if idle_tag:
-            self.idle_time = datetime.datetime.strptime(idle_tag.getAttr(
-                'since'), '%Y-%m-%dT%H:%M:%SZ')
+            idle_time = idle_tag.getAttr('since')
+            self.idle_time = self.get_datetime(idle_time)
         xtags = self.stanza.getTags('x')
         for x in xtags:
             namespace = x.getNamespace()



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/ff8c17c38473b7369c6872673a8539164d395b55
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to