From 600b54ed2c6026cd9bd3e08f4e3c28703da3aca8 Mon Sep 17 00:00:00 2001 From: alsum Date: Tue, 17 Jul 2018 11:48:11 +0200 Subject: [PATCH 1/6] allow null when time field is not required --- frappe/model/base_document.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index ec89cdbe78..2f0c4b5139 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -206,7 +206,7 @@ class BaseDocument(object): elif df.fieldtype in ("Currency", "Float", "Percent") and not isinstance(d[fieldname], float): d[fieldname] = flt(d[fieldname]) - elif df.fieldtype in ("Datetime", "Date") and d[fieldname]=="": + elif df.fieldtype in ("Datetime", "Date","Time") and d[fieldname]=="": d[fieldname] = None elif df.get("unique") and cstr(d[fieldname]).strip()=="": From 4e65d3416d11b06ad11b83a02ed9d4060ae7bccd Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 23 Jul 2018 10:36:32 +0530 Subject: [PATCH 2/6] Update base_document.py --- frappe/model/base_document.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index 2f0c4b5139..59623e9635 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -206,7 +206,7 @@ class BaseDocument(object): elif df.fieldtype in ("Currency", "Float", "Percent") and not isinstance(d[fieldname], float): d[fieldname] = flt(d[fieldname]) - elif df.fieldtype in ("Datetime", "Date","Time") and d[fieldname]=="": + elif df.fieldtype in ("Datetime", "Date", "Time") and d[fieldname]=="": d[fieldname] = None elif df.get("unique") and cstr(d[fieldname]).strip()=="": From 9ba9468c5005f83b058e9cada5f4d507d950281d Mon Sep 17 00:00:00 2001 From: alsum Date: Sun, 12 Aug 2018 11:30:05 +0200 Subject: [PATCH 3/6] adding time to total_row --- frappe/desk/query_report.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index b5e4b34500..d5dac14a53 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -15,6 +15,7 @@ import frappe.desk.reportview from frappe.utils.csvutils import read_csv_content_from_attached_file from frappe.permissions import get_role_permissions from six import string_types, iteritems +from datetime import timedelta def get_report_doc(report_name): doc = frappe.get_doc("Report", report_name) @@ -287,6 +288,12 @@ def add_total_row(result, columns, meta = None): if fieldtype == "Percent" and i not in has_percent: has_percent.append(i) + if fieldtype == "Time" and row[i]: + if not total_row[i]: + total_row[i]=timedelta(hours=0,minutes=0,seconds=0) + total_row[i] = total_row[i] + row[i] + + if fieldtype=="Link" and options == "Currency": total_row[i] = result[0][i] From c967767b7a7fe6de386e031200a043e0f80d444d Mon Sep 17 00:00:00 2001 From: alsum Date: Mon, 13 Aug 2018 17:20:46 +0200 Subject: [PATCH 4/6] showing-table-header-in-webform --- frappe/website/doctype/web_form/web_form.py | 4 +++ frappe/website/js/web_form_class.js | 40 ++++++++++----------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index 2b56799f39..ee91a026b2 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -503,6 +503,10 @@ def get_form_data(doctype, docname, web_form_name): frappe.throw(_("Not permitted"), frappe.PermissionError) out.web_form = frappe.get_doc('Web Form', web_form_name) + for field in out.web_form.web_form_fields: + if field.fieldtype == "Table": + field.fields = get_in_list_view_fields(field.options) + out.update({field.fieldname: field.fields}) return out @frappe.whitelist() diff --git a/frappe/website/js/web_form_class.js b/frappe/website/js/web_form_class.js index c285167b63..12d51ac321 100644 --- a/frappe/website/js/web_form_class.js +++ b/frappe/website/js/web_form_class.js @@ -13,18 +13,12 @@ export default class WebForm { docname: this.docname, web_form_name: this.web_form_name }, - freeze: true + freeze: true, }).then(r => { const { doc, web_form, links } = r.message; - this.render(doc, web_form, links); - }); - } - - render(doc, web_form, links) { - const query_params = frappe.utils.get_query_params(); - - web_form.web_form_fields.map(df => { + web_form.web_form_fields.map(df => { if (df.fieldtype === 'Table') { + df.get_data = () => { let data = [] if(doc) { @@ -33,18 +27,24 @@ export default class WebForm { return data; } - df.fields = [ - { - fieldtype: 'Link', - fieldname: "role", - options: "Role", - label: __("Role"), - in_list_view: 1 // added - } - ]; - df.options = null; - } + + if (r.message.hasOwnProperty(df.fieldname)) { + df.fields =r.message[df.fieldname] + + } + }}); + + this.render(doc, web_form, links); + + }); + } + + + render(doc, web_form, links) { + const query_params = frappe.utils.get_query_params(); + + web_form.web_form_fields.map(df => { if (df.fieldtype==='Attach') { df.is_private = true; From 2c0abc3656caad0473a3cab6019deb99e07b1e79 Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Tue, 14 Aug 2018 12:55:07 +0530 Subject: [PATCH 5/6] add notation for server-side get_in_list_view_fields() --- frappe/website/doctype/web_form/web_form.py | 3 +++ frappe/website/js/web_form_class.js | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index ee91a026b2..50512dc821 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -503,10 +503,13 @@ def get_form_data(doctype, docname, web_form_name): frappe.throw(_("Not permitted"), frappe.PermissionError) out.web_form = frappe.get_doc('Web Form', web_form_name) + + # For Table fields, server-side processing for meta for field in out.web_form.web_form_fields: if field.fieldtype == "Table": field.fields = get_in_list_view_fields(field.options) out.update({field.fieldname: field.fields}) + return out @frappe.whitelist() diff --git a/frappe/website/js/web_form_class.js b/frappe/website/js/web_form_class.js index 12d51ac321..4b5475e251 100644 --- a/frappe/website/js/web_form_class.js +++ b/frappe/website/js/web_form_class.js @@ -30,7 +30,7 @@ export default class WebForm { df.options = null; if (r.message.hasOwnProperty(df.fieldname)) { - df.fields =r.message[df.fieldname] + df.fields = r.message[df.fieldname] } }}); @@ -41,7 +41,7 @@ export default class WebForm { } - render(doc, web_form, links) { + render(doc, web_form) { const query_params = frappe.utils.get_query_params(); web_form.web_form_fields.map(df => { From 512924a28eb2bc41aaf8e9a0a4e04cf999d2508b Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Tue, 14 Aug 2018 13:00:55 +0530 Subject: [PATCH 6/6] [web_form_class] style cleanup --- frappe/website/js/web_form_class.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/frappe/website/js/web_form_class.js b/frappe/website/js/web_form_class.js index 4b5475e251..cfca46ebf6 100644 --- a/frappe/website/js/web_form_class.js +++ b/frappe/website/js/web_form_class.js @@ -17,23 +17,23 @@ export default class WebForm { }).then(r => { const { doc, web_form, links } = r.message; web_form.web_form_fields.map(df => { - if (df.fieldtype === 'Table') { + if (df.fieldtype === 'Table') { - df.get_data = () => { - let data = [] - if(doc) { - data = doc[df.fieldname]; + df.get_data = () => { + let data = [] + if(doc) { + data = doc[df.fieldname]; + } + return data; + } + + df.options = null; + + if (r.message.hasOwnProperty(df.fieldname)) { + df.fields = r.message[df.fieldname]; } - return data; } - - df.options = null; - - if (r.message.hasOwnProperty(df.fieldname)) { - df.fields = r.message[df.fieldname] - - } - }}); + }); this.render(doc, web_form, links);