From d9df5aafee40ce488a177facc8a00a2c2273e756 Mon Sep 17 00:00:00 2001 From: Lanto R <124650562+lanto-razafindrabe@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:11:22 +0300 Subject: [PATCH] TA#66483 [IMP] project_stage: Fold kanban column by stage (#401) * TA#66483 [FIX] Folded kanban on load * TA#66483 [IMP] project_stage: Fold kanban by stage --------- Co-authored-by: Majda EL MARIOULI --- project_stage/__manifest__.py | 2 +- project_stage/models/project_stage.py | 45 ++++++++++++++++++--------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/project_stage/__manifest__.py b/project_stage/__manifest__.py index b7fcec2f..b824ffc3 100644 --- a/project_stage/__manifest__.py +++ b/project_stage/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Project Stages', - 'version': "1.0.1", + 'version': "1.0.2", 'author': 'Numigi', 'maintainer': 'Numigi', 'website': 'https://bit.ly/numigi-com', diff --git a/project_stage/models/project_stage.py b/project_stage/models/project_stage.py index ce42341a..a26cff7a 100644 --- a/project_stage/models/project_stage.py +++ b/project_stage/models/project_stage.py @@ -1,33 +1,50 @@ # © 2022 Numigi (tm) and all its contributors (https://bit.ly/numigiens) # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -from odoo import fields, models +from odoo import api, fields, models, SUPERUSER_ID class ProjectStage(models.Model): - _name = 'project.stage' - _description = 'Project Stage' - _order = 'sequence' + _name = "project.stage" + _description = "Project Stage" + _order = "sequence, id" name = fields.Char(required=True, translate=True) sequence = fields.Integer() description = fields.Text(translate=True) active = fields.Boolean(default=True) fold = fields.Boolean( - string='Folded in Kanban', + string="Folded in Kanban", help="""This stage is folded in the kanban view when there are - no records in that stage to display.""" + no records in that stage to display.""", ) -class ProjectWithStage(models.Model): - _inherit = 'project.project' +class ProjectProject(models.Model): + _inherit = "project.project" - def compute_default_stage(self): - return self.env['project.stage'].search( - [('fold', '=', False)], order='sequence', limit=1).id + def _get_default_stage_id(self): + return ( + self.env["project.stage"] + .search([("fold", "=", False)], order="sequence", limit=1) + .id + ) + + @api.model + def _read_group_stage_ids(self, stages, domain, order): + search_domain = [("id", "in", stages.ids)] + stage_ids = stages._search( + search_domain, order=order, access_rights_uid=SUPERUSER_ID + ) + return stages.browse(stage_ids) stage_id = fields.Many2one( - 'project.stage', 'Stage', ondelete='restrict', index=True, - default=compute_default_stage, - tracking=True) + "project.stage", + string="Stage", + ondelete="restrict", + index=True, + default=_get_default_stage_id, + group_expand="_read_group_stage_ids", + tracking=True, + copy=False + )