From 5e55f66db29a5aa7cabe46d3139a392c5d12cf1f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sun, 2 Apr 2017 21:17:06 +0530 Subject: [PATCH 1/8] [minor] fix rename_doc for old patches --- frappe/model/rename_doc.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py index a560aa2284..e80c8900a7 100644 --- a/frappe/model/rename_doc.py +++ b/frappe/model/rename_doc.py @@ -152,12 +152,17 @@ def update_child_docs(old, new, meta): def update_link_field_values(link_fields, old, new, doctype): for field in link_fields: if field['issingle']: - single_doc = frappe.get_doc(field['parent']) - if single_doc.get(field['fieldname'])==old: - single_doc.set(field['fieldname'], new) - # update single docs using ORM rather then query - # as single docs also sometimes sets defaults! - single_doc.save(ignore_permissions=True) + try: + single_doc = frappe.get_doc(field['parent']) + if single_doc.get(field['fieldname'])==old: + single_doc.set(field['fieldname'], new) + # update single docs using ORM rather then query + # as single docs also sometimes sets defaults! + single_doc.save(ignore_permissions=True) + except ImportError: + # fails in patches where the doctype has been renamed + # or no longer exists + pass else: # because the table hasn't been renamed yet! parent = field['parent'] if field['parent']!=new else old From 12775c9a5f6099fe62c4d2115609d1142d3b1ef3 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 3 Apr 2017 09:34:18 +0530 Subject: [PATCH 2/8] [fixes] listview strip and email inbox list view --- frappe/config/desktop.py | 25 ++++++++++--------- frappe/desk/page/modules/modules.js | 3 ++- frappe/patches.txt | 1 + frappe/public/js/frappe/desk.js | 4 +++ frappe/public/js/frappe/list/list_renderer.js | 2 +- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/frappe/config/desktop.py b/frappe/config/desktop.py index 8acdd446ab..72f3b8bafa 100644 --- a/frappe/config/desktop.py +++ b/frappe/config/desktop.py @@ -3,17 +3,6 @@ from frappe import _ def get_data(): return [ - { - "module_name": 'Core', - "type": 'list', - "label": _('Email Inbox'), - "_label": _('Email Inbox'), - "_id": 'Email Inbox', - "_doctype": 'Communication', - "icon": 'fa fa-envelope-o', - "color": '#589494', - "link": 'List/Communication/Inbox' - }, { "module_name": "Desk", "label": _("Tools"), @@ -54,9 +43,21 @@ def get_data(): "type": "module", "hidden": 1 }, + { + "module_name": 'Email Inbox', + "type": 'list', + "label": 'Email Inbox', + "_label": _('Email Inbox'), + "_id": 'Email Inbox', + "_doctype": 'Communication', + "icon": 'fa fa-envelope-o', + "color": '#589494', + "link": 'List/Communication/Inbox' + }, { "module_name": "Core", - "label": _("Developer"), + "label": "Developer", + "_label": _("Developer"), "color": "#589494", "icon": "octicon octicon-circuit-board", "type": "module", diff --git a/frappe/desk/page/modules/modules.js b/frappe/desk/page/modules/modules.js index f8f9569baa..e5d22f8d9e 100644 --- a/frappe/desk/page/modules/modules.js +++ b/frappe/desk/page/modules/modules.js @@ -28,7 +28,8 @@ frappe.pages['modules'].on_page_load = function(wrapper) { // render sidebar page.sidebar.html(frappe.render_template('modules_sidebar', - {modules: frappe.get_desktop_icons(true)})); + {modules: frappe.get_desktop_icons(true).sort( + function(a, b){ return (a._label > b._label) ? 1 : -1 })})); // help click page.main.on("click", '.module-section-link[data-type="help"]', function(event) { diff --git a/frappe/patches.txt b/frappe/patches.txt index e530148662..39789001be 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -174,3 +174,4 @@ frappe.patches.v8_0.deprecate_integration_broker frappe.patches.v8_0.setup_email_inbox #2017-03-29 frappe.patches.v8_0.newsletter_childtable_migrate execute:frappe.db.sql("delete from `tabDesktop Icon` where module_name='Communication'") +execute:frappe.db.sql("update `tabDesktop Icon` set type='list' where _doctype='Communication'") diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index f4703d3787..11c6375cc7 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -444,6 +444,10 @@ frappe.get_module = function(m, default_module) { frappe.get_desktop_icons = function(show_hidden, show_global) { // filter valid icons + + // hidden == hidden from desktop + // blocked == no view from modules either + var out = []; var add_to_out = function(module) { diff --git a/frappe/public/js/frappe/list/list_renderer.js b/frappe/public/js/frappe/list/list_renderer.js index e1660cc891..0030c8a3b9 100644 --- a/frappe/public/js/frappe/list/list_renderer.js +++ b/frappe/public/js/frappe/list/list_renderer.js @@ -429,7 +429,7 @@ frappe.views.ListRenderer = Class.extend({ data._submittable = frappe.model.is_submittable(this.doctype); var title_field = frappe.get_meta(this.doctype).title_field || 'name'; - data._title = strip_html(data[title_field]) || data.name; + data._title = strip_html(data[title_field] || data.name); data._full_title = data._title; if (data._title.length > 35) { From 04331023a2b302998c86ae98c18a5d8f3c1e22ea Mon Sep 17 00:00:00 2001 From: mbauskar Date: Mon, 3 Apr 2017 11:50:31 +0530 Subject: [PATCH 3/8] [minor] minor fixes in email_account and added has_attachment in communication_list.js --- frappe/core/doctype/communication/communication_list.js | 3 ++- frappe/email/doctype/email_account/email_account.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/frappe/core/doctype/communication/communication_list.js b/frappe/core/doctype/communication/communication_list.js index e7caf6938f..69cad3ceba 100644 --- a/frappe/core/doctype/communication/communication_list.js +++ b/frappe/core/doctype/communication/communication_list.js @@ -2,7 +2,8 @@ frappe.listview_settings['Communication'] = { add_fields: [ "sent_or_received","recipients", "subject", "communication_medium", "communication_type", - "sender", "seen", "reference_doctype", "reference_name" + "sender", "seen", "reference_doctype", "reference_name", + "has_attachment" ], filters: [["status", "=", "Open"]], diff --git a/frappe/email/doctype/email_account/email_account.py b/frappe/email/doctype/email_account/email_account.py index 92e2e3f644..b330b1570d 100755 --- a/frappe/email/doctype/email_account/email_account.py +++ b/frappe/email/doctype/email_account/email_account.py @@ -247,6 +247,9 @@ class EmailAccount(Document): email_sync_rule = self.build_email_sync_rule() email_server = self.get_incoming_server(in_receive=True, email_sync_rule=email_sync_rule) + if not email_server: + return + emails = email_server.get_messages() incoming_mails = emails.get("latest_messages") @@ -595,6 +598,9 @@ class EmailAccount(Document): uid_list = { flag.get("uid", None): flag.get("action", "Read") for flag in flags } if flags and uid_list: email_server = self.get_incoming_server() + if not email_server: + return + email_server.update_flag(uid_list=uid_list) # mark communication as read From 38e6cdd166c7586f267ca370468c98d8b6ca1c97 Mon Sep 17 00:00:00 2001 From: mbauskar Date: Mon, 3 Apr 2017 11:45:44 +0530 Subject: [PATCH 4/8] [minor] fixes in feedback trigger, and feedback web page --- .../feedback_trigger/feedback_trigger.py | 7 +- frappe/www/feedback.html | 75 ++++++++++--------- frappe/www/feedback.py | 18 +++-- 3 files changed, 59 insertions(+), 41 deletions(-) diff --git a/frappe/core/doctype/feedback_trigger/feedback_trigger.py b/frappe/core/doctype/feedback_trigger/feedback_trigger.py index de39611517..54409166f0 100644 --- a/frappe/core/doctype/feedback_trigger/feedback_trigger.py +++ b/frappe/core/doctype/feedback_trigger/feedback_trigger.py @@ -70,7 +70,10 @@ def send_feedback_request(reference_doctype, reference_name, trigger="Manual", d def get_feedback_request_details(reference_doctype, reference_name, trigger="Manual", request=None): feedback_url = "" - if not trigger and not request and not frappe.db.get_value("Feedback Trigger", { "document_type": reference_doctype }): + if not frappe.db.get_value(reference_doctype, reference_name): + # reference document is either deleted or renamed + return + elif not trigger and not request and not frappe.db.get_value("Feedback Trigger", { "document_type": reference_doctype }): return elif not trigger and request: trigger = frappe.db.get_value("Feedback Request", request, "feedback_trigger") @@ -81,8 +84,8 @@ def get_feedback_request_details(reference_doctype, reference_name, trigger="Man return feedback_trigger = frappe.get_doc("Feedback Trigger", trigger) - doc = frappe.get_doc(reference_doctype, reference_name) + doc = frappe.get_doc(reference_doctype, reference_name) context = get_context(doc) recipients = doc.get(feedback_trigger.email_fieldname, None) diff --git a/frappe/www/feedback.html b/frappe/www/feedback.html index e23f3347cc..dbd5860a96 100644 --- a/frappe/www/feedback.html +++ b/frappe/www/feedback.html @@ -2,46 +2,53 @@ {% block title %}{{ _("Feedback") }}{% endblock %} -{% block page_content %} - -