diff --git a/frappe/desk/doctype/route_history/route_history.py b/frappe/desk/doctype/route_history/route_history.py index 52b885a6e7..fd2305e875 100644 --- a/frappe/desk/doctype/route_history/route_history.py +++ b/frappe/desk/doctype/route_history/route_history.py @@ -12,11 +12,9 @@ class RouteHistory(Document): @frappe.whitelist() def save_route_history(routes): - # print('Dump history---------------------------') frappe.cache().rpush('route_history', routes) def save_route_history_to_db(): - # print('================================= Saving Route History') values = [] while frappe.cache().llen('route_history') > 0: routes = frappe.cache().lpop('route_history') @@ -37,9 +35,29 @@ def save_route_history_to_db(): frappe.db.commit() def flush_old_route_records(): - frappe.db.sql(''' - SELECT `user`, count(`name`) AS count + """Deletes all route records except last 500 records per user""" + + records_to_keep_limit = 500 + users = frappe.db.sql(''' + SELECT `user` FROM `tabRoute History` - WHERE count > 20 - GROUP BY `name` - ''') \ No newline at end of file + GROUP BY `user` + HAVING count(`name`) > {limit} + '''.format(limit=records_to_keep_limit)) + + for user in users: + user = user[0] + last_record_to_keep = frappe.db.get_all('Route History', + filters={ + 'user': user, + }, + limit=1, + limit_start=500, + fields=['modified'], + order_by='modified desc') + + frappe.db.sql(''' + DELETE + FROM `tabRoute History` + WHERE `modified` <= '{modified}' and `user`='{user}' + '''.format(modified=last_record_to_keep[0].modified, user=user)) \ No newline at end of file