From f4c1f542230ddc41a6d4cc195dbed7486e251d45 Mon Sep 17 00:00:00 2001 From: Dominik Rubo Date: Thu, 17 Sep 2020 06:59:04 +0000 Subject: [PATCH] [FIX] hr_timesheet, project: let user disable Timesheets in config This change allows uninstallation of hr_timesheet from the configuration of Project. Previously, attempting to disable the Timesheets feature from the configuration of Project resulted in a user error that requested the user to first remove tasks in projects that were linked to analytic accounts. This was caused by the removal of demo data during the uninstallation of hr_timesheet, which attempted to unlink analytic accounts before unlinking the projects that were referencing those accounts. The order in which demo data are removed during uninstallation of a module is currently not fixed. This change avoids the problem by instead removing the explicit creation of analytic accounts as demo data. Furthermore, hr_timesheet would be immediately re-installed upon uninstallation through project_timesheet_synchro and project_timesheet_holidays. Disabling those modules along with hr_timesheet fixes this. Task 2339016 closes odoo/odoo#60134 X-original-commit: 43db576b7f0efed563ee597ab087e4d7ef5c74d9 Signed-off-by: Yannick Tivisse (yti) --- addons/hr_timesheet/data/hr_timesheet_demo.xml | 14 -------------- addons/hr_timesheet/models/res_config_settings.py | 13 +++++++++++-- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/addons/hr_timesheet/data/hr_timesheet_demo.xml b/addons/hr_timesheet/data/hr_timesheet_demo.xml index a695b60b495..38d737381e6 100644 --- a/addons/hr_timesheet/data/hr_timesheet_demo.xml +++ b/addons/hr_timesheet/data/hr_timesheet_demo.xml @@ -17,26 +17,12 @@ - - Office Design - OD - - - - - - - - Research & Development Project - RD - - diff --git a/addons/hr_timesheet/models/res_config_settings.py b/addons/hr_timesheet/models/res_config_settings.py index 68ed5bd2df1..51f2fe5eb8a 100644 --- a/addons/hr_timesheet/models/res_config_settings.py +++ b/addons/hr_timesheet/models/res_config_settings.py @@ -7,8 +7,10 @@ from odoo import api, fields, models class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' - module_project_timesheet_synchro = fields.Boolean("Awesome Timesheet") - module_project_timesheet_holidays = fields.Boolean("Record Time Off") + module_project_timesheet_synchro = fields.Boolean("Awesome Timesheet", + compute="_compute_timesheet_modules", store=True, readonly=False) + module_project_timesheet_holidays = fields.Boolean("Record Time Off", + compute="_compute_timesheet_modules", store=True, readonly=False) project_time_mode_id = fields.Many2one( 'uom.uom', related='company_id.project_time_mode_id', string='Project Time Unit', readonly=False, help="This will set the unit of measure used in projects and tasks.\n" @@ -27,3 +29,10 @@ class ResConfigSettings(models.TransientModel): product_uom_day = self.env.ref('uom.product_uom_day') for settings in self: settings.is_encode_uom_days = settings.timesheet_encode_uom_id == product_uom_day + + @api.depends('module_hr_timesheet') + def _compute_timesheet_modules(self): + self.filtered(lambda config: not config.module_hr_timesheet).update({ + 'module_project_timesheet_synchro': False, + 'module_project_timesheet_holidays': False, + })