Sélectionner une révision Git
multi_partner_release_wizard.py
-
Rémi - Le Filament a rédigéRémi - Le Filament a rédigé
multi_partner_release_wizard.py 3,36 Kio
# 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",
)