69 lines
1.4 KiB
Python
69 lines
1.4 KiB
Python
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
# License: MIT. See LICENSE
|
|
|
|
import frappe
|
|
from frappe import _
|
|
from frappe.utils import getdate
|
|
|
|
|
|
def execute(filters=None):
|
|
priority_map = {"High": 3, "Medium": 2, "Low": 1}
|
|
|
|
todo_list = frappe.get_list(
|
|
"ToDo",
|
|
fields=[
|
|
"name",
|
|
"date",
|
|
"description",
|
|
"priority",
|
|
"reference_type",
|
|
"reference_name",
|
|
"assigned_by",
|
|
"owner",
|
|
],
|
|
filters={"status": "Open"},
|
|
)
|
|
|
|
todo_list.sort(
|
|
key=lambda todo: (
|
|
priority_map.get(todo.priority, 0),
|
|
(todo.date and getdate(todo.date)) or getdate("1900-01-01"),
|
|
),
|
|
reverse=True,
|
|
)
|
|
|
|
columns = [
|
|
_("ID") + ":Link/ToDo:90",
|
|
_("Priority") + "::60",
|
|
_("Date") + ":Date",
|
|
_("Description") + "::150",
|
|
_("Assigned To/Owner") + ":Data:120",
|
|
_("Assigned By") + ":Data:120",
|
|
_("Reference") + "::200",
|
|
]
|
|
|
|
result = []
|
|
for todo in todo_list:
|
|
if todo.owner == frappe.session.user or todo.assigned_by == frappe.session.user:
|
|
if todo.reference_type:
|
|
todo.reference = """<a href="/desk/Form/{}/{}">{}: {}</a>""".format(
|
|
todo.reference_type,
|
|
todo.reference_name,
|
|
todo.reference_type,
|
|
todo.reference_name,
|
|
)
|
|
else:
|
|
todo.reference = None
|
|
result.append(
|
|
[
|
|
todo.name,
|
|
todo.priority,
|
|
todo.date,
|
|
todo.description,
|
|
todo.owner,
|
|
todo.assigned_by,
|
|
todo.reference,
|
|
]
|
|
)
|
|
|
|
return columns, result
|