|
|
@@ -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.utils import DocType |
|
|
|
from frappe.query_builder.functions import Count |
|
|
|
|
|
|
|
|
|
|
|
class RouteHistory(Document): |
|
|
@@ -14,31 +14,31 @@ 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('Route History', |
|
|
|
filters={'user': user}, |
|
|
|
limit=1, |
|
|
|
last_record_to_keep = frappe.get_all( |
|
|
|
"Route History", |
|
|
|
filters={"user": user}, |
|
|
|
limit_start=500, |
|
|
|
fields=['modified'], |
|
|
|
order_by='modified desc' |
|
|
|
fields=["modified"], |
|
|
|
order_by="modified desc", |
|
|
|
limit=1, |
|
|
|
) |
|
|
|
|
|
|
|
frappe.db.delete( |
|
|
|
"Route History", |
|
|
|
{"modified": ("<=", last_record_to_keep[0].modified), "user": user}, |
|
|
|
) |
|
|
|
|
|
|
|
frappe.db.delete("Route History", { |
|
|
|
"modified": ("<=", last_record_to_keep[0].modified), |
|
|
|
"user": user |
|
|
|
}) |
|
|
|
|
|
|
|
@frappe.whitelist() |
|
|
|
def deferred_insert(routes): |
|
|
@@ -51,10 +51,16 @@ 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() |
|
|
|
def frequently_visited_links(): |
|
|
|
return frappe.get_all('Route History', fields=['route', 'count(name) as count'], filters={ |
|
|
|
'user': frappe.session.user |
|
|
|
}, group_by="route", order_by="count desc", limit=5) |
|
|
|
return frappe.get_all( |
|
|
|
"Route History", |
|
|
|
fields=["route", "count(name) as count"], |
|
|
|
filters={"user": frappe.session.user}, |
|
|
|
group_by="route", |
|
|
|
order_by="count desc", |
|
|
|
limit=5, |
|
|
|
) |