chore: add integration request doctype back (with utils)
This commit is contained in:
parent
91b04c2154
commit
f71562fd49
6 changed files with 264 additions and 0 deletions
|
|
@ -0,0 +1,8 @@
|
|||
// Copyright (c) 2016, Frappe Technologies and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on('Integration Request', {
|
||||
refresh: function(frm) {
|
||||
|
||||
}
|
||||
});
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
{
|
||||
"actions": [],
|
||||
"creation": "2022-03-28 12:25:29.929952",
|
||||
"doctype": "DocType",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"request_id",
|
||||
"integration_request_service",
|
||||
"is_remote_request",
|
||||
"column_break_5",
|
||||
"request_description",
|
||||
"status",
|
||||
"section_break_8",
|
||||
"url",
|
||||
"request_headers",
|
||||
"data",
|
||||
"response_section",
|
||||
"output",
|
||||
"error",
|
||||
"reference_section",
|
||||
"reference_doctype",
|
||||
"column_break_16",
|
||||
"reference_docname"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "integration_request_service",
|
||||
"fieldtype": "Data",
|
||||
"label": "Service",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"default": "Queued",
|
||||
"fieldname": "status",
|
||||
"fieldtype": "Select",
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 1,
|
||||
"label": "Status",
|
||||
"options": "\nQueued\nAuthorized\nCompleted\nCancelled\nFailed",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "data",
|
||||
"fieldtype": "Code",
|
||||
"label": "Request Data",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "output",
|
||||
"fieldtype": "Code",
|
||||
"label": "Output",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "error",
|
||||
"fieldtype": "Code",
|
||||
"label": "Error",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "reference_doctype",
|
||||
"fieldtype": "Link",
|
||||
"label": "Reference Document Type",
|
||||
"options": "DocType",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "reference_docname",
|
||||
"fieldtype": "Dynamic Link",
|
||||
"label": "Reference Document Name",
|
||||
"options": "reference_doctype",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "is_remote_request",
|
||||
"fieldtype": "Check",
|
||||
"label": "Is Remote Request?",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "request_description",
|
||||
"fieldtype": "Data",
|
||||
"label": "Request Description",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "request_id",
|
||||
"fieldtype": "Data",
|
||||
"label": "Request ID",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_5",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "section_break_8",
|
||||
"fieldtype": "Section Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "url",
|
||||
"fieldtype": "Data",
|
||||
"label": "URL",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "response_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Response"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.reference_doctype",
|
||||
"fieldname": "reference_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Reference"
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_16",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "request_headers",
|
||||
"fieldtype": "Code",
|
||||
"label": "Request Headers",
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"in_create": 1,
|
||||
"links": [],
|
||||
"modified": "2022-04-07 11:32:27.557548",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Integrations",
|
||||
"name": "Integration Request",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "System Manager",
|
||||
"share": 1
|
||||
}
|
||||
],
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"states": [],
|
||||
"title_field": "integration_request_service",
|
||||
"track_changes": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Copyright (c) 2015, Frappe Technologies and contributors
|
||||
# License: MIT. See LICENSE
|
||||
|
||||
import json
|
||||
|
||||
import frappe
|
||||
from frappe.integrations.utils import json_handler
|
||||
from frappe.model.document import Document
|
||||
|
||||
|
||||
class IntegrationRequest(Document):
|
||||
def autoname(self):
|
||||
if self.flags._name:
|
||||
self.name = self.flags._name
|
||||
|
||||
def update_status(self, params, status):
|
||||
data = json.loads(self.data)
|
||||
data.update(params)
|
||||
|
||||
self.data = json.dumps(data)
|
||||
self.status = status
|
||||
self.save(ignore_permissions=True)
|
||||
frappe.db.commit()
|
||||
|
||||
def handle_success(self, response):
|
||||
"""update the output field with the response along with the relevant status"""
|
||||
if isinstance(response, str):
|
||||
response = json.loads(response)
|
||||
self.db_set("status", "Completed")
|
||||
self.db_set("output", json.dumps(response, default=json_handler))
|
||||
|
||||
def handle_failure(self, response):
|
||||
"""update the error field with the response along with the relevant status"""
|
||||
if isinstance(response, str):
|
||||
response = json.loads(response)
|
||||
self.db_set("status", "Failed")
|
||||
self.db_set("error", json.dumps(response, default=json_handler))
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Copyright (c) 2015, Frappe Technologies and Contributors
|
||||
# License: MIT. See LICENSE
|
||||
import unittest
|
||||
|
||||
import frappe
|
||||
|
||||
# test_records = frappe.get_test_records('Integration Request')
|
||||
|
||||
|
||||
class TestIntegrationRequest(unittest.TestCase):
|
||||
pass
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
# License: MIT. See LICENSE
|
||||
|
||||
import datetime
|
||||
import json
|
||||
from urllib.parse import parse_qs
|
||||
|
||||
import frappe
|
||||
|
|
@ -36,6 +37,59 @@ def make_post_request(url, **kwargs):
|
|||
def make_put_request(url, **kwargs):
|
||||
return make_request("PUT", url, **kwargs)
|
||||
|
||||
def create_request_log(
|
||||
data,
|
||||
integration_type=None,
|
||||
service_name=None,
|
||||
name=None,
|
||||
error=None,
|
||||
request_headers=None,
|
||||
output=None,
|
||||
**kwargs,
|
||||
):
|
||||
"""
|
||||
DEPRECATED: The parameter integration_type will be removed in the next major release.
|
||||
Use is_remote_request instead.
|
||||
"""
|
||||
if integration_type == "Remote":
|
||||
kwargs["is_remote_request"] = 1
|
||||
|
||||
elif integration_type == "Subscription Notification":
|
||||
kwargs["request_description"] = integration_type
|
||||
|
||||
reference_doctype = reference_docname = None
|
||||
if "reference_doctype" not in kwargs:
|
||||
if isinstance(data, str):
|
||||
data = json.loads(data)
|
||||
|
||||
reference_doctype = data.get("reference_doctype")
|
||||
reference_docname = data.get("reference_docname")
|
||||
|
||||
integration_request = frappe.get_doc(
|
||||
{
|
||||
"doctype": "Integration Request",
|
||||
"integration_request_service": service_name,
|
||||
"request_headers": get_json(request_headers),
|
||||
"data": get_json(data),
|
||||
"output": get_json(output),
|
||||
"error": get_json(error),
|
||||
"reference_doctype": reference_doctype,
|
||||
"reference_docname": reference_docname,
|
||||
**kwargs,
|
||||
}
|
||||
)
|
||||
|
||||
if name:
|
||||
integration_request.flags._name = name
|
||||
|
||||
integration_request.insert(ignore_permissions=True)
|
||||
frappe.db.commit()
|
||||
|
||||
return integration_request
|
||||
|
||||
def get_json(obj):
|
||||
return obj if isinstance(obj, str) else frappe.as_json(obj, indent=1)
|
||||
|
||||
def json_handler(obj):
|
||||
if isinstance(obj, (datetime.date, datetime.timedelta, datetime.datetime)):
|
||||
return str(obj)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue