Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 1 | # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors |
| 2 | # License: GNU General Public License v3. See license.txt |
| 3 | |
| 4 | from __future__ import unicode_literals |
| 5 | import frappe |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 6 | import json |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 7 | |
| 8 | def get_context(context): |
| 9 | context.no_cache = 1 |
| 10 | |
| 11 | project = frappe.get_doc('Project', frappe.form_dict.project) |
| 12 | |
| 13 | project.has_permission('read') |
Kanchan Chauhan | b566d42 | 2016-03-29 11:21:42 +0530 | [diff] [blame] | 14 | |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 15 | project.tasks = get_tasks(project.name, start=0, item_status='open', |
| 16 | search=frappe.form_dict.get("q")) |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 17 | |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 18 | project.timelogs = get_timelogs(project.name, start=0, |
| 19 | search=frappe.form_dict.get("q")) |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 20 | |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 21 | |
| 22 | context.doc = project |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 23 | |
| 24 | |
Kanchan Chauhan | 2ad801c | 2016-03-22 16:00:41 +0530 | [diff] [blame] | 25 | def get_tasks(project, start=0, search=None, item_status=None): |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 26 | filters = {"project": project} |
| 27 | if search: |
| 28 | filters["subject"] = ("like", "%{0}%".format(search)) |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 29 | if item_status: |
Kanchan Chauhan | 53ce94f | 2016-03-25 12:04:54 +0530 | [diff] [blame] | 30 | filters["status"] = item_status |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 31 | tasks = frappe.get_all("Task", filters=filters, |
Kanchan Chauhan | b566d42 | 2016-03-29 11:21:42 +0530 | [diff] [blame] | 32 | fields=["name", "subject", "status", "_seen", "_comments", "modified", "description"], |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 33 | limit_start=start, limit_page_length=10) |
| 34 | |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 35 | for task in tasks: |
| 36 | task.todo = frappe.get_all('ToDo',filters={'reference_name':task.name, 'reference_type':'Task'}, |
| 37 | fields=["assigned_by", "owner", "modified", "modified_by"]) |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 38 | |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 39 | if task.todo: |
| 40 | task.todo=task.todo[0] |
| 41 | task.todo.user_image = frappe.db.get_value('User', task.todo.owner, 'user_image') |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 42 | |
Kanchan Chauhan | b566d42 | 2016-03-29 11:21:42 +0530 | [diff] [blame] | 43 | |
| 44 | task.comment_count = len(json.loads(task._comments or "[]")) |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 45 | |
| 46 | task.css_seen = '' |
| 47 | if task._seen: |
| 48 | if frappe.session.user in json.loads(task._seen): |
| 49 | task.css_seen = 'seen' |
| 50 | |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 51 | return tasks |
| 52 | |
| 53 | @frappe.whitelist() |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 54 | def get_task_html(project, start=0, item_status=None): |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 55 | return frappe.render_template("erpnext/templates/includes/projects/project_tasks.html", |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 56 | {"doc": { |
| 57 | "name": project, |
| 58 | "project_name": project, |
| 59 | "tasks": get_tasks(project, start, item_status=item_status)} |
| 60 | }, is_path=True) |
| 61 | |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 62 | def get_timelogs(project, start=0, search=None): |
| 63 | filters = {"project": project} |
| 64 | if search: |
| 65 | filters["title"] = ("like", "%{0}%".format(search)) |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 66 | |
| 67 | timelogs = frappe.get_all('Time Log', filters=filters, |
Kanchan Chauhan | b566d42 | 2016-03-29 11:21:42 +0530 | [diff] [blame] | 68 | fields=['name','title','task','activity_type','from_time','to_time','_comments','_seen','status','modified','modified_by'], |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 69 | limit_start=start, limit_page_length=10) |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 70 | for timelog in timelogs: |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 71 | timelog.user_image = frappe.db.get_value('User', timelog.modified_by, 'user_image') |
Kanchan Chauhan | b566d42 | 2016-03-29 11:21:42 +0530 | [diff] [blame] | 72 | |
| 73 | timelog.comment_count = len(json.loads(timelog._comments or "[]")) |
| 74 | |
| 75 | timelog.css_seen = '' |
| 76 | if timelog._seen: |
| 77 | if frappe.session.user in json.loads(timelog._seen): |
| 78 | timelog.css_seen = 'seen' |
Kanchan Chauhan | b3fe6a4 | 2016-03-16 18:01:22 +0530 | [diff] [blame] | 79 | return timelogs |
| 80 | |
| 81 | @frappe.whitelist() |
Rushabh Mehta | c20c536 | 2016-03-25 17:19:28 +0530 | [diff] [blame] | 82 | def get_timelog_html(project, start=0): |
Rushabh Mehta | b2269dd | 2016-03-23 18:28:50 +0530 | [diff] [blame] | 83 | return frappe.render_template("erpnext/templates/includes/projects/project_timelogs.html", |
| 84 | {"doc": {"timelogs": get_timelogs(project, start)}}, is_path=True) |
| 85 | |