fix: run log notifier from client side

This commit is contained in:
Saurabh 2020-10-13 14:12:14 +05:30
parent 07e4885775
commit 697a9e0cf2
3 changed files with 37 additions and 19 deletions

View file

@ -30,23 +30,22 @@ def run_log_clean_up():
doc = frappe.get_doc("Log Settings")
doc.clear_logs()
def show_error_log_reminder():
users_to_notify = get_users_to_notify()
@frappe.whitelist()
def has_unseen_error_log(user):
if frappe.db.count("Error Log", filters={'seen': 0}) > 0:
for user in users_to_notify:
frappe.publish_realtime('msgprint', {
"message": _("You have unseen {0}").format('<a href="/desk#List/Error%20Log/List"> Error Log </a>'),
"alert":1,
"indicator" :"red"
}, user=user)
def _get_response(show_alert=True):
return {
'show_alert': True,
'message': _("You have unseen {0}").format('<a href="/desk#List/Error%20Log/List"> Error Logs </a>')
}
def get_users_to_notify():
from frappe.email import get_system_managers
log_settings = frappe.get_doc('Log Settings')
if log_settings.users_to_notify:
return [u.user for u in log_settings.users_to_notify]
else:
return get_system_managers()
if frappe.db.sql_list("select name from `tabError Log` where seen = 0 limit 1"):
log_settings = frappe.get_cached_doc('Log Settings')
if log_settings.users_to_notify:
if user in [u.user for u in log_settings.users_to_notify]:
return _get_response()
else:
return _get_response(show_alert=False)
else:
return _get_response()

View file

@ -183,8 +183,7 @@ scheduler_events = {
"0/15 * * * *": [
"frappe.oauth.delete_oauth2_data",
"frappe.website.doctype.web_page.web_page.check_publish_status",
"frappe.twofactor.delete_all_barcodes_for_users",
"frappe.core.doctype.log_settings.log_settings.show_error_log_reminder"
"frappe.twofactor.delete_all_barcodes_for_users"
]
},
"all": [

View file

@ -139,6 +139,26 @@ frappe.Application = Class.extend({
}
});
}, 300000); // check every 5 minutes
if(frappe.user.has_role("System Manager")){
setInterval(function() {
frappe.call({
method: 'frappe.core.doctype.log_settings.log_settings.has_unseen_error_log',
args: {
user: frappe.session.user
},
callback: function(r) {
console.log(r);
if(r.message.show_alert){
frappe.show_alert({
indicator: 'red',
message: r.message.message
});
}
}
});
}, 600000); // check every 10 minutes
}
}
this.fetch_tags();