# Copyright 2022 Le Filament (https://le-filament.com) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) from odoo import fields, models class MultiPartnerReleaseWizard(models.TransientModel): _name = "multi.partner.release.wizard" _description = "Wizard de création de release pour plusieurs clients" # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ user_id = fields.Many2one( comodel_name="res.users", string="Utilisateur", required=True, domain=[("share", "=", False)], default=lambda self: self.env.user, ) partner_ids = fields.Many2many( comodel_name="res.partner", string="Client", required=True, domain=[("is_company", "=", True)], ) release_date = fields.Datetime( string="Date de mise en production", default=lambda self: fields.Datetime.now(), ) release_module_ids = fields.One2many( comodel_name="multi.partner.release.line.wizard", inverse_name="release_id", string="Modules mis à jour", ) description = fields.Text("Description") # ------------------------------------------------------ # Button actions # ------------------------------------------------------ def create_releases(self): for partner in self.partner_ids: detail_module = [] for module in self.release_module_ids: detail_module.append( ( 0, 0, { "module_id": module.module_id.id, "release_type": module.release_type, "log": module.log, }, ) ) partner.write( { "release_ids": [ ( 0, 0, { "user_id": self.user_id.id, "release_date": self.release_date, "description": self.description, "release_module_ids": detail_module, }, ) ] } ) return { "type": "ir.actions.client", "tag": "reload", } class MultiPartnerReleaseLineWizard(models.TransientModel): _name = "multi.partner.release.line.wizard" _description = "Modules de la release" # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ release_id = fields.Many2one( comodel_name="multi.partner.release.wizard", string="Releases", ondelete="cascade", copy=False, ) module_id = fields.Many2one( comodel_name="res.partner.module", string="Module", required=True, ) log = fields.Text("Liste des changements") release_type = fields.Selection( selection=[ ("fix", "[fix]"), ("update", "[update]"), ("add", "[add]"), ("clean", "[clean]"), ], string="Type", )