@@ -5,7 +5,6 @@ from frappe.utils import cstr | |||||
queue_prefix = 'insert_queue_for_' | queue_prefix = 'insert_queue_for_' | ||||
@frappe.whitelist() | |||||
def deferred_insert(doctype, records): | def deferred_insert(doctype, records): | ||||
frappe.cache().rpush(queue_prefix + doctype, records) | frappe.cache().rpush(queue_prefix + doctype, records) | ||||
@@ -1,9 +1,13 @@ | |||||
# Copyright (c) 2021, Frappe Technologies and contributors | # Copyright (c) 2021, Frappe Technologies and contributors | ||||
# License: MIT. See LICENSE | # License: MIT. See LICENSE | ||||
import json | |||||
import frappe | import frappe | ||||
from frappe.deferred_insert import deferred_insert | |||||
from frappe.model.document import Document | from frappe.model.document import Document | ||||
class RouteHistory(Document): | class RouteHistory(Document): | ||||
pass | pass | ||||
@@ -35,3 +39,19 @@ def flush_old_route_records(): | |||||
"modified": ("<=", last_record_to_keep[0].modified), | "modified": ("<=", last_record_to_keep[0].modified), | ||||
"user": user | "user": user | ||||
}) | }) | ||||
@frappe.whitelist() | |||||
def deferred_insert_route_history(routes): | |||||
routes_record = [] | |||||
if isinstance(routes, str): | |||||
routes = json.loads(routes) | |||||
for route_doc in routes: | |||||
routes_record.append({ | |||||
"user": frappe.session.user, | |||||
"route": route_doc.get("route"), | |||||
"creation": route_doc.get("creation") | |||||
}) | |||||
deferred_insert("Route History", json.dumps(routes_record)) |
@@ -5,13 +5,14 @@ const save_routes = frappe.utils.debounce(() => { | |||||
if (frappe.session.user === 'Guest') return; | if (frappe.session.user === 'Guest') return; | ||||
const routes = frappe.route_history_queue; | const routes = frappe.route_history_queue; | ||||
frappe.route_history_queue = []; | frappe.route_history_queue = []; | ||||
frappe.xcall('frappe.deferred_insert.deferred_insert', { | |||||
'doctype': 'Route History', | |||||
'records': routes | |||||
if (!routes.length) return; | |||||
frappe.xcall('frappe.desk.doctype.route_history.route_history.deferred_insert_route_history', { | |||||
'routes': routes | |||||
}).catch(() => { | }).catch(() => { | ||||
frappe.route_history_queue.concat(routes); | frappe.route_history_queue.concat(routes); | ||||
}); | |||||
}); | |||||
}, 10000); | }, 10000); | ||||
@@ -19,7 +20,6 @@ frappe.router.on('change', () => { | |||||
const route = frappe.get_route(); | const route = frappe.get_route(); | ||||
if (is_route_useful(route)) { | if (is_route_useful(route)) { | ||||
frappe.route_history_queue.push({ | frappe.route_history_queue.push({ | ||||
'user': frappe.session.user, | |||||
'creation': frappe.datetime.now_datetime(), | 'creation': frappe.datetime.now_datetime(), | ||||
'route': frappe.get_route_str() | 'route': frappe.get_route_str() | ||||
}); | }); | ||||