35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import unicode_literals
|
|
import frappe
|
|
|
|
def execute():
|
|
# convert milestones to tasks
|
|
frappe.reload_doctype("Project")
|
|
frappe.reload_doc("projects", "doctype", "project_task")
|
|
frappe.reload_doctype("Task")
|
|
frappe.reload_doc("projects", "doctype", "task_depends_on")
|
|
frappe.reload_doc("projects", "doctype", "time_log")
|
|
|
|
for m in frappe.get_all("Project Milestone", "*"):
|
|
if (m.milestone and m.milestone_date
|
|
and frappe.db.exists("Project", m.parent)):
|
|
subject = (m.milestone[:139] + "…") if (len(m.milestone) > 140) else m.milestone
|
|
description = m.milestone
|
|
task = frappe.get_doc({
|
|
"doctype": "Task",
|
|
"subject": subject,
|
|
"description": description if description!=subject else None,
|
|
"expected_start_date": m.milestone_date,
|
|
"status": "Open" if m.status=="Pending" else "Closed",
|
|
"project": m.parent,
|
|
})
|
|
task.flags.ignore_mandatory = True
|
|
task.insert(ignore_permissions=True)
|
|
|
|
# remove project milestone
|
|
frappe.delete_doc("DocType", "Project Milestone")
|
|
|
|
# remove calendar events for milestone
|
|
for e in frappe.get_all("Event", ["name"], {"ref_type": "Project"}):
|
|
frappe.delete_doc("Event", e.name)
|