diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index 7eb55272eb8..5028c60f1ad 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -88,6 +88,7 @@ class Task(NestedSet): self.validate_dependencies_for_template_task() self.validate_completed_on() self.validate_parent_is_group() + self.validate_web_form_project_permission() def validate_dates(self): self.validate_from_to_dates("exp_start_date", "exp_end_date") @@ -287,6 +288,23 @@ class Task(NestedSet): if project_user: return True + def validate_web_form_project_permission(self): + project_unchanged = not self.is_new() and self.project == self.get_db_value("project") + + if ( + not frappe.flags.in_web_form + or not self.project + or project_unchanged + or frappe.has_permission("Project", "write", doc=self.project) + or self.has_webform_permission() + ): + return + + frappe.throw( + _("You are not permitted to create a Task for Project {0}").format(self.project), + frappe.PermissionError, + ) + def populate_depends_on(self): if self.parent_task: parent = frappe.get_doc("Task", self.parent_task)