summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common.py47
-rw-r--r--src/logger.py14
-rw-r--r--src/tabs/basetabs.py1
3 files changed, 57 insertions, 5 deletions
diff --git a/src/common.py b/src/common.py
index 8fbf34fb..5467c985 100644
--- a/src/common.py
+++ b/src/common.py
@@ -218,6 +218,53 @@ def datetime_tuple(timestamp):
ret += tz
return ret
+def get_utc_time(local_time=None):
+ """
+ Get the current time in UTC
+
+ :param datetime local_time: The current local time
+ :return: The current UTC time
+ >>> delta = timedelta(seconds=-3600)
+ >>> d = datetime.now()
+ >>> time.timezone = -3600; time.altzone = -3600
+ >>> get_utc_time(local_time=d) == d + delta
+ True
+ """
+ if local_time is None:
+ local_time = datetime.now()
+ isdst = time.localtime().tm_isdst
+ else:
+ isdst = time.localtime(int(local_time.timestamp())).tm_isdst
+
+ if time.daylight and isdst:
+ tz = timedelta(seconds=time.altzone)
+ else:
+ tz = timedelta(seconds=time.timezone)
+
+ utc_time = local_time + tz
+
+ return utc_time
+
+def get_local_time(utc_time):
+ """
+ Get the local time from an UTC time
+
+ >>> delta = timedelta(seconds=-3600)
+ >>> d = datetime.now()
+ >>> time.timezone = -3600; time.altzone = -3600
+ >>> get_local_time(d) == d - delta
+ True
+ """
+ isdst = time.localtime(int(utc_time.timestamp())).tm_isdst
+ if time.daylight and isdst:
+ tz = timedelta(seconds=time.altzone)
+ else:
+ tz = timedelta(seconds=time.timezone)
+
+ local_time = utc_time - tz
+
+ return local_time
+
def find_delayed_tag(message):
"""
Check if a message is delayed or not.
diff --git a/src/logger.py b/src/logger.py
index c05cc4a6..2c878606 100644
--- a/src/logger.py
+++ b/src/logger.py
@@ -5,11 +5,13 @@
# Poezio is free software: you can redistribute it and/or modify
# it under the terms of the zlib license. See the COPYING file.
-from os import environ, makedirs
import mmap
import os
import re
+from os import environ, makedirs
from datetime import datetime
+
+import common
from config import config
from xhtml import clean_text
from theming import dump_tuple, get_theme
@@ -155,7 +157,9 @@ class Logger(object):
log.debug('format? %s', tup)
continue
time = [int(i) for index, i in enumerate(tup) if index < 6]
- message = {'lines': [], 'history': True, 'time': datetime(*time)}
+ message = {'lines': [],
+ 'history': True,
+ 'time': common.get_local_time(datetime(*time))}
size = int(tup[6])
if len(tup) == 8: #info line
message['lines'].append(color+tup[7])
@@ -195,9 +199,9 @@ class Logger(object):
try:
msg = clean_text(msg)
if date is None:
- str_time = datetime.now().strftime('%Y%m%dT%H:%M:%SZ')
+ str_time = common.get_utc_time().strftime('%Y%m%dT%H:%M:%SZ')
else:
- str_time = date.strftime('%Y%m%dT%H:%M:%SZ')
+ str_time = common.get_utc_time(date).strftime('%Y%m%dT%H:%M:%SZ')
if typ == 1:
prefix = 'MR'
else:
@@ -244,7 +248,7 @@ class Logger(object):
exc_info=True)
return False
try:
- str_time = datetime.now().strftime('%Y%m%dT%H:%M:%SZ')
+ str_time = common.get_utc_time().strftime('%Y%m%dT%H:%M:%SZ')
message = clean_text(message)
lines = message.split('\n')
first_line = lines.pop(0)
diff --git a/src/tabs/basetabs.py b/src/tabs/basetabs.py
index 00f924b0..7b300b18 100644
--- a/src/tabs/basetabs.py
+++ b/src/tabs/basetabs.py
@@ -455,6 +455,7 @@ class ChatTab(Tab):
def load_logs(self, log_nb):
logs = logger.get_logs(safeJID(self.get_name()).bare, log_nb)
+ return logs
def log_message(self, txt, nickname, time=None, typ=1):
"""