diff --git a/sub_project/models/sub_project.py b/sub_project/models/sub_project.py index 81a8e68..18b8c91 100755 --- a/sub_project/models/sub_project.py +++ b/sub_project/models/sub_project.py @@ -10,22 +10,57 @@ class SubProject(models.Model): domain="[('is_sub_project', '=', True),('parent_project', '=', False)]", string='Sub Project') parent_project = fields.Many2one('project.project', domain="[('is_sub_project', '=', False)]", string='Parent Project') - @api.onchange('parent_project', 'sub_project') - def onchange_parent_project_sub_project(self): - user_list = [] - if self.parent_project.sub_project: - user_list = self.parent_project.sub_project.ids - user_list.append(self._origin.id) - self.parent_project.sub_project = user_list - if self.sub_project: - for rec in self.sub_project: - #print('AAAAAAAAAAA', rec, rec._origin.id) - sub_project = self.env['project.project'].search([('id', '=', rec._origin.id)], limit=1) - #print('BBBBBBBBBBB', sub_project, self._origin.id) - sub_project.write({'parent_project': self._origin.id}) + # @api.onchange('parent_project', 'sub_project') + # def onchange_parent_project_sub_project(self): + # if self.parent_project.sub_project: + # if self.parent_project: + # user_list = self.parent_project.sub_project.ids + # print('11111111111', self, self.id, self._origin.id) + # user_list.append(self._origin.id) + # self.parent_project.sub_project = user_list + # else: + # self.parent_project.sub_project = self.ids + # if self.sub_project: + # for rec in self.sub_project: + # sub_project = self.env['project.project'].search([('id', '=', rec._origin.id)], limit=1) + # sub_project.write({'parent_project': self._origin.id}) + @api.model + def create(self, vals): + value = super(SubProject, self).create(vals) + if value and value.parent_project: + if value.parent_project.sub_project: + user_list = value.parent_project.sub_project.ids + user_list.append(value.id) + value.parent_project.sub_project = user_list + else: + value.parent_project.sub_project = value.ids + if value and value.sub_project: + value.write({'parent_project': value.id}) + return value + def write(self, vals): + list1 = self.sub_project.ids + res = super(SubProject, self).write(vals) + if vals.get('parent_project'): + parent_prjt = self.env['project.project'].search([('id', '=', vals.get('parent_project'))], limit=1) + user_list = parent_prjt.sub_project.ids + user_list.append(self.id) + parent_prjt.sub_project = user_list + if vals.get('sub_project'): + list2 = self.sub_project.ids + if len(list2) > len(list1): + list3 = (set(list2)) - (set(list1)) + for record in list(list3): + self.env['project.project'].search([('id', '=', int(record))], limit=1).write( + {'parent_project': self.id}) + if len(list1) > len(list2): + list3 = (set(list1)) - (set(list2)) + for record in list(list3): + self.env['project.project'].search([('id', '=', int(record))], limit=1).write( + {'parent_project': False, 'is_sub_project': False}) + return res class InheritProjectTask(models.Model):