@@ -142,14 +142,10 @@ def add_home_page(bootinfo, docs): | |||||
docs.append(page) | docs.append(page) | ||||
def add_timezone_info(bootinfo): | def add_timezone_info(bootinfo): | ||||
user = bootinfo.user.get("time_zone") | |||||
system = bootinfo.sysdefaults.get("time_zone") | system = bootinfo.sysdefaults.get("time_zone") | ||||
if user and user != system: | |||||
import frappe.utils.momentjs | |||||
bootinfo.timezone_info = {"zones":{}, "rules":{}, "links":{}} | |||||
frappe.utils.momentjs.update(user, bootinfo.timezone_info) | |||||
frappe.utils.momentjs.update(system, bootinfo.timezone_info) | |||||
import frappe.utils.momentjs | |||||
bootinfo.timezone_info = {"zones":{}, "rules":{}, "links":{}} | |||||
frappe.utils.momentjs.update(system, bootinfo.timezone_info) | |||||
def load_print(bootinfo, doclist): | def load_print(bootinfo, doclist): | ||||
print_settings = frappe.db.get_singles_dict("Print Settings") | print_settings = frappe.db.get_singles_dict("Print Settings") | ||||
@@ -1,17 +1,8 @@ | |||||
function prettyDate(time, mini){ | function prettyDate(time, mini){ | ||||
if(moment) { | if(moment) { | ||||
if(frappe.boot) { | |||||
var user_timezone = frappe.boot.user.time_zone; | |||||
var system_timezone = sys_defaults.time_zone; | |||||
var zones = (frappe.boot.timezone_info || {}).zones || {}; | |||||
} | |||||
if (frappe.boot && user_timezone && (user_timezone != system_timezone) | |||||
&& zones[user_timezone] && zones[system_timezone]) { | |||||
var ret = moment.tz(time, sys_defaults.time_zone).tz(frappe.boot.user.time_zone).fromNow(mini); | |||||
} else { | |||||
var ret = moment(time).fromNow(mini); | |||||
} | |||||
console.log(time, sys_defaults.time_zone, moment.tz(time, sys_defaults.time_zone).fromNow(mini)); | |||||
var ret = moment.tz(time, sys_defaults.time_zone).fromNow(mini); | |||||
if(mini) { | if(mini) { | ||||
if(ret === "a few seconds") { | if(ret === "a few seconds") { | ||||
ret = "now"; | ret = "now"; | ||||
@@ -31,7 +31,7 @@ def clear_cache(user=None): | |||||
cache = frappe.cache() | cache = frappe.cache() | ||||
groups = ("bootinfo", "user_recent", "user_roles", "user_doc", "lang", | groups = ("bootinfo", "user_recent", "user_roles", "user_doc", "lang", | ||||
"time_zone", "defaults", "user_permissions", "roles") | |||||
"defaults", "user_permissions", "roles") | |||||
if user: | if user: | ||||
for name in groups: | for name in groups: | ||||
@@ -226,11 +226,9 @@ class Session: | |||||
session_data = data.get("data", {}) | session_data = data.get("data", {}) | ||||
# set user for correct timezone | # set user for correct timezone | ||||
frappe.session.user = session_data.get("user") | |||||
self.time_diff = frappe.utils.time_diff_in_seconds(frappe.utils.now(), | self.time_diff = frappe.utils.time_diff_in_seconds(frappe.utils.now(), | ||||
session_data.get("last_updated")) | session_data.get("last_updated")) | ||||
expiry = self.get_expiry_in_seconds(session_data.get("session_expiry")) | expiry = self.get_expiry_in_seconds(session_data.get("session_expiry")) | ||||
frappe.session.user = None | |||||
if self.time_diff > expiry: | if self.time_diff > expiry: | ||||
self.delete_session() | self.delete_session() | ||||
@@ -37,7 +37,7 @@ def getdate(string_date=None): | |||||
def get_datetime(datetime_str=None): | def get_datetime(datetime_str=None): | ||||
if not datetime_str: | if not datetime_str: | ||||
return datetime.datetime.now() | |||||
return now_datetime() | |||||
if isinstance(datetime_str, (datetime.datetime, datetime.timedelta)): | if isinstance(datetime_str, (datetime.datetime, datetime.timedelta)): | ||||
return datetime_str | return datetime_str | ||||
@@ -104,36 +104,26 @@ def time_diff_in_seconds(string_ed_date, string_st_date): | |||||
def time_diff_in_hours(string_ed_date, string_st_date): | def time_diff_in_hours(string_ed_date, string_st_date): | ||||
return round(float(time_diff(string_ed_date, string_st_date).total_seconds()) / 3600, 6) | return round(float(time_diff(string_ed_date, string_st_date).total_seconds()) / 3600, 6) | ||||
def now_datetime(user=None): | |||||
return convert_utc_to_user_timezone(datetime.datetime.utcnow(), user=None) | |||||
def now_datetime(): | |||||
return convert_utc_to_user_timezone(datetime.datetime.utcnow()) | |||||
def _get_user_time_zone(user=None): | |||||
user_time_zone = None | |||||
if not user: | |||||
user = frappe.session and frappe.session.user | |||||
if user: | |||||
user_time_zone = frappe.db.get_value("User", user, "time_zone") | |||||
def _get_time_zone(): | |||||
time_zone = (frappe.db.get_single_value("System Settings", "time_zone") | |||||
or "Asia/Kolkata") | |||||
if not user_time_zone: | |||||
user_time_zone = (frappe.db.get_single_value("System Settings", "time_zone") | |||||
or "Asia/Kolkata") | |||||
return user_time_zone | |||||
def get_user_time_zone(user=None): | |||||
if not user: | |||||
user = frappe.session and frappe.session.user | |||||
return time_zone | |||||
def get_time_zone(): | |||||
if frappe.local.flags.in_test: | if frappe.local.flags.in_test: | ||||
return _get_user_time_zone(user) | |||||
return _get_time_zone() | |||||
return frappe.cache().hget("time_zone", user, _get_user_time_zone) | |||||
return frappe.cache().get_value("time_zone", _get_time_zone) | |||||
def convert_utc_to_user_timezone(utc_timestamp, user=None): | |||||
def convert_utc_to_user_timezone(utc_timestamp): | |||||
from pytz import timezone, UnknownTimeZoneError | from pytz import timezone, UnknownTimeZoneError | ||||
utcnow = timezone('UTC').localize(utc_timestamp) | utcnow = timezone('UTC').localize(utc_timestamp) | ||||
try: | try: | ||||
return utcnow.astimezone(timezone(get_user_time_zone(user))) | |||||
return utcnow.astimezone(timezone(get_time_zone())) | |||||
except UnknownTimeZoneError: | except UnknownTimeZoneError: | ||||
return utcnow | return utcnow | ||||
@@ -185,7 +185,7 @@ class User: | |||||
return self.can_read | return self.can_read | ||||
def load_user(self): | def load_user(self): | ||||
d = frappe.db.sql("""select email, first_name, last_name, time_zone, | |||||
d = frappe.db.sql("""select email, first_name, last_name, | |||||
email_signature, user_type, language, background_image, background_style | email_signature, user_type, language, background_image, background_style | ||||
from tabUser where name = %s""", (self.name,), as_dict=1)[0] | from tabUser where name = %s""", (self.name,), as_dict=1)[0] | ||||