diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml
index 4e6ad936c84..70b6a85d04b 100644
--- a/addons/hr_expense/views/hr_expense_views.xml
+++ b/addons/hr_expense/views/hr_expense_views.xml
@@ -38,12 +38,12 @@
hr.expense.tree
hr.expense
-
+
-
+
@@ -56,8 +56,8 @@
-
-
+
+
diff --git a/addons/hr_timesheet/views/project_views.xml b/addons/hr_timesheet/views/project_views.xml
index 342bfc7bc93..0d970bb2785 100644
--- a/addons/hr_timesheet/views/project_views.xml
+++ b/addons/hr_timesheet/views/project_views.xml
@@ -174,9 +174,8 @@
-
+
-
diff --git a/addons/project/models/project.py b/addons/project/models/project.py
index decb61cc94b..2b9029c0cd1 100644
--- a/addons/project/models/project.py
+++ b/addons/project/models/project.py
@@ -531,6 +531,11 @@ class Task(models.Model):
# customer portal: include comment and incoming emails in communication history
website_message_ids = fields.One2many(domain=lambda self: [('model', '=', self._name), ('message_type', 'in', ['email', 'comment'])])
+ @api.constrains('parent_id')
+ def _check_parent_id(self):
+ if not self._check_recursion():
+ raise ValidationError(_('Error! You cannot create recursive hierarchy of tasks.'))
+
@api.depends('date_deadline')
def _compute_date_deadline_formatted(self):
for task in self:
@@ -699,6 +704,8 @@ class Task(models.Model):
def write(self, vals):
now = fields.Datetime.now()
+ if 'parent_id' in vals and vals['parent_id'] in self.ids:
+ raise UserError(_("Sorry. You can't set a task as its parent task."))
# stage change: update date_last_stage_update
if 'stage_id' in vals:
vals.update(self.update_date_end(vals['stage_id']))
diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml
index e96ba7ec9cd..d05a8fd48d2 100644
--- a/addons/project/views/project_views.xml
+++ b/addons/project/views/project_views.xml
@@ -672,20 +672,20 @@
project.task
-
-
-
-
+
+
+
+
-
+
-
+
-
+
diff --git a/addons/sale_expense/views/hr_expense_views.xml b/addons/sale_expense/views/hr_expense_views.xml
index a108cbf3aa2..f18f81249a0 100644
--- a/addons/sale_expense/views/hr_expense_views.xml
+++ b/addons/sale_expense/views/hr_expense_views.xml
@@ -18,8 +18,8 @@
-
-
+
+