From c68f41fe3b95f1e3e7f201e5c3f0af422cfd12e6 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 16 Mar 2022 20:46:52 +0000 Subject: [PATCH] qualifiant text et booleen --- models/operation.py | 2 +- models/partner.py | 43 ++++++++++++++------ models/qualifier.py | 77 ++++++++++++++++++++++++++++++----- views/partner.xml | 33 +++++++++++---- views/qualifier.xml | 98 ++++++++++++++++++++++----------------------- 5 files changed, 173 insertions(+), 80 deletions(-) diff --git a/models/operation.py b/models/operation.py index 3433d08..7fc35fd 100644 --- a/models/operation.py +++ b/models/operation.py @@ -495,7 +495,7 @@ class opendons_ensemble(models.Model): name=fields.Char(string='Name',required=True, translate=True,track_visibility='always') logical_operator = fields.Selection([('union','union'),('inter','intersection')],'Type',default='union') - mailing_domain = fields.Char(string='partners selection', readonly=True) + mailing_domain = fields.Char(string='partners selection') partner_count = fields.Integer(string="partners count",compute='_count_partner_ensemble',readonly=True) #partner_ids = fields.Many2many('res.partner', 'partner_segment_rel', 'partner_id', 'segment_id', string='partners') diff --git a/models/partner.py b/models/partner.py index cca2b41..7648d31 100644 --- a/models/partner.py +++ b/models/partner.py @@ -13,14 +13,26 @@ from werkzeug import utils class partner(models.Model): _inherit = 'res.partner' - @api.depends('qualifier_ids.partner_id') - def _compute_qualifier_count(self): - # The current user may not have access rights for donations - for partner in self: - try: - partner.qualifier_count = len(partner.qualifier_ids) - except Exception: - partner.qualifier_count = 0 + # @api.depends('qualifier_ids.partner_id') + # def _compute_text_qualifier_count(self): + # # The current user may not have access rights for donations + # for partner in self: + # try: + # partner.text_qualifier_count = len(partner.qualifier_ids) + # except Exception: + # partner.text_qualifier_count = 0 + + # @api.depends('qualifier_ids.partner_id') + # def _compute_bool_qualifier_count(self): + # # The current user may not have access rights for donations + # for partner in self: + # try: + + # for qualifier_id in partner.qualifier_ids: + + # partner.bool_qualifier_count =self.env['opendons_qualifier.partnerqualifier'].search([(partner.qual_i + # except Exception: + # partner.bool_qualifier_count = 0 def _compute_address_count(self): # The current user may not have access rights for donations @@ -69,11 +81,16 @@ class partner(models.Model): string='Qualifier', readonly=True ) - qualifier_count = fields.Integer( - compute='_compute_qualifier_count', - string="# of Qualifiers", - readonly=True - ) + # text_qualifier_count = fields.Integer( + # compute='_compute_text_qualifier_count', + # string="# of Qualifiers", + # readonly=True + # ) + # bool_qualifier_count = fields.Integer( + # compute='_compute_bool_qualifier_count', + # string="# of Qualifiers", + # readonly=True + # ) address_ids = fields.One2many( 'opendons.partneraddress', diff --git a/models/qualifier.py b/models/qualifier.py index 0a58a62..34e1198 100644 --- a/models/qualifier.py +++ b/models/qualifier.py @@ -34,8 +34,11 @@ class opendons_qualifier(models.Model): name = fields.Char() #type=fields.Selection([('checkbox','checkbox'),('text','text'),('numerical','numerical')], default='checkbox') - default_value = fields.Char() + default_value_text = fields.Char(string='Default value') + default_value_bool = fields.Boolean(string='Default value') description = fields.Text() + actif=fields.Boolean(string='actif',default=False) + value_type=fields.Selection(string='Value type', selection=[('boolean', 'boolean'), ('text', 'text')], readonly=True) category_id = fields.Many2one( 'opendons_qualifier.category', string='Category', tracking=True, required=True) @@ -49,23 +52,74 @@ class opendons_qualifier(models.Model): #ajout du qualificatif nouvellement créé pour chaque contact for partner in self.env['res.partner'].sudo().search([]): + vals2={} + vals2['partner_id']=int(partner.id) + vals2['qualifier_id']=int(res.id) + vals2['value_type']=res.value_type + vals2['actif']=res.actif - - create_partner_qualifier=self.env['opendons_qualifier.partnerqualifier'].sudo().create( - {'partner_id': int(partner.id), - 'qualifier_id':int(res.id)}) - + if res.value_type=='boolean': + vals2['value_bool']=vals['default_value_bool'] + + if res.value_type=='text': + vals2['value_text']=vals['default_value_text'] + + create_partner_qualifier=self.env['opendons_qualifier.partnerqualifier'].sudo().create(vals2) + return res + + def write(self,vals): + for val in vals: + if val=='actif': + #mise à jour des contact pour le qualificatif + qualifier_partner=self.env['opendons_qualifier.partnerqualifier'].search([('qualifier_id','=',self.id)]) + for q_p in qualifier_partner: + q_p.actif=vals['actif'] + if vals['actif'] and self.value_type=='text': + q_p.value_text=self.default_value_text + if vals['actif'] and self.value_type=='boolean': + q_p.value_bool=self.default_value_bool + if not vals['actif'] and self.value_type=='text': + q_p.value_text='' + if not vals['actif'] and self.value_type=='boolean': + q_p.value_bool=False + + res=super(opendons_qualifier, self).write(vals) + + + + def delete_all_partner_qualifiers(self): + partnerqualifier=self.env['opendons_qualifier.partnerqualifier'].search([]) + partnerqualifier.unlink() class opendons_partnerqualifier(models.Model): _name = 'opendons_qualifier.partnerqualifier' _description = 'qualificatifs pour stocker les valeurs au niveau du contact' - actif=fields.Boolean(string='actif',default=False) - value=fields.Char() - qualifier_id=fields.Many2one('opendons_qualifier.qualifier',string='qualifier') + + value_text=fields.Char(string='value') + value_bool=fields.Boolean(string='value',default=False) + + + @api.model + def _compute_value_type(self): + for q in self: + qualifier=self.env['opendons_qualifier.qualifier'].search([('id',"=",int(q.qualifier_id))]) + q.value_type=qualifier.value_type + + @api.model + def _compute_actif(self): + for q in self: + qualifier=self.env['opendons_qualifier.qualifier'].search([('id',"=",int(q.qualifier_id))]) + q.actif=qualifier.actif + + + + value_type=fields.Selection(string='Value type',selection=[('boolean', 'boolean'), ('text', 'text')], compute=_compute_value_type,store=True, readonly=True) + actif=fields.Boolean(string='actif',compute=_compute_actif,store=True, readonly=True) + qualifier_id=fields.Many2one('opendons_qualifier.qualifier',string='qualifier',readonly=True,ondelete='cascade') category = fields.Char(related='qualifier_id.category_id.name') partner_id = fields.Many2one( 'res.partner', @@ -74,13 +128,16 @@ class opendons_partnerqualifier(models.Model): index=True, readonly=True, track_visibility='onchange', - ondelete='restrict' + ondelete='cascade' ) sql_constraints = [ ('qualifier_uniq', 'unique (qualifier_id,partner_id)', 'A qualifier could be defined only one time on same partner.') ] + + + @api.constrains('qualifier_id') def _check_qualifier_id(self): for q in self: diff --git a/views/partner.xml b/views/partner.xml index a4a1733..dac78f3 100644 --- a/views/partner.xml +++ b/views/partner.xml @@ -2,11 +2,20 @@ - - Qualifiers + + Text qualifiers opendons_qualifier.partnerqualifier tree,form,graph - {'search_default_partner_id': active_id} + {'search_default_partner_id': active_id,'ctx_value_text':True,'ctx_value_bool':False} + [('value_type','=', 'text'),('actif','=',True)] + + + + Bool qualifiers + opendons_qualifier.partnerqualifier + tree,form,graph + {'search_default_partner_id': active_id,'ctx_value_text':False,'ctx_value_bool':True} + [('value_type','=', 'boolean'),('actif','=',True)] @@ -108,10 +117,16 @@ +