diff options
| author | jbm-odoo <jbm@odoo.com> | 2020-05-28 08:33:19 +0200 |
|---|---|---|
| committer | jbm-odoo <jbm@odoo.com> | 2020-06-15 15:50:19 +0200 |
| commit | e7dda3fab002f5db930b4af340787177d597d59e (patch) | |
| tree | d12d8fbebac30787325463f950275357bd8d0fcb /addons/project_timesheet_holidays | |
| parent | 3a2d698480d79368aab284e95a0e7091cd02bf64 (diff) | |
[IMP] project_timesheet: Add internal project by default to ease onboarding
taskId: 2217930
Diffstat (limited to 'addons/project_timesheet_holidays')
| -rw-r--r-- | addons/project_timesheet_holidays/models/res_company.py | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/addons/project_timesheet_holidays/models/res_company.py b/addons/project_timesheet_holidays/models/res_company.py index c6e15eff9c2..bd50f4a0864 100644 --- a/addons/project_timesheet_holidays/models/res_company.py +++ b/addons/project_timesheet_holidays/models/res_company.py @@ -23,28 +23,40 @@ class Company(models.Model): raise ValidationError(_('The Internal Project of a company should be in that company.')) def init(self): - self.search([('leave_timesheet_project_id', '=', False)])._create_leave_project_task() - - @api.model_create_multi - def create(self, values): - company = super(Company, self).create(values) - # use sudo as the user could have the right to create a company - # but not to create a project. On the other hand, when the company - # is created, it is not in the allowed_company_ids on the env - company.sudo()._create_leave_project_task() - return company - - def _create_leave_project_task(self): - for company in self: + for company in self.search([('leave_timesheet_project_id', '=', False)]): company = company.with_company(company) - if not company.leave_timesheet_project_id: - project = company.env['project.project'].sudo().create({ - 'name': _('Internal Project'), + project = company.env['project.project'].search([ + ('name', '=', _('Internal')), + ('allow_timesheets', '=', True), + ('company_id', '=', company.id), + ], limit=1) + if not project: + project = company.env['project.project'].create({ + 'name': _('Internal'), 'allow_timesheets': True, + 'company_id': company.id, + }) + company.write({ + 'leave_timesheet_project_id': project.id, + }) + if not company.leave_timesheet_task_id: + task = company.env['project.task'].create({ + 'name': _('Time Off'), + 'project_id': company.leave_timesheet_project_id.id, 'active': False, 'company_id': company.id, }) company.write({ + 'leave_timesheet_task_id': task.id, + }) + + def _create_internal_project_task(self): + projects = super()._create_internal_project_task() + for project in projects: + company = project.company_id + company = company.with_company(company) + if not company.leave_timesheet_project_id: + company.write({ 'leave_timesheet_project_id': project.id, }) if not company.leave_timesheet_task_id: |
