From 958f970dd51a06daa9aad57f7f9b4226934373a8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 28 May 2015 12:30:37 +0530 Subject: [PATCH] [enhancement] scheduler log in notifications --- frappe/core/doctype/scheduler_log/scheduler_log.json | 11 ++++++++++- frappe/core/doctype/scheduler_log/scheduler_log.py | 9 ++++++++- .../core/doctype/scheduler_log/scheduler_log_list.js | 11 +++++++++++ .../core/doctype/scheduler_log/test_scheduler_log.py | 12 ++++++++++++ frappe/core/notifications.py | 3 +++ frappe/hooks.py | 1 + frappe/patches.txt | 1 + frappe/patches/v5_0/expire_old_scheduler_logs.py | 7 +++++++ frappe/public/js/frappe/form/script_manager.js | 3 ++- frappe/public/js/frappe/misc/datetime.js | 6 ++++++ 10 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 frappe/core/doctype/scheduler_log/scheduler_log_list.js create mode 100644 frappe/core/doctype/scheduler_log/test_scheduler_log.py create mode 100644 frappe/patches/v5_0/expire_old_scheduler_logs.py diff --git a/frappe/core/doctype/scheduler_log/scheduler_log.json b/frappe/core/doctype/scheduler_log/scheduler_log.json index 0d747223c0..cd87f27920 100644 --- a/frappe/core/doctype/scheduler_log/scheduler_log.json +++ b/frappe/core/doctype/scheduler_log/scheduler_log.json @@ -6,6 +6,15 @@ "doctype": "DocType", "document_type": "System", "fields": [ + { + "default": "0", + "fieldname": "seen", + "fieldtype": "Check", + "hidden": 1, + "label": "Seen", + "permlevel": 0, + "precision": "" + }, { "fieldname": "method", "fieldtype": "Data", @@ -22,7 +31,7 @@ ], "icon": "icon-warning-sign", "idx": 1, - "modified": "2015-02-05 05:11:46.339879", + "modified": "2015-05-28 02:49:12.819934", "modified_by": "Administrator", "module": "Core", "name": "Scheduler Log", diff --git a/frappe/core/doctype/scheduler_log/scheduler_log.py b/frappe/core/doctype/scheduler_log/scheduler_log.py index a52d0efa2c..bb841405bd 100644 --- a/frappe/core/doctype/scheduler_log/scheduler_log.py +++ b/frappe/core/doctype/scheduler_log/scheduler_log.py @@ -9,4 +9,11 @@ import frappe from frappe.model.document import Document class SchedulerLog(Document): - pass \ No newline at end of file + def onload(self): + if not self.seen: + self.seen = 1 + self.save() + +def set_old_logs_as_seen(): + frappe.db.sql("""update `tabScheduler Log` set seen=1 + where ifnull(seen, 0)=0 and datediff(curdate(), creation) > 7""") diff --git a/frappe/core/doctype/scheduler_log/scheduler_log_list.js b/frappe/core/doctype/scheduler_log/scheduler_log_list.js new file mode 100644 index 0000000000..bb37614d78 --- /dev/null +++ b/frappe/core/doctype/scheduler_log/scheduler_log_list.js @@ -0,0 +1,11 @@ +frappe.listview_settings['Scheduler Log'] = { + add_fields: ["seen"], + get_indicator: function(doc) { + if(cint(doc.seen)) { + return [__("Seen"), "green", "seen,=,1"]; + } else { + return [__("Not Seen"), "red", "seen,=,0"]; + } + }, + order_by: "seen asc, modified desc", +}; diff --git a/frappe/core/doctype/scheduler_log/test_scheduler_log.py b/frappe/core/doctype/scheduler_log/test_scheduler_log.py new file mode 100644 index 0000000000..39594cdd95 --- /dev/null +++ b/frappe/core/doctype/scheduler_log/test_scheduler_log.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +# test_records = frappe.get_test_records('Scheduler Log') + +class TestSchedulerLog(unittest.TestCase): + pass diff --git a/frappe/core/notifications.py b/frappe/core/notifications.py index e1bf27da52..96ce779f25 100644 --- a/frappe/core/notifications.py +++ b/frappe/core/notifications.py @@ -6,6 +6,9 @@ import frappe def get_notification_config(): return { + "for_doctype": { + "Scheduler Log": {"seen": 0}, + }, "for_module_doctypes": { "ToDo": "To Do", "Event": "Calendar", diff --git a/frappe/hooks.py b/frappe/hooks.py index f2afb2379e..c0474f24e5 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -119,6 +119,7 @@ scheduler_events = { "daily": [ "frappe.email.bulk.clear_outbox", "frappe.desk.notifications.clear_notifications", + "frappe.core.doctype.scheduler_log.scheduler_log.set_old_logs_as_seen", "frappe.desk.doctype.event.event.send_event_digest", "frappe.sessions.clear_expired_sessions", "frappe.email.doctype.email_alert.email_alert.trigger_daily_alerts", diff --git a/frappe/patches.txt b/frappe/patches.txt index cca44b24d9..c306188ee8 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -79,3 +79,4 @@ execute:frappe.db.sql("update tabUser set new_password='' where ifnull(new_passw frappe.patches.v5_0.fix_text_editor_file_urls execute:frappe.db.sql("update `tabComment` set comment_type='Comment' where comment_doctype='Blog Post' and ifnull(comment_type, '')=''") frappe.patches.v5_0.modify_session +frappe.patches.v5_0.expire_old_scheduler_logs diff --git a/frappe/patches/v5_0/expire_old_scheduler_logs.py b/frappe/patches/v5_0/expire_old_scheduler_logs.py new file mode 100644 index 0000000000..3c4b12a356 --- /dev/null +++ b/frappe/patches/v5_0/expire_old_scheduler_logs.py @@ -0,0 +1,7 @@ +import frappe + +def execute(): + frappe.reload_doctype("Scheduler Log") + + from frappe.core.doctype.scheduler_log.scheduler_log import set_old_logs_as_seen + set_old_logs_as_seen() diff --git a/frappe/public/js/frappe/form/script_manager.js b/frappe/public/js/frappe/form/script_manager.js index e2f4f3b77b..e70adf3112 100644 --- a/frappe/public/js/frappe/form/script_manager.js +++ b/frappe/public/js/frappe/form/script_manager.js @@ -15,7 +15,8 @@ frappe.ui.form.on = frappe.ui.form.on_change = function(doctype, fieldname, hand // add last handler to events so it can be called as // frm.events.handler(frm) - cur_frm.events[fieldname] = handler; + if(cur_frm && cur_frm.doctype===doctype) + cur_frm.events[fieldname] = handler; } if (!handler && $.isPlainObject(fieldname)) { diff --git a/frappe/public/js/frappe/misc/datetime.js b/frappe/public/js/frappe/misc/datetime.js index f15e9132dc..a3d3e46608 100644 --- a/frappe/public/js/frappe/misc/datetime.js +++ b/frappe/public/js/frappe/misc/datetime.js @@ -12,10 +12,16 @@ $.extend(frappe.datetime, { return moment.tz(date, sys_defaults.time_zone).utc() .utcOffset(moment.user_utc_offset).format(moment.defaultDatetimeFormat); }, + convert_to_system_tz: function(date) { return moment(date).utc() .utcOffset(moment.system_utc_offset).format(moment.defaultDatetimeFormat); }, + + is_timezone_same: function() { + return moment().tz(sys_defaults.time_zone).utcOffset() === moment().utcOffset(); + }, + str_to_obj: function(d) { return moment(d, moment.defaultDatetimeFormat)._d; },