Browse Source

refactor: Route History

* Use newer deferred_insert APIs
* Refactor query to use QB notation
* Styled with black-ish
version-14
Gavin D'souza 3 years ago
parent
commit
f6c879ab1d
1 changed files with 32 additions and 26 deletions
  1. +32
    -26
      frappe/desk/doctype/route_history/route_history.py

+ 32
- 26
frappe/desk/doctype/route_history/route_history.py View File

@@ -1,11 +1,11 @@
# Copyright (c) 2021, Frappe Technologies and contributors
# Copyright (c) 2022, 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 as _deferred_insert from frappe.deferred_insert import deferred_insert as _deferred_insert
from frappe.model.document import Document from frappe.model.document import Document
from frappe.query_builder.utils import DocType
from frappe.query_builder.functions import Count




class RouteHistory(Document): class RouteHistory(Document):
@@ -14,31 +14,31 @@ class RouteHistory(Document):


def flush_old_route_records(): def flush_old_route_records():
"""Deletes all route records except last 500 records per user""" """Deletes all route records except last 500 records per user"""

records_to_keep_limit = 500 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: 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, 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() @frappe.whitelist()
def deferred_insert(routes): def deferred_insert(routes):
@@ -51,10 +51,16 @@ def deferred_insert(routes):
for route in frappe.parse_json(routes) for route in frappe.parse_json(routes)
] ]


_deferred_insert("Route History", json.dumps(routes))
_deferred_insert("Route History", routes)



@frappe.whitelist() @frappe.whitelist()
def frequently_visited_links(): 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,
)

Loading…
Cancel
Save