52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
import frappe
|
|
from custom_ui.db_utils import process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, build_error_response
|
|
|
|
|
|
@frappe.whitelist()
|
|
def get_job_task_list(job_id=""):
|
|
if job_id:
|
|
try:
|
|
tasks = frappe.get_all('Task', filters={"project": job_id})
|
|
task_docs = {task_id: frappe.get_doc(task_id) for task_id in tasks}
|
|
return build_success_response(task_docs)
|
|
except Exception as e:
|
|
return build_error_response(str(e), 500)
|
|
|
|
|
|
@frappe.whitelist()
|
|
def get_tasks_table_data(filters={}, sortings=[], page=1, page_size=10):
|
|
"""Get paginated task table data with filtering and sorting support."""
|
|
try:
|
|
print("DEBUG: Raw task options received:", filters, sortings, page, page_size)
|
|
|
|
processed_filters, processed_sortings, is_or, page, page_size = process_query_conditions(filters, sortings, page, page_size)
|
|
|
|
count = frappe.db.count("Task", filters=processed_filters)
|
|
|
|
tasks = frappe.db.get_all(
|
|
"Task",
|
|
fields=["*"],
|
|
filters=processed_filters if not is_or else None,
|
|
or_filters=processed_filters if is_or else None,
|
|
limit=page_size,
|
|
start=(page - 1) * page_size,
|
|
order_by=processed_sortings
|
|
)
|
|
|
|
tableRows = []
|
|
for task in tasks:
|
|
tableRow = {}
|
|
tableRow["id"] = task["name"]
|
|
tableRow["subject"] = task["subject"]
|
|
tableRow["project"] = task["project"]
|
|
tableRow["address"] = task.get("custom_property", "")
|
|
tableRow["status"] = task.get("status", "")
|
|
tableRows.append(tableRow)
|
|
|
|
data_table_dict = build_datatable_dict(data=tableRows, count=count, page=page, page_size=page_size)
|
|
return build_success_response(data_table_dict)
|
|
except frappe.ValidationError as ve:
|
|
return build_error_response(str(ve), 400)
|
|
except Exception as e:
|
|
return build_error_response(str(e), 500)
|