From 94e216ba8a324983b1d5fc30d1e0453cb6c187fa Mon Sep 17 00:00:00 2001 From: shridhar Date: Fri, 15 Sep 2017 16:35:55 +0530 Subject: [PATCH] Email notification on docshare Send an email notification when a doc is shared New notify_by_email colum added in docshare Checkbox added in set_sharing.html --- frappe/core/doctype/docshare/docshare.json | 52 +++++++++++++++++-- frappe/public/js/frappe/form/share.js | 3 +- .../js/frappe/form/templates/set_sharing.html | 2 + frappe/share.py | 21 +++++++- 4 files changed, 73 insertions(+), 5 deletions(-) diff --git a/frappe/core/doctype/docshare/docshare.json b/frappe/core/doctype/docshare/docshare.json index 83d837b7f8..7c5d56c4af 100644 --- a/frappe/core/doctype/docshare/docshare.json +++ b/frappe/core/doctype/docshare/docshare.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 0, "autoname": "hash", @@ -13,6 +14,7 @@ "editable_grid": 0, "fields": [ { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -23,6 +25,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 1, "in_standard_filter": 0, "label": "User", @@ -42,6 +45,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -52,6 +56,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 1, "in_standard_filter": 0, "label": "Document Type", @@ -71,6 +76,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -81,6 +87,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 1, "in_standard_filter": 0, "label": "Document Name", @@ -100,6 +107,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -111,6 +119,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, "label": "Read", @@ -129,6 +138,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -140,6 +150,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, "label": "Write", @@ -158,6 +169,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -169,6 +181,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, "label": "Share", @@ -187,6 +200,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -197,6 +211,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, "label": "Everyone", @@ -213,19 +228,50 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "1", + "fieldname": "notify_by_email", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Notify by email", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], + "has_web_view": 0, "hide_heading": 0, "hide_toolbar": 0, "idx": 0, "image_view": 0, "in_create": 1, - "in_dialog": 0, "is_submittable": 0, "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-12-29 14:40:40.284335", + "modified": "2017-09-15 15:58:34.126438", "modified_by": "Administrator", "module": "Core", "name": "DocShare", @@ -242,7 +288,6 @@ "export": 1, "if_owner": 0, "import": 1, - "is_custom": 0, "permlevel": 0, "print": 0, "read": 1, @@ -257,6 +302,7 @@ "quick_entry": 0, "read_only": 1, "read_only_onload": 0, + "show_name_in_global_search": 0, "sort_field": "modified", "sort_order": "DESC", "track_changes": 1, diff --git a/frappe/public/js/frappe/form/share.js b/frappe/public/js/frappe/form/share.js index 828ea69ede..a44a61eeb4 100644 --- a/frappe/public/js/frappe/form/share.js +++ b/frappe/public/js/frappe/form/share.js @@ -140,7 +140,8 @@ frappe.ui.form.Share = Class.extend({ user: user, read: $(d.body).find(".add-share-read").prop("checked") ? 1 : 0, write: $(d.body).find(".add-share-write").prop("checked") ? 1 : 0, - share: $(d.body).find(".add-share-share").prop("checked") ? 1 : 0 + share: $(d.body).find(".add-share-share").prop("checked") ? 1 : 0, + notify: $(d.body).find(".add-share-notify").prop("checked") ? 1 : 0 }, btn: this, callback: function(r) { diff --git a/frappe/public/js/frappe/form/templates/set_sharing.html b/frappe/public/js/frappe/form/templates/set_sharing.html index 0452dc7fd6..33e19c0139 100644 --- a/frappe/public/js/frappe/form/templates/set_sharing.html +++ b/frappe/public/js/frappe/form/templates/set_sharing.html @@ -51,5 +51,7 @@

+ {%= __("Notify via email")%} + {% } %} diff --git a/frappe/share.py b/frappe/share.py index e277570504..3ca0d13f12 100644 --- a/frappe/share.py +++ b/frappe/share.py @@ -7,8 +7,9 @@ from frappe import _ from frappe.utils import cint @frappe.whitelist() -def add(doctype, name, user=None, read=1, write=0, share=0, everyone=0, flags=None): +def add(doctype, name, user=None, read=1, write=0, share=0, everyone=0, flags=None, notify=0): """Share the given document with a user.""" + print notify, share if not user: user = frappe.session.user @@ -39,6 +40,7 @@ def add(doctype, name, user=None, read=1, write=0, share=0, everyone=0, flags=No }) doc.save(ignore_permissions=True) + notify_assignment(user, doctype, name, description=None, notify=notify) return doc @@ -134,3 +136,20 @@ def check_share_permission(doctype, name): """Check if the user can share with other users""" if not frappe.has_permission(doctype, ptype="share", doc=name): frappe.throw(_("No permission to {0} {1} {2}".format("share", doctype, name)), frappe.PermissionError) + +def notify_assignment(shared_by, doc_type, doc_name, description=None, notify=0): + + if not (shared_by and doc_type and doc_name): return + + from frappe.utils import get_link_to_form + document = get_link_to_form(doc_type, doc_name, label="%s: %s" % (doc_type, doc_name)) + + arg = { + 'contact': shared_by, + 'txt': _("A new document {0} has been shared by with you {1}.").format(document, + shared_by), + 'notify': notify + } + + from frappe.desk.page.chat import chat + chat.post(**arg)