fix: check if frappe.sys_defaults.time_zone exists

This commit is contained in:
hrwx 2021-06-15 23:31:30 +05:30
parent 1952920add
commit 02640b791f
7 changed files with 24 additions and 17 deletions

View file

@ -32,5 +32,11 @@ frappe.ui.form.on("System Settings", {
frm.set_value('prepared_report_expiry_period', 7);
}
}
},
after_save: function(frm) {
if (frappe.boot.time_zone && frappe.boot.time_zone.system_time_zone !== frm.doc.time_zone) {
// Clear cache after saving to refresh the values of time_zone
frappe.ui.toolbar.clear_cache();
}
}
});

View file

@ -271,6 +271,12 @@ frappe.ui.form.on('User', {
}
}
});
},
after_save: function(frm) {
if (frappe.boot.time_zone && frappe.boot.time_zone.user_time_zone !== frm.doc.time_zone) {
// Clear cache after saving to refresh the values of time_zone
frappe.ui.toolbar.clear_cache();
}
}
});

View file

@ -599,7 +599,6 @@ class User(Document):
from frappe.utils import get_time_zone
if not self.time_zone:
frappe.msgprint(_("User Time Zone was not set, defaulting to System Time Zone."), title=_("User Time Zone"))
self.time_zone = get_time_zone()
@frappe.whitelist()

View file

@ -30,7 +30,7 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co
if (value) {
value = frappe.datetime.user_to_str(value, false);
if (!frappe.datetime.is_timezone_same()) {
if (!frappe.datetime.is_system_time_zone()) {
value = frappe.datetime.convert_to_system_tz(value, true);
}
@ -40,9 +40,7 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co
format_for_input(value) {
if (!value) return "";
let m = frappe.datetime.is_timezone_same();
if (!frappe.datetime.is_timezone_same()) {
m = frappe.datetime.convert_to_user_tz(value, true)
if (!frappe.datetime.is_system_time_zone()) {
value = frappe.datetime.convert_to_user_tz(value, true);
}
@ -50,7 +48,7 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co
}
set_description() {
const description = this.df.description;
const time_zone = frappe.boot.time_zone ? frappe.boot.time_zone.user_time_zone : frappe.sys_defaults.time_zone;
const time_zone = this.get_user_time_zone();
if (!this.df.hide_timezone) {
// Always show the timezone when rendering the Datetime field since the datetime value will
@ -64,6 +62,9 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co
}
super.set_description();
}
get_user_time_zone() {
return frappe.boot.time_zone ? frappe.boot.time_zone.user_time_zone : frappe.sys_defaults.time_zone;
}
set_datepicker() {
super.set_datepicker();
if (this.datepicker.opts.timeFormat.indexOf('s') == -1) {

View file

@ -71,7 +71,7 @@ frappe.ui.form.ControlTime = class ControlTime extends frappe.ui.form.ControlDat
set_description() {
const { description } = this.df;
const { time_zone } = frappe.sys_defaults;
if (!frappe.datetime.is_timezone_same()) {
if (!frappe.datetime.is_system_time_zone()) {
if (!description) {
this.df.description = time_zone;
} else if (!description.includes(time_zone)) {

View file

@ -167,12 +167,8 @@ frappe.form.formatters = {
},
Datetime: function(value) {
if(value) {
var m = moment(frappe.datetime.convert_to_user_tz(value));
if(frappe.boot.sysdefaults.time_zone) {
m = m.tz(frappe.boot.sysdefaults.time_zone);
}
return m.format(frappe.boot.sysdefaults.date_format.toUpperCase()
+ ' ' + frappe.boot.sysdefaults.time_format);
return moment(frappe.datetime.convert_to_user_tz(value))
.format(frappe.boot.sysdefaults.date_format.toUpperCase() + ' ' + frappe.boot.sysdefaults.time_format);
} else {
return "";
}

View file

@ -45,7 +45,7 @@ $.extend(frappe.datetime, {
return format===false ? date_obj : date_obj.format(frappe.defaultDatetimeFormat);
},
is_timezone_same: function() {
is_system_time_zone: function() {
if (frappe.boot.time_zone && frappe.boot.time_zone.system_time_zone && frappe.boot.time_zone.user_time_zone) {
return moment().tz(frappe.boot.time_zone.system_time_zone).utcOffset() === moment().tz(frappe.boot.time_zone.user_time_zone).utcOffset();
}
@ -204,10 +204,9 @@ $.extend(frappe.datetime, {
* This will make sure that at any point we know which timezone the user if following and not have random timezone
* when the timezone of the local machine changes.
*/
let time_zone = frappe.boot.time_zone.user_time_zone || frappe.boot.time_zone.system_time_zone;
if (!time_zone) time_zone = frappe.sys_defaults.time_zone;
let time_zone = frappe.boot.time_zone ? frappe.boot.time_zone.user_time_zone || frappe.boot.time_zone.system_time_zone : frappe.sys_defaults.time_zone;
let date = moment.tz(time_zone);
return as_obj ? frappe.datetime.moment_to_date_obj(date) : date.format(format);
},