Fix 'flush_old_route_record' code

This commit is contained in:
Suraj Shetty 2018-10-07 20:51:00 +05:30
parent c7b6287687
commit bbbde3663b

View file

@ -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`
''')
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))