Index: pyxl/client.py =================================================================== --- pyxl/client.py (revision 2895) +++ pyxl/client.py (working copy) @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """ -import sys, time, random, os +import sys, time, random, os, re import socks5, events, base64 from twisted import names from twisted.python import log @@ -36,6 +36,7 @@ from twisted.internet.protocol import Protocol, ClientFactory, Factory from twisted.protocols import socks from twisted.internet.task import LoopingCall +from calendar import timegm from derived import derived @@ -935,10 +936,23 @@ except: pass #proste user neni v rosteru, nebo je to muc, nebo cojavim ;) if child.name == 'delay': - delay = child['stamp'] + # xep-0203: + # The format MUST adhere to the dateTime format specified in XEP-0082 + # and MUST be expressed in UTC. + stamp = child.getAttribute('stamp') + m = re.match(r'(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(\.\d+)?Z', stamp) + if m: + delay = timegm( map(int, m.groups()[0:6]) + [0,0,0] ) if child.name == 'x': if child.defaultUri == 'jabber:x:delay' : - delay = child.getAttribute('stamp') + # xep-0091: + # The format SHOULD be "CCYYMMDDThh:mm:ss" + # ... not the format defined in XEP-0082. + # The timezone is be understood as UTC. + stamp = child.getAttribute('stamp') + m = re.match(r'(\d\d\d\d)(\d\d)(\d\d)T(\d\d):(\d\d):(\d\d)', stamp) + if m: + delay = timegm( map(int, m.groups()[0:6]) + [0,0,0] ) if child.defaultUri == 'jabber:x:event': elm = child.firstChildElement() if elm: Index: jabbim.py =================================================================== --- jabbim.py (revision 2895) +++ jabbim.py (working copy) @@ -1202,11 +1202,10 @@ # prepare message to be showed if unicode(body).startswith("/me"): - if delay==None or len(delay)==0: + if delay==None: message=self.main.skin["me_message"].replace("[time]",self.main.now()).replace("[user]",unicode(user).replace("<","<").replace(">",">").replace("\n","<br/> ")).replace("[message]",message[3:]) else: - delay=unicode(delay) - delay="%s-%s-%s %s:%s:%s" % (delay[0:4],delay[4:6],delay[6:8],delay[9:11],delay[12:14],delay[15:17]) + delay=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(delay)) message=self.main.skin["me_message"].replace("[time]",delay).replace("[user]",unicode(user).replace("<","<").replace(">",">").replace("\n","<br/> ")).replace("[message]",message[3:]) else: skin=self.main.skin["message"] @@ -1214,11 +1213,10 @@ if tab.chat.lastMessageFrom==unicode(user): if self.main.skin.has_key('message_continue'): skin=self.main.skin["message_continue"] - if delay==None or len(delay)==0: + if delay==None: message=skin.replace("[time]",self.main.now()).replace("[user]",unicode(user).replace("<","<").replace(">",">").replace("\n","<br/> ")).replace("[message]",message) else: - delay=unicode(delay) - delay="%s-%s-%s %s:%s:%s" % (delay[0:4],delay[4:6],delay[6:8],delay[9:11],delay[12:14],delay[15:17]) + delay=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(delay)) message=skin.replace("[time]",delay).replace("[user]",unicode(user).replace("<","<").replace(">",">").replace("\n","<br/> ")).replace("[message]",message) colors=self.main.getSkinColors(0) if colors!=None: