diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-05-15 20:18:14 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-05-15 20:18:14 +0200 |
| commit | fa8a67ee5ff6b3bdc15d000bfda0c57350e01aa9 (patch) | |
| tree | 13f57e095568fb456803f5d967b9e582eacd933c /addons/project/models/project.py | |
| parent | 05ef2f24e08a06d586f9dc390878ecd3c069042f (diff) | |
| parent | 5a943390f2abf82883316052ad0eeb601b0194c3 (diff) | |
[MERGE] forward port branch 11.0 up to 5a943390f2a
Diffstat (limited to 'addons/project/models/project.py')
| -rw-r--r-- | addons/project/models/project.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 4ca2198b1fc..e02dcf8fac5 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -641,6 +641,12 @@ class Task(models.Model): default['remaining_hours'] = self.planned_hours return super(Task, self).copy(default) + @api.constrains('parent_id') + def _check_parent_id(self): + for task in self: + if not task._check_recursion(): + raise ValidationError(_('Error! You cannot create recursive hierarchy of task(s).')) + # Override view according to the company definition @api.model def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): @@ -1002,6 +1008,20 @@ class Task(models.Model): 'type': 'ir.actions.act_window' } + def action_subtask(self): + action = self.env.ref('project.project_task_action_sub_task').read()[0] + ctx = self.env.context.copy() + ctx.update({ + 'default_parent_id': self.id, + 'default_project_id': self.env.context.get('project_id', self.project_id.id), + 'default_name': self.env.context.get('name', self.name) + ':', + 'default_partner_id': self.env.context.get('partner_id', self.partner_id.id), + 'search_default_project_id': self.env.context.get('project_id', self.project_id.id), + }) + action['context'] = ctx + action['domain'] = [('id', 'child_of', self.id), ('id', '!=', self.id)] + return action + # --------------------------------------------------- # Rating business # --------------------------------------------------- |
