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