From 6bdcae1201de560971dc882c901ad18eb7f71f26 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Fri, 28 May 2021 21:19:21 +0530 Subject: [PATCH 01/19] feat: add number format parameter in doc.get_formatted --- frappe/model/base_document.py | 4 ++-- frappe/utils/formatters.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index 54d77ba988..1ac07f5fb7 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -862,7 +862,7 @@ class BaseDocument(object): return self._precision[cache_key][fieldname] - def get_formatted(self, fieldname, doc=None, currency=None, absolute_value=False, translated=False): + def get_formatted(self, fieldname, doc=None, currency=None, absolute_value=False, translated=False, format=None): from frappe.utils.formatters import format_value df = self.meta.get_field(fieldname) @@ -886,7 +886,7 @@ class BaseDocument(object): if (absolute_value or doc.get('absolute_value')) and isinstance(val, (int, float)): val = abs(self.get(fieldname)) - return format_value(val, df=df, doc=doc, currency=currency) + return format_value(val, df=df, doc=doc, currency=currency, format=format) def is_print_hide(self, fieldname, df=None, for_print=True): """Returns true if fieldname is to be hidden for print. diff --git a/frappe/utils/formatters.py b/frappe/utils/formatters.py index 7913413878..c0c7e4bca0 100644 --- a/frappe/utils/formatters.py +++ b/frappe/utils/formatters.py @@ -9,7 +9,7 @@ from frappe.model.meta import get_field_currency, get_field_precision import re from six import string_types -def format_value(value, df=None, doc=None, currency=None, translated=False): +def format_value(value, df=None, doc=None, currency=None, translated=False, format=None): '''Format value based on given fieldtype, document reference, currency reference. If docfield info (df) is not given, it will try and guess based on the datatype of the value''' if isinstance(df, string_types): @@ -58,7 +58,7 @@ def format_value(value, df=None, doc=None, currency=None, translated=False): elif df.get("fieldtype") == "Currency": default_currency = frappe.db.get_default("currency") currency = currency or get_field_currency(df, doc) or default_currency - return fmt_money(value, precision=get_field_precision(df, doc), currency=currency) + return fmt_money(value, precision=get_field_precision(df, doc), currency=currency, format=format) elif df.get("fieldtype") == "Float": precision = get_field_precision(df, doc) From 4bafae6e38d898096c49ce2bf5600f0772f05f17 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Sat, 12 Jun 2021 22:04:00 +0530 Subject: [PATCH 02/19] fix: add test cases --- frappe/tests/test_document.py | 26 ++++++++++++++++++++++++++ frappe/tests/test_fmt_money.py | 3 +++ frappe/tests/test_formatter.py | 23 ++++++++++++++++++++++- 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index 1a5a8721fd..eca547e9bd 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -229,3 +229,29 @@ class TestDocument(unittest.TestCase): self.assertEqual(frappe.db.get_value("Currency", d.name), d.name) frappe.delete_doc_if_exists("Currency", "Frappe Coin", 1) + + def test_get_formatted(self): + frappe.get_doc({ + 'doctype': 'DocType', + 'name': 'Test Formatted', + 'module': 'Custom', + 'custom': 1, + 'istable': 1, + 'fields': [ + {'label': 'Currency', 'fieldname': 'currency', 'reqd': 1, 'fieldtype': 'Currency'}, + ] + }).insert() + + frappe.delete_doc_if_exists("Currency", "INR", 1) + + d = frappe.get_doc({ + 'doctype': 'Currency', + 'currency_name': 'INR', + 'symbol': '₹', + }).insert() + + d = frappe.get_doc({ + 'doctype': 'Test Formatted', + 'currency': 100000 + }) + self.assertEquals(d.get_formatted('curency', currency='INR', format="#,###.##"), '₹ 100,000.00') \ No newline at end of file diff --git a/frappe/tests/test_fmt_money.py b/frappe/tests/test_fmt_money.py index a1321658b7..8d76b4dcb4 100644 --- a/frappe/tests/test_fmt_money.py +++ b/frappe/tests/test_fmt_money.py @@ -94,6 +94,9 @@ class TestFmtMoney(unittest.TestCase): self.assertEqual(fmt_money(1000.456), "1.000,456") frappe.db.set_default("currency_precision", "") + def test_custom_fmt_money_format(self): + self.assertEqual(fmt_money(100000, format="#,###.##"), '100,000.00') + if __name__=="__main__": frappe.connect() unittest.main() \ No newline at end of file diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index 5257e1c717..5423d92520 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -22,4 +22,25 @@ class TestFormatter(unittest.TestCase): doc.currency = 'USD' self.assertEqual(format(100, df, doc), "$ 100.00") - frappe.db.set_default("currency", None) \ No newline at end of file + frappe.db.set_default("currency", None) + + def test_custom_currency_formatting(self): + df = frappe._dict({ + 'fieldname': 'amount', + 'fieldtype': 'Currency', + 'options': 'currency' + }) + + doc = frappe._dict({ + 'amount': 5 + }) + frappe.db.set_default("currency", 'INR') + + # if currency field is not passed then default currency should be used. + self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') + + doc.currency = 'USD' + self.assertEqual(format(100000, df, doc, format="#,###.##"), '$ 100,000.00') + + frappe.db.set_default("currency", None) + \ No newline at end of file From 3336915dae72836ff85396f2c344422348bc9e8d Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Sat, 12 Jun 2021 23:15:47 +0530 Subject: [PATCH 03/19] fix: test_document test --- frappe/tests/test_document.py | 1 - 1 file changed, 1 deletion(-) diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index eca547e9bd..a70f99aaad 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -236,7 +236,6 @@ class TestDocument(unittest.TestCase): 'name': 'Test Formatted', 'module': 'Custom', 'custom': 1, - 'istable': 1, 'fields': [ {'label': 'Currency', 'fieldname': 'currency', 'reqd': 1, 'fieldtype': 'Currency'}, ] From 13caf6910a4bc041a863db0106a9ec1b7b62668b Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Tue, 15 Jun 2021 22:33:06 +0530 Subject: [PATCH 04/19] fix: test_document test fix --- frappe/tests/test_document.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index a70f99aaad..ed4901a79a 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -253,4 +253,4 @@ class TestDocument(unittest.TestCase): 'doctype': 'Test Formatted', 'currency': 100000 }) - self.assertEquals(d.get_formatted('curency', currency='INR', format="#,###.##"), '₹ 100,000.00') \ No newline at end of file + self.assertEquals(d.get_formatted('currency', currency='INR', format="#,###.##"), '₹ 100,000.00') \ No newline at end of file From f5e40141af794ae770df3c39ee130a8509b07f50 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Tue, 15 Jun 2021 22:46:05 +0530 Subject: [PATCH 05/19] fix: readding test for test_formatter --- frappe/tests/test_formatter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index 5423d92520..636f3d970d 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -40,7 +40,6 @@ class TestFormatter(unittest.TestCase): self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') doc.currency = 'USD' - self.assertEqual(format(100000, df, doc, format="#,###.##"), '$ 100,000.00') + self.assertEqual(format(100000, df, doc, format="#,###.##"), "$ 100,000.00") frappe.db.set_default("currency", None) - \ No newline at end of file From bfc7c6b10c4dd234f9534e6de5089a4bcbb8cc6b Mon Sep 17 00:00:00 2001 From: shariquerik Date: Mon, 21 Jun 2021 14:42:19 +0530 Subject: [PATCH 06/19] fix: datetime field form validation fix --- frappe/public/js/frappe/form/controls/base_control.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/controls/base_control.js b/frappe/public/js/frappe/form/controls/base_control.js index d6c268a28a..ee40bbe43d 100644 --- a/frappe/public/js/frappe/form/controls/base_control.js +++ b/frappe/public/js/frappe/form/controls/base_control.js @@ -160,7 +160,13 @@ frappe.ui.form.Control = class BaseControl { validate_and_set_in_model(value, e) { var me = this; let force_value_set = (this.doc && this.doc.__run_link_triggers); - let is_value_same = (this.get_model_value() === value); + let model_value = this.get_model_value(); + + if (this.df && this.df.fieldtype == 'Datetime') { + model_value = frappe.datetime.get_datetime_as_string(model_value); + } + + let is_value_same = (model_value === value); if (this.inside_change_event || (!force_value_set && is_value_same)) { return Promise.resolve(); From 61deecbd7c1267d170206969b60e326e217ef6fa Mon Sep 17 00:00:00 2001 From: Mohammad Hasnain Mohsin Rajan Date: Mon, 28 Jun 2021 18:30:55 +0530 Subject: [PATCH 07/19] chore: fix tests --- frappe/tests/test_formatter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index 636f3d970d..a837573dbc 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -37,6 +37,7 @@ class TestFormatter(unittest.TestCase): frappe.db.set_default("currency", 'INR') # if currency field is not passed then default currency should be used. + print(doc.currency) self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') doc.currency = 'USD' From 4b0c67f57cd68ec591ecf100eb2ec7de77b025ba Mon Sep 17 00:00:00 2001 From: Mohammad Hasnain Mohsin Rajan Date: Mon, 28 Jun 2021 18:43:03 +0530 Subject: [PATCH 08/19] chore: debug tests --- frappe/tests/test_formatter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index a837573dbc..5ebfb3ee6d 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -37,6 +37,7 @@ class TestFormatter(unittest.TestCase): frappe.db.set_default("currency", 'INR') # if currency field is not passed then default currency should be used. + print("doc.currency") print(doc.currency) self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') From 64e37d6ab9ba7b9d3b9804d34b65a280b0b2a74b Mon Sep 17 00:00:00 2001 From: Mohammad Hasnain Mohsin Rajan Date: Tue, 29 Jun 2021 10:16:32 +0530 Subject: [PATCH 09/19] chore: debug tests --- frappe/tests/test_formatter.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index 5ebfb3ee6d..cd7b8add9d 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -39,6 +39,9 @@ class TestFormatter(unittest.TestCase): # if currency field is not passed then default currency should be used. print("doc.currency") print(doc.currency) + print("frappe.db.get_default('currency')") + print(frappe.db.get_default("currency")) + self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') doc.currency = 'USD' From 75cb917a7beee86d1d22a100f083a77b6f7ba925 Mon Sep 17 00:00:00 2001 From: shariquerik Date: Tue, 13 Jul 2021 21:31:03 +0530 Subject: [PATCH 10/19] test: UI test for datetime field form validation --- .../datetime_field_form_validation.js | 18 ++++++++++++++++++ frappe/tests/ui_test_helpers.py | 12 ++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 cypress/integration/datetime_field_form_validation.js diff --git a/cypress/integration/datetime_field_form_validation.js b/cypress/integration/datetime_field_form_validation.js new file mode 100644 index 0000000000..6a6ea4c7af --- /dev/null +++ b/cypress/integration/datetime_field_form_validation.js @@ -0,0 +1,18 @@ +context('Datetime Validation', () => { + before(() => { + cy.login(); + cy.visit('/app/communication'); + cy.window().its('frappe').then(frappe => { + frappe.call("frappe.tests.ui_test_helpers.create_communication_records"); + }); + }); + + it('datetime field form validation', () => { + cy.visit('/app/communication'); + cy.get('a[title="Test Form Communication 1"]').invoke('attr', 'data-name') + .then((name) => { + cy.visit(`/app/communication/${name}`); + cy.get('.indicator-pill').should('contain', 'Open').should('have.class', 'red'); + }) + }); +}); \ No newline at end of file diff --git a/frappe/tests/ui_test_helpers.py b/frappe/tests/ui_test_helpers.py index f56311b2e3..f4a6f474ce 100644 --- a/frappe/tests/ui_test_helpers.py +++ b/frappe/tests/ui_test_helpers.py @@ -60,6 +60,18 @@ def create_todo_records(): "description": "this is fourth todo" }).insert() +@frappe.whitelist() +def create_communication_records(): + if frappe.db.get_all('Communication', {'subject': 'Test Form Communication 1'}): + return + + frappe.get_doc({ + "doctype": "Communication", + "recipients": "test@gmail.com", + "subject": "Test Form Communication 1", + "communication_date": frappe.utils.now_datetime(), + }).insert() + @frappe.whitelist() def setup_workflow(): from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow From 98f33b59811f2cdcf9b66f1736e5bedfb77735cc Mon Sep 17 00:00:00 2001 From: shariquerik Date: Tue, 13 Jul 2021 21:56:57 +0530 Subject: [PATCH 11/19] fix: sider fix --- cypress/integration/datetime_field_form_validation.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cypress/integration/datetime_field_form_validation.js b/cypress/integration/datetime_field_form_validation.js index 6a6ea4c7af..dff1f0562c 100644 --- a/cypress/integration/datetime_field_form_validation.js +++ b/cypress/integration/datetime_field_form_validation.js @@ -10,9 +10,9 @@ context('Datetime Validation', () => { it('datetime field form validation', () => { cy.visit('/app/communication'); cy.get('a[title="Test Form Communication 1"]').invoke('attr', 'data-name') - .then((name) => { - cy.visit(`/app/communication/${name}`); - cy.get('.indicator-pill').should('contain', 'Open').should('have.class', 'red'); - }) + .then((name) => { + cy.visit(`/app/communication/${name}`); + cy.get('.indicator-pill').should('contain', 'Open').should('have.class', 'red'); + }); }); }); \ No newline at end of file From e3a1f6f1d09c4973a20c6a562697cb850cb3bc03 Mon Sep 17 00:00:00 2001 From: shariquerik Date: Wed, 14 Jul 2021 13:25:17 +0530 Subject: [PATCH 12/19] chore: Added comment --- cypress/integration/datetime_field_form_validation.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cypress/integration/datetime_field_form_validation.js b/cypress/integration/datetime_field_form_validation.js index dff1f0562c..66fdde6863 100644 --- a/cypress/integration/datetime_field_form_validation.js +++ b/cypress/integration/datetime_field_form_validation.js @@ -1,4 +1,4 @@ -context('Datetime Validation', () => { +context('Datetime Field Validation', () => { before(() => { cy.login(); cy.visit('/app/communication'); @@ -7,6 +7,7 @@ context('Datetime Validation', () => { }); }); + // validating datetime field value when value is set from backend and get validated on form load. it('datetime field form validation', () => { cy.visit('/app/communication'); cy.get('a[title="Test Form Communication 1"]').invoke('attr', 'data-name') From 4a546942e4711ce5e25c78970faa8e4b016d9137 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Tue, 20 Jul 2021 20:09:18 +0530 Subject: [PATCH 13/19] fix: currency test --- frappe/tests/test_currency_formatter.py | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 frappe/tests/test_currency_formatter.py diff --git a/frappe/tests/test_currency_formatter.py b/frappe/tests/test_currency_formatter.py new file mode 100644 index 0000000000..75cb42dc49 --- /dev/null +++ b/frappe/tests/test_currency_formatter.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +import frappe +from frappe import format +import unittest + +class TestFormatter(unittest.TestCase): + def test_custom_currency_formatting(self): + df = frappe._dict({ + 'fieldname': 'amount', + 'fieldtype': 'Currency', + 'options': 'currency' + }) + + doc = frappe._dict({ + 'amount': 5 + }) + frappe.db.set_default("currency", 'INR') + + # if currency field is not passed then default currency should be used. + print("doc.currency") + print(doc.currency) + print("frappe.db.get_default('currency')") + print(frappe.db.get_default("currency")) + + self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') + + doc.currency = 'USD' + self.assertEqual(format(100000, df, doc, format="#,###.##"), "$ 100,000.00") + + frappe.db.set_default("currency", None) From e0e1c15d760e71c78ac2a415a91f69a491a7d4c4 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Tue, 20 Jul 2021 20:10:15 +0530 Subject: [PATCH 14/19] fix: remove redundant code --- frappe/tests/test_formatter.py | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index cd7b8add9d..5257e1c717 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -22,29 +22,4 @@ class TestFormatter(unittest.TestCase): doc.currency = 'USD' self.assertEqual(format(100, df, doc), "$ 100.00") - frappe.db.set_default("currency", None) - - def test_custom_currency_formatting(self): - df = frappe._dict({ - 'fieldname': 'amount', - 'fieldtype': 'Currency', - 'options': 'currency' - }) - - doc = frappe._dict({ - 'amount': 5 - }) - frappe.db.set_default("currency", 'INR') - - # if currency field is not passed then default currency should be used. - print("doc.currency") - print(doc.currency) - print("frappe.db.get_default('currency')") - print(frappe.db.get_default("currency")) - - self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') - - doc.currency = 'USD' - self.assertEqual(format(100000, df, doc, format="#,###.##"), "$ 100,000.00") - - frappe.db.set_default("currency", None) + frappe.db.set_default("currency", None) \ No newline at end of file From e7e8fcd6221dc662feb7b5421ef40f7eb7b9414d Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Tue, 20 Jul 2021 20:32:24 +0530 Subject: [PATCH 15/19] fix: old currency test --- frappe/tests/test_currency_formatter.py | 4 ---- frappe/tests/test_formatter.py | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/frappe/tests/test_currency_formatter.py b/frappe/tests/test_currency_formatter.py index 75cb42dc49..c85f2d3c40 100644 --- a/frappe/tests/test_currency_formatter.py +++ b/frappe/tests/test_currency_formatter.py @@ -17,10 +17,6 @@ class TestFormatter(unittest.TestCase): frappe.db.set_default("currency", 'INR') # if currency field is not passed then default currency should be used. - print("doc.currency") - print(doc.currency) - print("frappe.db.get_default('currency')") - print(frappe.db.get_default("currency")) self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index 5257e1c717..701e81bb9a 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -20,6 +20,8 @@ class TestFormatter(unittest.TestCase): self.assertEqual(format(100, df, doc), '₹ 100.00') doc.currency = 'USD' + print('doc.currency') + print(doc.currency) self.assertEqual(format(100, df, doc), "$ 100.00") frappe.db.set_default("currency", None) \ No newline at end of file From 48d1d11656a61c737427dc7d488d5ce639b9ed15 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Tue, 20 Jul 2021 21:06:27 +0530 Subject: [PATCH 16/19] fix: modified original test --- frappe/tests/test_currency_formatter.py | 26 ------------------------- frappe/tests/test_formatter.py | 6 ++---- 2 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 frappe/tests/test_currency_formatter.py diff --git a/frappe/tests/test_currency_formatter.py b/frappe/tests/test_currency_formatter.py deleted file mode 100644 index c85f2d3c40..0000000000 --- a/frappe/tests/test_currency_formatter.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -import frappe -from frappe import format -import unittest - -class TestFormatter(unittest.TestCase): - def test_custom_currency_formatting(self): - df = frappe._dict({ - 'fieldname': 'amount', - 'fieldtype': 'Currency', - 'options': 'currency' - }) - - doc = frappe._dict({ - 'amount': 5 - }) - frappe.db.set_default("currency", 'INR') - - # if currency field is not passed then default currency should be used. - - self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') - - doc.currency = 'USD' - self.assertEqual(format(100000, df, doc, format="#,###.##"), "$ 100,000.00") - - frappe.db.set_default("currency", None) diff --git a/frappe/tests/test_formatter.py b/frappe/tests/test_formatter.py index 701e81bb9a..5454c2b1cd 100644 --- a/frappe/tests/test_formatter.py +++ b/frappe/tests/test_formatter.py @@ -17,11 +17,9 @@ class TestFormatter(unittest.TestCase): frappe.db.set_default("currency", 'INR') # if currency field is not passed then default currency should be used. - self.assertEqual(format(100, df, doc), '₹ 100.00') + self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00') doc.currency = 'USD' - print('doc.currency') - print(doc.currency) - self.assertEqual(format(100, df, doc), "$ 100.00") + self.assertEqual(format(100000, df, doc, format="#,###.##"), "$ 100,000.00") frappe.db.set_default("currency", None) \ No newline at end of file From d014084ae5f3b2d97a4ae9c3ff7f1f41f9bd7732 Mon Sep 17 00:00:00 2001 From: shariquerik Date: Mon, 2 Aug 2021 20:23:44 +0530 Subject: [PATCH 17/19] fix: moved datetime logic to datetime.js --- frappe/public/js/frappe/form/controls/base_control.js | 4 +--- frappe/public/js/frappe/form/controls/datetime.js | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/base_control.js b/frappe/public/js/frappe/form/controls/base_control.js index ee40bbe43d..7977458ad7 100644 --- a/frappe/public/js/frappe/form/controls/base_control.js +++ b/frappe/public/js/frappe/form/controls/base_control.js @@ -162,9 +162,7 @@ frappe.ui.form.Control = class BaseControl { let force_value_set = (this.doc && this.doc.__run_link_triggers); let model_value = this.get_model_value(); - if (this.df && this.df.fieldtype == 'Datetime') { - model_value = frappe.datetime.get_datetime_as_string(model_value); - } + model_value = this.parse_model_value && this.parse_model_value(model_value); let is_value_same = (model_value === value); diff --git a/frappe/public/js/frappe/form/controls/datetime.js b/frappe/public/js/frappe/form/controls/datetime.js index 341a933066..7a3cef2304 100644 --- a/frappe/public/js/frappe/form/controls/datetime.js +++ b/frappe/public/js/frappe/form/controls/datetime.js @@ -36,4 +36,8 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co $tp.$secondsText.prev().css('display', 'none'); } } + + parse_model_value(value) { + return frappe.datetime.get_datetime_as_string(value); + } }; From ed99915a7909e0cb53d910409531fbc13a9a1ce7 Mon Sep 17 00:00:00 2001 From: shariquerik Date: Tue, 10 Aug 2021 11:20:23 +0530 Subject: [PATCH 18/19] refactor: Refactored code --- frappe/public/js/frappe/form/controls/base_control.js | 6 +----- frappe/public/js/frappe/form/controls/datetime.js | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/base_control.js b/frappe/public/js/frappe/form/controls/base_control.js index 7977458ad7..d6c268a28a 100644 --- a/frappe/public/js/frappe/form/controls/base_control.js +++ b/frappe/public/js/frappe/form/controls/base_control.js @@ -160,11 +160,7 @@ frappe.ui.form.Control = class BaseControl { validate_and_set_in_model(value, e) { var me = this; let force_value_set = (this.doc && this.doc.__run_link_triggers); - let model_value = this.get_model_value(); - - model_value = this.parse_model_value && this.parse_model_value(model_value); - - let is_value_same = (model_value === value); + let is_value_same = (this.get_model_value() === value); if (this.inside_change_event || (!force_value_set && is_value_same)) { return Promise.resolve(); diff --git a/frappe/public/js/frappe/form/controls/datetime.js b/frappe/public/js/frappe/form/controls/datetime.js index 7a3cef2304..3fb00a6f26 100644 --- a/frappe/public/js/frappe/form/controls/datetime.js +++ b/frappe/public/js/frappe/form/controls/datetime.js @@ -37,7 +37,8 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co } } - parse_model_value(value) { + get_model_value() { + let value = super.get_model_value() return frappe.datetime.get_datetime_as_string(value); } }; From 9da6fcadc8b1062afd14d4c6943a8f1a2d07e7eb Mon Sep 17 00:00:00 2001 From: shariquerik Date: Tue, 10 Aug 2021 11:31:16 +0530 Subject: [PATCH 19/19] fix: sider fix --- frappe/public/js/frappe/form/controls/datetime.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/controls/datetime.js b/frappe/public/js/frappe/form/controls/datetime.js index 3fb00a6f26..f7a2798a99 100644 --- a/frappe/public/js/frappe/form/controls/datetime.js +++ b/frappe/public/js/frappe/form/controls/datetime.js @@ -38,7 +38,7 @@ frappe.ui.form.ControlDatetime = class ControlDatetime extends frappe.ui.form.Co } get_model_value() { - let value = super.get_model_value() + let value = super.get_model_value(); return frappe.datetime.get_datetime_as_string(value); } };