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: