fix: add document meta fields in webhook selection

This commit is contained in:
Rohan Bansal 2019-07-29 15:09:27 +05:30
parent 90d9a65b2c
commit 3c221acd30
2 changed files with 42 additions and 23 deletions

View file

@ -2,23 +2,29 @@
// For license information, please see license.txt
frappe.webhook = {
set_fieldname_select: function(frm) {
var doc = frm.doc;
if (doc.webhook_doctype) {
frappe.model.with_doctype(doc.webhook_doctype, function() {
var fields = $.map(frappe.get_doc("DocType", frm.doc.webhook_doctype).fields, function(d) {
if (frappe.model.no_value_type.indexOf(d.fieldtype) === -1 ||
frappe.model.table_fields.includes(d.fieldtype)) {
set_fieldname_select: (frm) => {
if (frm.doc.webhook_doctype) {
frappe.model.with_doctype(frm.doc.webhook_doctype, () => {
// get doctype fields
let fields = $.map(frappe.get_doc("DocType", frm.doc.webhook_doctype).fields, (d) => {
if (frappe.model.no_value_type.includes(d.fieldtype) || frappe.model.table_fields.includes(d.fieldtype)) {
return { label: d.label + ' (' + d.fieldtype + ')', value: d.fieldname };
}
else if (d.fieldtype === 'Currency' || d.fieldtype === 'Float') {
} else if (d.fieldtype === 'Currency' || d.fieldtype === 'Float') {
return { label: d.label, value: d.fieldname };
}
else {
} else {
return null;
}
});
fields.unshift({"label":"Name (Doc Name)","value":"name"});
// add meta fields
for (let field of frappe.model.std_fields) {
if (field.fieldname == "name") {
fields.unshift({ label: "Name (Doc Name)", value: "name" });
} else {
fields.push({ label: field.label + ' (' + field.fieldtype + ')', value: field.fieldname });
}
}
frappe.meta.get_docfield("Webhook Data", "fieldname", frm.doc.name).options = [""].concat(fields);
});
}
@ -26,21 +32,26 @@ frappe.webhook = {
};
frappe.ui.form.on('Webhook', {
refresh: function(frm) {
refresh: (frm) => {
frappe.webhook.set_fieldname_select(frm);
},
webhook_doctype: function(frm) {
webhook_doctype: (frm) => {
frappe.webhook.set_fieldname_select(frm);
}
});
frappe.ui.form.on("Webhook Data", {
fieldname: function(frm, doctype, name) {
var doc = frappe.get_doc(doctype, name);
var df = $.map(frappe.get_doc("DocType", frm.doc.webhook_doctype).fields, function(d) {
return doc.fieldname == d.fieldname ? d : null;
})[0];
doc.key = df != undefined ? df.fieldname : "name";
fieldname: (frm, cdt, cdn) => {
let row = locals[cdt][cdn];
let df = frappe.get_meta(frm.doc.webhook_doctype).fields.filter((field) => field.fieldname == row.fieldname);
if (!df.length) {
// check if field is a meta field
df = frappe.model.std_fields.filter((field) => field.fieldname == row.fieldname);
}
row.key = df.length ? df[0].fieldname : "name";
frm.refresh_field("webhook_data");
}
});

View file

@ -3,12 +3,18 @@
# For license information, please see license.txt
from __future__ import unicode_literals
import datetime
import json
from time import sleep
import requests
from six.moves.urllib.parse import urlparse
import frappe
import json, requests
from frappe import _
from frappe.model.document import Document
from six.moves.urllib.parse import urlparse
from time import sleep
class Webhook(Document):
def autoname(self):
@ -57,6 +63,8 @@ def enqueue_webhook(doc, webhook):
for w in webhook.webhook_data:
for k, v in doc.as_dict().items():
if k == w.fieldname:
if isinstance(v, datetime.datetime):
v = frappe.utils.get_datetime_str(v)
data[w.key] = v
for i in range(3):
try: