summaryrefslogtreecommitdiff
path: root/addons/project_timesheet_holidays
diff options
context:
space:
mode:
authorjbm-odoo <jbm@odoo.com>2020-05-28 08:33:19 +0200
committerjbm-odoo <jbm@odoo.com>2020-06-15 15:50:19 +0200
commite7dda3fab002f5db930b4af340787177d597d59e (patch)
treed12d8fbebac30787325463f950275357bd8d0fcb /addons/project_timesheet_holidays
parent3a2d698480d79368aab284e95a0e7091cd02bf64 (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.py44
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: