diff --git a/__manifest__.py b/__manifest__.py index a06c3cbe2e69dca429117eefde7eff0d664cbd66..5acc18feb40933565c2a4930f7961fe12fea0b09 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -1,7 +1,7 @@ { "name": "CG SCOP - Adhésion Instance", "summary": "Gestion des instances Adhésions", - "version": "13.0.1.0", + "version": "13.0.1.0.0", "author": "Le Filament", "license": "AGPL-3", "application": False, diff --git a/models/res_partner.py b/models/res_partner.py index 153ecc50f5f35563d8340e265fefa4d9d59e253d..0a8f3275033e34790e25e6918980b1789cbf05da 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -5,16 +5,16 @@ from odoo import models, api, fields class ScopPartner(models.Model): - _inherit = 'res.partner' + _inherit = "res.partner" date_bureau_validation = fields.Date( string="Date du bureau de validation", - compute='_compute_date_bureau_validation') + compute="_compute_date_bureau_validation", + ) # ------------------------------------------------------ # Compute # ------------------------------------------------------ - @api.multi def _compute_date_bureau_validation(self): """ Date bureau adhesion is last instance type adhesion attached to partner @@ -22,16 +22,17 @@ class ScopPartner(models.Model): """ for r in self: r.date_bureau_validation = None - instance_adhesion_ids = r.instance_ids.filtered('is_type_membership')\ - .sorted('date_start') + instance_adhesion_ids = r.instance_ids.filtered( + "is_type_membership" + ).sorted("date_start") if instance_adhesion_ids: - r.date_bureau_validation = instance_adhesion_ids[-1].\ - date_start.date() + r.date_bureau_validation = instance_adhesion_ids[ + -1 + ].date_start.date() # ------------------------------------------------------ # Business method # ------------------------------------------------------ - @api.multi def get_theorical_amount_adhesion(self, effectif): """ Trick to use super method to get amount adhesion in compute field @@ -40,22 +41,27 @@ class ScopPartner(models.Model): self.ensure_one() return super(ScopPartner, self).get_amount_adhesion(effectif) - @api.multi def get_amount_adhesion(self, effectif): """ Override function to get custom amount set in instance if exists """ self.ensure_one() - adhesion_from_instance = self.env[ - 'scop.instance.partner'].search([ - ('instance_id', '=', - self.env.context.get('origin_instance_id')), - ('partner_id', '=', self.id) - ]) - if len(adhesion_from_instance) == 1 and \ - self.env.context.get('origin_instance_id'): + adhesion_from_instance = self.env["scop.instance.partner"].search( + [ + ( + "instance_id", + "=", + self.env.context.get("origin_instance_id"), + ), + ("partner_id", "=", self.id), + ] + ) + if len(adhesion_from_instance) == 1 and self.env.context.get( + "origin_instance_id" + ): amount_adhesion = adhesion_from_instance.amount_adhesion else: - amount_adhesion = super( - ScopPartner, self).get_amount_adhesion(effectif) + amount_adhesion = super(ScopPartner, self).get_amount_adhesion( + effectif + ) return amount_adhesion diff --git a/models/scop_instance.py b/models/scop_instance.py index 1298451540fe66ccf0830947a18f8054bad3c6ac..81f71f713343b0ed457a6003039e80be8b6cc383 100644 --- a/models/scop_instance.py +++ b/models/scop_instance.py @@ -10,7 +10,7 @@ _logger = logging.getLogger(__name__) class ScopInstance(models.Model): - _inherit = ["scop.instance", 'cgscop.alfresco'] + _inherit = ["scop.instance", "cgscop.alfresco"] # ------------------------------------------------------ # Fields declaration @@ -20,44 +20,54 @@ class ScopInstance(models.Model): string="Date d'adhésion statistique", ) instance_partner_ids = fields.One2many( - comodel_name='scop.instance.partner', - inverse_name='instance_id', - string='Coopératives', - required=False) + comodel_name="scop.instance.partner", + inverse_name="instance_id", + string="Coopératives", + required=False, + ) partners_count = fields.Integer( - string='Nombre de lignes de commandes', - compute='_compute_partners_count') - comments = fields.Text('Commentaires') + string="Nombre de lignes de commandes", + compute="_compute_partners_count", + ) + comments = fields.Text("Commentaires") email_count = fields.Integer( - string='Nombre de mails', - compute='_compute_emails' + string="Nombre de mails", compute="_compute_emails" ) # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ - @api.multi def _compute_partners_count(self): for r in self: r.partners_count = len(r.instance_partner_ids) - @api.multi def _compute_emails(self): for r in self: partners = r._get_partners() - email_ids = self.env['mail.mail'].search([ - ('mail_message_id', 'in', partners.mapped('message_ids').ids), - ('subtype_id', '=', self.env.ref( - 'cgscop_adhesion_alfodoo.' - 'mail_message_subtype_adhesion').id) - ],) + email_ids = self.env["mail.mail"].search( + [ + ( + "mail_message_id", + "in", + partners.mapped("message_ids").ids, + ), + ( + "subtype_id", + "=", + self.env.ref( + "cgscop_adhesion_alfodoo." + "mail_message_subtype_adhesion" + ).id, + ), + ], + ) r.email_count = len(email_ids) # ------------------------------------------------------ # Onchange fields # ------------------------------------------------------ - @api.onchange('date') + @api.onchange("date") def onchange_date(self): if not self.date_membership: self.date_membership = fields.Date.to_date(self.date) @@ -65,7 +75,6 @@ class ScopInstance(models.Model): # ------------------------------------------------------ # Business method # ------------------------------------------------------ - @api.multi def get_report_datas(self): """ :return: dict of stats (group by ur and cooperative form) @@ -82,18 +91,18 @@ class ScopInstance(models.Model): lm_partner = partner.get_lm_adhesion() lm_ids.append(lm_partner.id) - partners_lm = self.env['liste.ministere'].browse(lm_ids) + partners_lm = self.env["liste.ministere"].browse(lm_ids) ur_global = partners_lm.read_group( - domain=[('id', 'in', partners_lm.ids)], - fields=['ur_id'], - groupby=['ur_id', 'eff_tt', 'eff_sal_assoc'], - orderby='ur_id', - lazy=True + domain=[("id", "in", partners_lm.ids)], + fields=["ur_id"], + groupby=["ur_id", "eff_tt", "eff_sal_assoc"], + orderby="ur_id", + lazy=True, ) datas_stats_global = { - 'ur_global': ur_global, - 'partners': partners_lm, + "ur_global": ur_global, + "partners": partners_lm, } return datas_stats_global @@ -101,16 +110,16 @@ class ScopInstance(models.Model): """ map o2m on partner_id """ - return self.instance_partner_ids.mapped('partner_id') + return self.instance_partner_ids.mapped("partner_id") - @api.multi def create_report_adhesion(self, partners): """ Generic function to create report adhésion CG :return: """ - return self.env.ref('cgscop_adhesion.cgscop_adhesion_report'). \ - report_action(partners) + return self.env.ref( + "cgscop_adhesion.cgscop_adhesion_report" + ).report_action(partners) # ------------------------------------------------------ # Actions @@ -121,87 +130,86 @@ class ScopInstance(models.Model): :return: """ self.ensure_one() - wizard = self.env['scop.instance.wizard'].\ - create({'instance_id': self.id}) + wizard = self.env["scop.instance.wizard"].create( + {"instance_id": self.id} + ) return { - 'name': "Ajouter des coops", - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'res_model': 'scop.instance.wizard', - 'res_id': wizard.id, - 'target': 'new' - } + "name": "Ajouter des coops", + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "scop.instance.wizard", + "res_id": wizard.id, + "target": "new", + } - @api.multi def create_report_instance_adhesion(self): """ Create report for "états préparatoires" :return: """ return self.env.ref( - 'cgscop_instance.cgscop_instance_adhesion_report'). \ - report_action(self) + "cgscop_instance.cgscop_instance_adhesion_report" + ).report_action(self) - @api.multi def create_report_adhesion_all(self): """ Create report adhésion CG ALL :return: """ partners = self._get_partners().filtered( - lambda p: p.project_status == '6_suivi') + lambda p: p.project_status == "6_suivi" + ) if len(partners) < 1: - raise UserError( - 'Aucune coopérative n\'est en statut "suivi"') + raise UserError('Aucune coopérative n\'est en statut "suivi"') return self.create_report_adhesion(partners) - @api.multi def create_report_adhesion_per_ur(self): """ Create report adhésion CG PER UR :return: """ partners = self._get_partners().filtered( - lambda i: i.project_status == '6_suivi') + lambda i: i.project_status == "6_suivi" + ) if len(partners) < 1: - raise UserError( - 'Aucune coopérative n\'est en statut "suivi"') - urs = partners.mapped('ur_id') - wizard = self.env['scop.instance.report.wizard'].create({ - 'partner_ids': [(6, 0, partners.ids)], - 'ur_ids': [(6, 0, urs.ids)], - }) + raise UserError('Aucune coopérative n\'est en statut "suivi"') + urs = partners.mapped("ur_id") + wizard = self.env["scop.instance.report.wizard"].create( + { + "partner_ids": [(6, 0, partners.ids)], + "ur_ids": [(6, 0, urs.ids)], + } + ) return { - 'name': 'Courriers d\'adhésion par UR', - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'res_model': 'scop.instance.report.wizard', - 'res_id': wizard.id, - 'target': 'new', - 'flags': {'mode': 'readonly'} + "name": "Courriers d'adhésion par UR", + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "scop.instance.report.wizard", + "res_id": wizard.id, + "target": "new", + "flags": {"mode": "readonly"}, } - @api.multi def action_send_mail_adhesion(self): """ Open wizard to send mail adhésions """ partners = self._get_partners().filtered( - lambda i: i.project_status == '6_suivi') + lambda i: i.project_status == "6_suivi" + ) if len(partners) < 1: - raise UserError( - 'Aucune coopérative n\'est en statut "suivi"') - wizard = self.env['scop.instance.mail.wizard'].create({}) + raise UserError('Aucune coopérative n\'est en statut "suivi"') + wizard = self.env["scop.instance.mail.wizard"].create({}) return { - 'name': 'Envoyer les mails d\'adhésion', - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'res_model': 'scop.instance.mail.wizard', - 'res_id': wizard.id, - 'target': 'new', - 'domain': [('partner_ids', 'in', partners.ids)], + "name": "Envoyer les mails d'adhésion", + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "scop.instance.mail.wizard", + "res_id": wizard.id, + "target": "new", + "domain": [("partner_ids", "in", partners.ids)], } def action_show_coop(self): @@ -212,18 +220,16 @@ class ScopInstance(models.Model): self.ensure_one() partner_ids = self._get_partners().ids tree_view = self.env.ref( - 'cgscop_instance.res_partner_instance_coops_tree').id + "cgscop_instance.res_partner_instance_coops_tree" + ).id return { - 'type': 'ir.actions.act_window', - 'name': 'Coopératives', - 'views': [ - [tree_view, "tree"], - [False, "form"] - ], - 'view_mode': 'tree', - 'res_model': 'res.partner', - 'target': 'current', - 'domain': [["id", "in", partner_ids]], + "type": "ir.actions.act_window", + "name": "Coopératives", + "views": [[tree_view, "tree"], [False, "form"]], + "view_mode": "tree", + "res_model": "res.partner", + "target": "current", + "domain": [["id", "in", partner_ids]], } def action_show_emails(self): @@ -232,16 +238,21 @@ class ScopInstance(models.Model): """ partners = self._get_partners() return { - 'name': 'Etat des mails envoyés', - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'views': [(False, 'tree'), (False, 'form')], - 'res_model': 'mail.mail', - 'domain': [ - ('mail_message_id', 'in', partners.mapped('message_ids').ids), - ('subtype_id', '=', self.env.ref( - 'cgscop_adhesion_alfodoo.' - 'mail_message_subtype_adhesion').id) + "name": "Etat des mails envoyés", + "type": "ir.actions.act_window", + "view_mode": "form", + "views": [(False, "tree"), (False, "form")], + "res_model": "mail.mail", + "domain": [ + ("mail_message_id", "in", partners.mapped("message_ids").ids), + ( + "subtype_id", + "=", + self.env.ref( + "cgscop_adhesion_alfodoo." + "mail_message_subtype_adhesion" + ).id, + ), ], } @@ -258,84 +269,98 @@ class ScopInstance(models.Model): - open wizard to send mail to all validated coops """ partners_to_validate = self.env.context.get( - 'partners_to_validate', False) + "partners_to_validate", False + ) if not partners_to_validate: partners_to_validate = self.instance_partner_ids.filtered( - lambda p: p.state == 'positive' and p.project_status == '5_cg') + lambda p: p.state == "positive" and p.project_status == "5_cg" + ) validated_partners = list() for r in partners_to_validate: partner = r.partner_id try: # scop_valid_cg partner.with_context( - origin_instance_id=self.id).scop_valid_cg() + origin_instance_id=self.id + ).scop_valid_cg() # set membership stat period - membership_period = self.env['scop.membership.period'].search( - [('partner_id', '=', partner.id), - ('start', '=', self.date), - ('end', '=', False)], limit=1) + membership_period = self.env["scop.membership.period"].search( + [ + ("partner_id", "=", partner.id), + ("start", "=", self.date), + ("end", "=", False), + ], + limit=1, + ) if membership_period.start_stat != r.statistic_membership_date: - membership_period.update({ - 'start_stat': r.statistic_membership_date - }) + membership_period.update( + {"start_stat": r.statistic_membership_date} + ) # log success validated_partners.append(partner.id) r.is_success = True self.env.cr.commit() except Exception as e: - logger = "Erreur lors la validation du dossier %s : " \ - "%s" % (partner.name, e.args[0]) + logger = "Erreur lors la validation du dossier %s : " "%s" % ( + partner.name, + e.args[0], + ) _logger.warning(logger) self.env.cr.rollback() r.is_success = False - r.message_error = fields.datetime.now().strftime( - "%d/%m/%Y - %-H:%M") + ' - Erreur : ' + e.args[0] + r.message_error = ( + fields.datetime.now().strftime("%d/%m/%Y - %-H:%M") + + " - Erreur : " + + e.args[0] + ) self.env.cr.commit() if len(partners_to_validate) == 1: raise ValidationError(logger) if len(validated_partners) > 0: return self.send_mass_mail_adhesion( - self.env['res.partner'].browse(validated_partners)) + self.env["res.partner"].browse(validated_partners) + ) - @api.multi def send_mass_mail_adhesion(self, partners): """ Open wizard to send mail adhésion to partners of instance """ self.ensure_one() template_id = self.env.ref( - 'cgscop_adhesion_alfodoo.email_template_adhesion') - ir_model_data = self.env['ir.model.data'] + "cgscop_adhesion_alfodoo.email_template_adhesion" + ) + ir_model_data = self.env["ir.model.data"] try: compose_form_id = ir_model_data.get_object_reference( - 'mail', 'email_compose_message_wizard_form')[1] + "mail", "email_compose_message_wizard_form" + )[1] except ValueError: compose_form_id = False ctx = { - 'default_model': 'res.partner', - 'default_res_id': partners.ids[0], - 'default_use_template': True, - 'default_template_id': template_id.id, - 'default_subtype_id': self.env.ref( - 'cgscop_adhesion_alfodoo.mail_message_subtype_adhesion').id, - 'default_composition_mode': 'mass_mail' if len( - partners.ids) > 1 else 'comment', - 'active_ids': partners.ids + "default_model": "res.partner", + "default_res_id": partners.ids[0], + "default_use_template": True, + "default_template_id": template_id.id, + "default_subtype_id": self.env.ref( + "cgscop_adhesion_alfodoo.mail_message_subtype_adhesion" + ).id, + "default_composition_mode": "mass_mail" + if len(partners.ids) > 1 + else "comment", + "active_ids": partners.ids, } return { - 'type': 'ir.actions.act_window', - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'mail.compose.message', - 'views': [(compose_form_id, 'form')], - 'view_id': compose_form_id, - 'target': 'new', - 'context': ctx, + "type": "ir.actions.act_window", + "view_type": "form", + "view_mode": "form", + "res_model": "mail.compose.message", + "views": [(compose_form_id, "form")], + "view_id": compose_form_id, + "target": "new", + "context": ctx, } def update_membership_date(self): for partner in self.instance_partner_ids: - partner.update({ - 'statistic_membership_date': self.date_membership - }) + partner.update({"statistic_membership_date": self.date_membership}) diff --git a/models/scop_instance_partner.py b/models/scop_instance_partner.py index 2aac83e84f71319a0842984ef63a4d23f6e33c67..e977daac1e7654ad46025ab8df6098981ae948cc 100644 --- a/models/scop_instance_partner.py +++ b/models/scop_instance_partner.py @@ -13,59 +13,57 @@ class ScopInstancePartner(models.Model): # ------------------------------------------------------ @api.model def _get_default_date_stat(self): - if self.env.context.get('active_model') == 'scop.instance': - return self.env['scop.instance'].browse( - self.env.context['active_id']).date.date() + if self.env.context.get("active_model") == "scop.instance": + return ( + self.env["scop.instance"] + .browse(self.env.context["active_id"]) + .date.date() + ) # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ instance_id = fields.Many2one( - comodel_name='scop.instance', - string='Instance', - required=True) + comodel_name="scop.instance", string="Instance", required=True + ) partner_id = fields.Many2one( - comodel_name='res.partner', - string='Coopératives', - required=True) + comodel_name="res.partner", string="Coopératives", required=True + ) display_name = fields.Char( - string='Coopérative', - related='partner_id.display_name') - city = fields.Char( - string="Ville", - related='partner_id.city') + string="Coopérative", related="partner_id.display_name" + ) + city = fields.Char(string="Ville", related="partner_id.city") ur_id = fields.Many2one( - comodel_name='union.regionale', - string='UR', - related='partner_id.ur_id') - phone = fields.Char( - string="Téléphone", - related='partner_id.phone') - email = fields.Char( - string='Email', - related='partner_id.email') + comodel_name="union.regionale", string="UR", related="partner_id.ur_id" + ) + phone = fields.Char(string="Téléphone", related="partner_id.phone") + email = fields.Char(string="Email", related="partner_id.email") project_status = fields.Selection( - string='Statut projet', - related='partner_id.project_status') + string="Statut projet", related="partner_id.project_status" + ) state = fields.Selection( - string='Avis', - selection=[('positive', 'Favorable'), - ('negative', 'Défavorable')], - default='positive', - required=True, track_visibility='onchange') + string="Avis", + selection=[("positive", "Favorable"), ("negative", "Défavorable")], + default="positive", + required=True, + track_visibility="onchange", + ) amount_adhesion = fields.Float( - string='Montant Adhésion', - compute='_compute_amount_adhesion', store=True, - track_visibility='onchange') - comments = fields.Text('Commentaires', track_visibility='onchange') + string="Montant Adhésion", + compute="_compute_amount_adhesion", + store=True, + track_visibility="onchange", + ) + comments = fields.Text("Commentaires", track_visibility="onchange") statistic_membership_date = fields.Date( - string='Date d\'adhésion statistique', - default=lambda self: self._get_default_date_stat()) + string="Date d'adhésion statistique", + default=lambda self: self._get_default_date_stat(), + ) - is_success = fields.Boolean('Succès', default=True) - message_error = fields.Text('Message d\'erreur') + is_success = fields.Boolean("Succès", default=True) + message_error = fields.Text("Message d'erreur") # ------------------------------------------------------ # SQL Constraints @@ -74,40 +72,42 @@ class ScopInstancePartner(models.Model): Contrainte : Unicité clé partner_id-instance_id """ _sql_constraints = [ - ('uniqueness_partner_instance_key', - 'unique(partner_id, instance_id)', - "Une coop ne peut être présente qu'une seule fois par instance"), + ( + "uniqueness_partner_instance_key", + "unique(partner_id, instance_id)", + "Une coop ne peut être présente qu'une seule fois par instance", + ), ] # ------------------------------------------------------ # Compute # ------------------------------------------------------ - @api.multi - @api.depends('partner_id', 'state') + @api.depends("partner_id", "state") def _compute_amount_adhesion(self): for r in self: - if r.state == 'positive': - lm = r.partner_id.lm_adhesion_id \ - if r.partner_id.lm_adhesion_id \ + if r.state == "positive": + lm = ( + r.partner_id.lm_adhesion_id + if r.partner_id.lm_adhesion_id else r.partner_id.get_lm_adhesion(r.instance_id.date.year) + ) effectif = lm.eff_tt - r.amount_adhesion = \ - r.partner_id.get_theorical_amount_adhesion(effectif) + r.amount_adhesion = r.partner_id.get_theorical_amount_adhesion( + effectif + ) else: r.amount_adhesion = 0 # ------------------------------------------------------ # Actions # ------------------------------------------------------ - @api.multi def switch_state(self): self.ensure_one() - if self.state == 'positive': - self.state = 'negative' + if self.state == "positive": + self.state = "negative" else: - self.state = 'positive' + self.state = "positive" - @api.multi def action_free_coop_from_instance(self): """ Free coop from instance from "scop_instance_partner" view @@ -115,32 +115,36 @@ class ScopInstancePartner(models.Model): """ self.ensure_one() # On détache la coop de l'instance - self.partner_id.write({ - 'instance_ids': [(3, self.id)]} - ) + self.partner_id.write({"instance_ids": [(3, self.id)]}) # On supprime l'objet "statut coop par instance" associé self.unlink() def try_push_again(self): message = ( - "<p>" + self.message_error + ".</p>" + - "<p><strong>Voulez-vous tenter de valider à " - "nouveau cette coop ?</strong></p>" + "<p>" + + self.message_error + + ".</p>" + + "<p><strong>Voulez-vous tenter de valider à " + "nouveau cette coop ?</strong></p>" + ) + action = ( + "instance_id.with_context(partners_to_validate=" + "self.env['scop.instance.partner']." + "browse(" + str(self.id) + ")).scop_valid_cg_mass()" + ) + message_id = self.env["message.wizard"].create( + { + "message": message, + "cancel_button": True, + "action": action, + } ) - action = 'instance_id.with_context(partners_to_validate=' \ - 'self.env[\'scop.instance.partner\'].' \ - 'browse(' + str(self.id) + ')).scop_valid_cg_mass()' - message_id = self.env['message.wizard'].create({ - 'message': message, - 'cancel_button': True, - 'action': action, - }) return { - 'name': 'Erreur de validation pour ' + self.partner_id.name, - 'type': 'ir.actions.act_window', - 'view_mode': 'form', - 'res_model': 'message.wizard', - 'res_id': message_id.id, - 'target': 'new' + "name": "Erreur de validation pour " + self.partner_id.name, + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "message.wizard", + "res_id": message_id.id, + "target": "new", } diff --git a/models/union_regionale.py b/models/union_regionale.py index ab9603303b398421190ec8a989235af3f81c4aa8..b12c6aed52edde08ae67e05497b753daa229aac1 100755 --- a/models/union_regionale.py +++ b/models/union_regionale.py @@ -5,21 +5,22 @@ from odoo import api, models class UnionRegionale(models.Model): - _inherit = 'union.regionale' + _inherit = "union.regionale" # ------------------------------------------------------ # Button function # ------------------------------------------------------ - @api.multi def create_report_adhesion_per_ur(self): """ Create report adhésion CG PER UR :return: """ - partners = self.env['scop.instance'].\ - browse(self.env.context.get('active_id')).\ - mapped('instance_partner_ids').\ - filtered(lambda i: i.project_status == '6_suivi').\ - mapped('partner_id') + partners = ( + self.env["scop.instance"] + .browse(self.env.context.get("active_id")) + .mapped("instance_partner_ids") + .filtered(lambda i: i.project_status == "6_suivi") + .mapped("partner_id") + ) partners_ur = partners.filtered(lambda p: p.ur_id == self) - return self.env['scop.instance'].create_report_adhesion(partners_ur) + return self.env["scop.instance"].create_report_adhesion(partners_ur) diff --git a/wizard/scop_instance_mail_membership_wizard.py b/wizard/scop_instance_mail_membership_wizard.py index 592fd9b0bddfac5ef420b3c60be583af994fc563..960eaaf07fd63873775ae4253db45080069fb3ad 100644 --- a/wizard/scop_instance_mail_membership_wizard.py +++ b/wizard/scop_instance_mail_membership_wizard.py @@ -6,7 +6,7 @@ from odoo.exceptions import UserError class ScopInstanceMailWizard(models.TransientModel): - _name = 'scop.instance.mail.wizard' + _name = "scop.instance.mail.wizard" _description = "Wizard: Mail d'adhésion" @api.model @@ -14,30 +14,33 @@ class ScopInstanceMailWizard(models.TransientModel): """ Compute domain : coops from instance in active_id """ - res = [('id', 'in', 0)] # Nothing accepted by domain, by default - if self.env.context.get('active_model') == 'scop.instance': - instance_id = self.env['scop.instance'].browse( - self.env.context.get('active_id') + res = [("id", "in", 0)] # Nothing accepted by domain, by default + if self.env.context.get("active_model") == "scop.instance": + instance_id = self.env["scop.instance"].browse( + self.env.context.get("active_id") ) partner_ids = instance_id._get_partners().filtered( - lambda i: i.project_status == '6_suivi') + lambda i: i.project_status == "6_suivi" + ) if partner_ids: - res = [('id', 'in', partner_ids.ids)] + res = [("id", "in", partner_ids.ids)] return res partner_ids = fields.Many2many( - comodel_name='res.partner', - string='Coopératives', - domain=lambda self: self._get_partner_ids_domain()) + comodel_name="res.partner", + string="Coopératives", + domain=lambda self: self._get_partner_ids_domain(), + ) - @api.multi def send_mail(self): """ Call function to send mail in mass from scop_instance """ - if self.env.context.get('active_model') == 'scop.instance': - return self.env['scop.instance'].\ - browse(self.env.context.get('active_id')).\ - send_mass_mail_adhesion(self.partner_ids) + if self.env.context.get("active_model") == "scop.instance": + return ( + self.env["scop.instance"] + .browse(self.env.context.get("active_id")) + .send_mass_mail_adhesion(self.partner_ids) + ) else: - raise UserError('Impossible d\'envoyer le mail') + raise UserError("Impossible d'envoyer le mail") diff --git a/wizard/scop_instance_report_per_ur_wizard.py b/wizard/scop_instance_report_per_ur_wizard.py index f5dfb459e939f4eddffa6b5436d1c9071097adb9..0b9ddf3c2c41657e4f1c0250b3685003a6b0d22d 100644 --- a/wizard/scop_instance_report_per_ur_wizard.py +++ b/wizard/scop_instance_report_per_ur_wizard.py @@ -5,12 +5,10 @@ from odoo import fields, models, api class ScopInstanceReportWizard(models.TransientModel): - _name = 'scop.instance.report.wizard' + _name = "scop.instance.report.wizard" _description = "Wizard: Imprimer les courriers par UR" - ur_ids = fields.Many2many( - comodel_name='union.regionale', - string='UR') + ur_ids = fields.Many2many(comodel_name="union.regionale", string="UR") partner_ids = fields.Many2many( - comodel_name='res.partner', - string='Coopératives') + comodel_name="res.partner", string="Coopératives" + ) diff --git a/wizard/scop_instance_wizard.py b/wizard/scop_instance_wizard.py index a99b117250d678ddce83fbac743f9ddd25d52197..9c562f0bbdb8d80f030257956f3296b803d5886d 100644 --- a/wizard/scop_instance_wizard.py +++ b/wizard/scop_instance_wizard.py @@ -5,76 +5,92 @@ from odoo import fields, models, api class ScopInstanceWizard(models.TransientModel): - _name = 'scop.instance.wizard' + _name = "scop.instance.wizard" _description = "Wizard: Associer des coopératives à une instance" instance_id = fields.Many2one( - comodel_name='scop.instance', - string='Instance', - required=True) + comodel_name="scop.instance", string="Instance", required=True + ) partner_ids = fields.Many2many( - comodel_name='res.partner', - string='Coopératives', - domain="[('is_company', '=', True)]" + comodel_name="res.partner", + string="Coopératives", + domain="[('is_company', '=', True)]", ) - type = fields.Selection([ - ('all', 'Toutes les coops en statut "Soumis CG"'), - ('select_5_cg', 'Sélectionner des coops en statut "Soumis CG"'), - ('select_all', 'Sélectionner parmi toutes les coops'), - ], - string='Type de sélection', - default='all' + type = fields.Selection( + [ + ("all", 'Toutes les coops en statut "Soumis CG"'), + ("select_5_cg", 'Sélectionner des coops en statut "Soumis CG"'), + ("select_all", "Sélectionner parmi toutes les coops"), + ], + string="Type de sélection", + default="all", ) # ------------------------------------------------------ # Onchange # ------------------------------------------------------ - @api.onchange('type') + @api.onchange("type") def onchange_type(self): - self.instance_id = self.env['scop.instance'].browse( - self.env.context.get('active_id')) - already_linked_ids = self.instance_id.\ - instance_partner_ids.mapped('partner_id').ids - if self.type == 'select_5_cg': - available_soumis_cg = self.env['res.partner'].search([ - ('is_cooperative', '=', True), - ('id', 'not in', already_linked_ids), - ('project_status', '=', '5_cg'), - ]) - return {'domain': { - 'partner_ids': [('id', 'in', available_soumis_cg.mapped('id'))] - }} + self.instance_id = self.env["scop.instance"].browse( + self.env.context.get("active_id") + ) + already_linked_ids = self.instance_id.instance_partner_ids.mapped( + "partner_id" + ).ids + if self.type == "select_5_cg": + available_soumis_cg = self.env["res.partner"].search( + [ + ("is_cooperative", "=", True), + ("id", "not in", already_linked_ids), + ("project_status", "=", "5_cg"), + ] + ) + return { + "domain": { + "partner_ids": [ + ("id", "in", available_soumis_cg.mapped("id")) + ] + } + } else: - available_coops = self.env['res.partner'].search([ - ('is_cooperative', '=', True), - ('id', 'not in', already_linked_ids) - ]) - return {'domain': { - 'partner_ids': [('id', 'in', available_coops.mapped('id'))] - }} + available_coops = self.env["res.partner"].search( + [ + ("is_cooperative", "=", True), + ("id", "not in", already_linked_ids), + ] + ) + return { + "domain": { + "partner_ids": [("id", "in", available_coops.mapped("id"))] + } + } # ------------------------------------------------------ # Button function # ------------------------------------------------------ def add_partners(self): self.ensure_one() - self.instance_id = self.env['scop.instance'].browse( - self.env.context.get('active_id')) - if self.type == 'all': - already_linked_ids = self.instance_id.\ - instance_partner_ids.mapped('partner_id').ids - self.partner_ids = self.env['res.partner'].search([ - ('is_cooperative', '=', True), - ('id', 'not in', already_linked_ids), - ('project_status', '=', '5_cg') - ]) - # Write instance in partner - self.partner_ids.write( - {'instance_ids': [(4, self.instance_id.id)]} + self.instance_id = self.env["scop.instance"].browse( + self.env.context.get("active_id") ) + if self.type == "all": + already_linked_ids = self.instance_id.instance_partner_ids.mapped( + "partner_id" + ).ids + self.partner_ids = self.env["res.partner"].search( + [ + ("is_cooperative", "=", True), + ("id", "not in", already_linked_ids), + ("project_status", "=", "5_cg"), + ] + ) + # Write instance in partner + self.partner_ids.write({"instance_ids": [(4, self.instance_id.id)]}) # Write partner in instance for partner_id in self.partner_ids: - self.env['scop.instance.partner'].create({ - 'instance_id': self.instance_id.id, - 'partner_id': partner_id.id, - }) + self.env["scop.instance.partner"].create( + { + "instance_id": self.instance_id.id, + "partner_id": partner_id.id, + } + )