From eafecf9241c97381864ee3925612d3d550a728e3 Mon Sep 17 00:00:00 2001 From: Dominik Date: Thu, 19 Oct 2017 10:01:28 +0200 Subject: [PATCH 1/2] [New Integration] Googlemaps and edit Standard Reply Naming --- frappe/config/integrations.py | 11 +- .../standard_reply/standard_reply.json | 50 +++++- .../standard_reply/test_standard_reply.js | 23 +++ .../doctype/google_maps/__init__.py | 0 .../doctype/google_maps/google_maps.js | 8 + .../doctype/google_maps/google_maps.json | 152 ++++++++++++++++++ .../doctype/google_maps/google_maps.py | 10 ++ .../doctype/google_maps/test_google_maps.js | 23 +++ .../doctype/google_maps/test_google_maps.py | 10 ++ requirements.txt | 1 + 10 files changed, 282 insertions(+), 6 deletions(-) create mode 100644 frappe/email/doctype/standard_reply/test_standard_reply.js create mode 100644 frappe/integrations/doctype/google_maps/__init__.py create mode 100644 frappe/integrations/doctype/google_maps/google_maps.js create mode 100644 frappe/integrations/doctype/google_maps/google_maps.json create mode 100644 frappe/integrations/doctype/google_maps/google_maps.py create mode 100644 frappe/integrations/doctype/google_maps/test_google_maps.js create mode 100644 frappe/integrations/doctype/google_maps/test_google_maps.py diff --git a/frappe/config/integrations.py b/frappe/config/integrations.py index 7c28372382..1cfbc30e66 100644 --- a/frappe/config/integrations.py +++ b/frappe/config/integrations.py @@ -82,7 +82,16 @@ def get_data(): "name": "Webhook", "description": _("Webhooks calling API requests into web apps"), } - + ] + }, + { + "label": _("Other"), + "items": [ + { + "type": "doctype", + "name": "Google Maps", + "description": _("Google Maps integration"), + } ] } ] diff --git a/frappe/email/doctype/standard_reply/standard_reply.json b/frappe/email/doctype/standard_reply/standard_reply.json index b27f681270..94173c63a5 100644 --- a/frappe/email/doctype/standard_reply/standard_reply.json +++ b/frappe/email/doctype/standard_reply/standard_reply.json @@ -1,8 +1,9 @@ { "allow_copy": 0, + "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 1, - "autoname": "field:subject", + "autoname": "field:name", "beta": 0, "creation": "2014-06-19 05:20:26.331041", "custom": 0, @@ -13,6 +14,37 @@ "engine": "InnoDB", "fields": [ { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "name", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Name", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -23,6 +55,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": "Subject", @@ -40,6 +73,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -50,6 +84,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": "Response", @@ -67,6 +102,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -78,6 +114,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": "Owner", @@ -96,6 +133,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -106,6 +144,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, + "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, "length": 0, @@ -123,6 +162,7 @@ "unique": 0 }, { + "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -133,6 +173,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": "Standard Reply Help", @@ -152,18 +193,18 @@ "unique": 0 } ], + "has_web_view": 0, "hide_heading": 0, "hide_toolbar": 0, "icon": "fa fa-comment", "idx": 0, "image_view": 0, "in_create": 0, - "in_dialog": 0, "is_submittable": 0, "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-12-29 14:40:02.827994", + "modified": "2017-10-17 10:41:42.729188", "modified_by": "Administrator", "module": "Email", "name": "Standard Reply", @@ -180,7 +221,6 @@ "export": 0, "if_owner": 0, "import": 0, - "is_custom": 0, "permlevel": 0, "print": 0, "read": 1, @@ -201,7 +241,6 @@ "export": 1, "if_owner": 0, "import": 1, - "is_custom": 0, "permlevel": 0, "print": 0, "read": 1, @@ -216,6 +255,7 @@ "quick_entry": 0, "read_only": 0, "read_only_onload": 0, + "show_name_in_global_search": 0, "sort_field": "modified", "sort_order": "DESC", "track_changes": 1, diff --git a/frappe/email/doctype/standard_reply/test_standard_reply.js b/frappe/email/doctype/standard_reply/test_standard_reply.js new file mode 100644 index 0000000000..03e601fdd3 --- /dev/null +++ b/frappe/email/doctype/standard_reply/test_standard_reply.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +// rename this file from _test_[name] to test_[name] to activate +// and remove above this line + +QUnit.test("test: Standard Reply", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially([ + // insert a new Standard Reply + () => frappe.tests.make('Standard Reply', [ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/frappe/integrations/doctype/google_maps/__init__.py b/frappe/integrations/doctype/google_maps/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/integrations/doctype/google_maps/google_maps.js b/frappe/integrations/doctype/google_maps/google_maps.js new file mode 100644 index 0000000000..b91d345f2d --- /dev/null +++ b/frappe/integrations/doctype/google_maps/google_maps.js @@ -0,0 +1,8 @@ +// Copyright (c) 2017, Frappe Technologies and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Google Maps', { + refresh: function(frm) { + + } +}); diff --git a/frappe/integrations/doctype/google_maps/google_maps.json b/frappe/integrations/doctype/google_maps/google_maps.json new file mode 100644 index 0000000000..4b9a3f6411 --- /dev/null +++ b/frappe/integrations/doctype/google_maps/google_maps.json @@ -0,0 +1,152 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2017-10-16 17:13:05.684227", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "enabled", + "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": "Enabled", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "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 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "client_key", + "fieldtype": "Data", + "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": "Client Key", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "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 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "home_address", + "fieldtype": "Data", + "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": "Home Address", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "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": 0, + "is_submittable": 0, + "issingle": 1, + "istable": 0, + "max_attachments": 0, + "modified": "2017-10-16 17:13:05.684227", + "modified_by": "Administrator", + "module": "Integrations", + "name": "Google Maps", + "name_case": "", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 0, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 0, + "role": "System Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1, + "track_seen": 0 +} \ No newline at end of file diff --git a/frappe/integrations/doctype/google_maps/google_maps.py b/frappe/integrations/doctype/google_maps/google_maps.py new file mode 100644 index 0000000000..19e79cfc8a --- /dev/null +++ b/frappe/integrations/doctype/google_maps/google_maps.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.model.document import Document + +class GoogleMaps(Document): + pass diff --git a/frappe/integrations/doctype/google_maps/test_google_maps.js b/frappe/integrations/doctype/google_maps/test_google_maps.js new file mode 100644 index 0000000000..ff6a8d88a5 --- /dev/null +++ b/frappe/integrations/doctype/google_maps/test_google_maps.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +// rename this file from _test_[name] to test_[name] to activate +// and remove above this line + +QUnit.test("test: Google Maps", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially([ + // insert a new Google Maps + () => frappe.tests.make('Google Maps', [ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/frappe/integrations/doctype/google_maps/test_google_maps.py b/frappe/integrations/doctype/google_maps/test_google_maps.py new file mode 100644 index 0000000000..17e3c6a818 --- /dev/null +++ b/frappe/integrations/doctype/google_maps/test_google_maps.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies and Contributors +# See license.txt +from __future__ import unicode_literals + +import frappe +import unittest + +class TestGoogleMaps(unittest.TestCase): + pass diff --git a/requirements.txt b/requirements.txt index 97cae9b188..9371f2eba8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,3 +50,4 @@ pypng premailer psycopg2 croniter +googlemaps From aa78c34664ca7dbecf63dc0ef49279f330fc01b8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 10 Nov 2017 12:42:33 +0530 Subject: [PATCH 2/2] Update integrations.py and Standard Reply naming --- frappe/config/integrations.py | 2 +- .../standard_reply/standard_reply.json | 34 ++----------------- .../doctype/google_maps/google_maps.js | 3 -- .../doctype/google_maps/google_maps.py | 16 +++++++++ .../doctype/google_maps/test_google_maps.py | 2 -- 5 files changed, 19 insertions(+), 38 deletions(-) diff --git a/frappe/config/integrations.py b/frappe/config/integrations.py index 1cfbc30e66..87f2b01614 100644 --- a/frappe/config/integrations.py +++ b/frappe/config/integrations.py @@ -85,7 +85,7 @@ def get_data(): ] }, { - "label": _("Other"), + "label": _("Maps"), "items": [ { "type": "doctype", diff --git a/frappe/email/doctype/standard_reply/standard_reply.json b/frappe/email/doctype/standard_reply/standard_reply.json index 94173c63a5..4765e3f3ad 100644 --- a/frappe/email/doctype/standard_reply/standard_reply.json +++ b/frappe/email/doctype/standard_reply/standard_reply.json @@ -3,7 +3,7 @@ "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 1, - "autoname": "field:name", + "autoname": "Prompt", "beta": 0, "creation": "2014-06-19 05:20:26.331041", "custom": 0, @@ -13,36 +13,6 @@ "editable_grid": 0, "engine": "InnoDB", "fields": [ - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "name", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Name", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -204,7 +174,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-10-17 10:41:42.729188", + "modified": "2017-11-10 08:25:07.708599", "modified_by": "Administrator", "module": "Email", "name": "Standard Reply", diff --git a/frappe/integrations/doctype/google_maps/google_maps.js b/frappe/integrations/doctype/google_maps/google_maps.js index b91d345f2d..2205b9c05b 100644 --- a/frappe/integrations/doctype/google_maps/google_maps.js +++ b/frappe/integrations/doctype/google_maps/google_maps.js @@ -2,7 +2,4 @@ // For license information, please see license.txt frappe.ui.form.on('Google Maps', { - refresh: function(frm) { - - } }); diff --git a/frappe/integrations/doctype/google_maps/google_maps.py b/frappe/integrations/doctype/google_maps/google_maps.py index 19e79cfc8a..7fb622e7ca 100644 --- a/frappe/integrations/doctype/google_maps/google_maps.py +++ b/frappe/integrations/doctype/google_maps/google_maps.py @@ -5,6 +5,22 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document +import datetime class GoogleMaps(Document): pass + +def round_timedelta(td, period): + """Round timedelta""" + period_seconds = period.total_seconds() + half_period_seconds = period_seconds / 2 + remainder = td.total_seconds() % period_seconds + if remainder >= half_period_seconds: + return datetime.timedelta(seconds=td.total_seconds() + (period_seconds - remainder)) + else: + return datetime.timedelta(seconds=td.total_seconds() - remainder) + +def customer_address_format(address): + """Customer Address format """ + address = frappe.get_doc('Address', address) + return '{}, {}, {}, {}'.format(address.address_line1, address.city, address.pincode, address.country) diff --git a/frappe/integrations/doctype/google_maps/test_google_maps.py b/frappe/integrations/doctype/google_maps/test_google_maps.py index 17e3c6a818..8fe158186d 100644 --- a/frappe/integrations/doctype/google_maps/test_google_maps.py +++ b/frappe/integrations/doctype/google_maps/test_google_maps.py @@ -2,8 +2,6 @@ # Copyright (c) 2017, Frappe Technologies and Contributors # See license.txt from __future__ import unicode_literals - -import frappe import unittest class TestGoogleMaps(unittest.TestCase):