浏览代码

refactor: Route History

* Use newer deferred_insert APIs
* Refactor query to use QB notation
* Styled with black-ish
version-14
Gavin D'souza 3 年前
父节点
当前提交
f6c879ab1d
共有 1 个文件被更改,包括 32 次插入26 次删除
  1. +32
    -26
      frappe/desk/doctype/route_history/route_history.py

+ 32
- 26
frappe/desk/doctype/route_history/route_history.py 查看文件

@@ -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,
)

正在加载...
取消
保存