-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathproject.py
More file actions
51 lines (39 loc) · 1.35 KB
/
project.py
File metadata and controls
51 lines (39 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import json
import frappe
from frappe.utils import get_gravatar_url, get_url_to_form
@frappe.whitelist()
def get_project_details():
'''Get all projects details'''
project_data = []
projects = frappe.db.get_all("Project", fields=["name", "priority", "percent_complete", "_assign"])
for project in projects:
project_users = []
total_tasks = frappe.db.count("Task", filters={"project": project.name})
closed_tasks = frappe.db.count("Task", filters={"project": project.name, "status": "Completed"})
assigned_users = json.loads(project._assign) if project._assign else []
for assignee in assigned_users:
full_name = frappe.db.get_value("User", assignee, "full_name")
assignee_tasks = frappe.get_list("Task",
filters={"_assign": ["like", "%{}%".format(assignee)]},
fields=["name", "status"])
user_data = {
"name": assignee,
"label": full_name,
"avatar": get_gravatar_url(assignee),
"tasks": []
}
for task in assignee_tasks:
user_data["tasks"].append({
"url": get_url_to_form("Task", task.name),
"status": task.status
})
project_users.append(user_data)
project_data.append({
"name": project.name,
"totalTasks": total_tasks,
"closedTasks": closed_tasks,
"percentCompleted": project.percent_complete,
"priority": project.priority,
"assigned": project_users
})
return project_data