|
|
@@ -1,11 +1,11 @@ |
|
|
|
# Copyright (c) 2021, Frappe Technologies and contributors |
|
|
|
# Copyright (c) 2022, Frappe Technologies and contributors |
|
|
|
# License: MIT. See LICENSE |
|
|
|
|
|
|
|
import json |
|
|
|
|
|
|
|
import frappe |
|
|
|
from frappe.deferred_insert import deferred_insert as _deferred_insert |
|
|
|
from frappe.model.document import Document |
|
|
|
from frappe.query_builder import DocType |
|
|
|
from frappe.query_builder.functions import Count |
|
|
|
|
|
|
|
|
|
|
|
class RouteHistory(Document): |
|
|
@@ -14,31 +14,29 @@ class RouteHistory(Document): |
|
|
|
|
|
|
|
def flush_old_route_records(): |
|
|
|
"""Deletes all route records except last 500 records per user""" |
|
|
|
|
|
|
|
records_to_keep_limit = 500 |
|
|
|
users = frappe.db.sql( |
|
|
|
""" |
|
|
|
SELECT `user` |
|
|
|
FROM `tabRoute History` |
|
|
|
GROUP BY `user` |
|
|
|
HAVING count(`name`) > %(limit)s |
|
|
|
""", |
|
|
|
{"limit": records_to_keep_limit}, |
|
|
|
) |
|
|
|
RouteHistory = DocType("Route History") |
|
|
|
|
|
|
|
users = ( |
|
|
|
frappe.qb.from_(RouteHistory) |
|
|
|
.select(RouteHistory.user) |
|
|
|
.groupby(RouteHistory.user) |
|
|
|
.having(Count(RouteHistory.name) > records_to_keep_limit) |
|
|
|
).run(pluck=True) |
|
|
|
|
|
|
|
for user in users: |
|
|
|
user = user[0] |
|
|
|
last_record_to_keep = frappe.db.get_all( |
|
|
|
last_record_to_keep = frappe.get_all( |
|
|
|
"Route History", |
|
|
|
filters={"user": user}, |
|
|
|
limit=1, |
|
|
|
limit_start=500, |
|
|
|
fields=["modified"], |
|
|
|
order_by="modified desc", |
|
|
|
limit=1, |
|
|
|
) |
|
|
|
|
|
|
|
frappe.db.delete( |
|
|
|
"Route History", {"modified": ("<=", last_record_to_keep[0].modified), "user": user} |
|
|
|
"Route History", |
|
|
|
{"modified": ("<=", last_record_to_keep[0].modified), "user": user}, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
@@ -53,7 +51,7 @@ def deferred_insert(routes): |
|
|
|
for route in frappe.parse_json(routes) |
|
|
|
] |
|
|
|
|
|
|
|
_deferred_insert("Route History", json.dumps(routes)) |
|
|
|
_deferred_insert("Route History", routes) |
|
|
|
|
|
|
|
|
|
|
|
@frappe.whitelist() |
|
|
|