# -*- coding: utf-8 -*- from odoo import models, fields, api from odoo.exceptions import UserError, ValidationError from psycopg2 import sql, DatabaseError from werkzeug import utils class opendons_qualifierCategory(models.Model): _name = 'opendons_qualifier.category' _description = 'categories pour les qualificatifs' sql_constraints = [ ('category_uniq', 'UNIQUE((name))', 'This name already exists.') ] name = fields.Char('Name', required=True) order= fields.Integer() description = fields.Text() @api.constrains('name') def _check_name(self): count=self.search_count([('name','=',self.name),('id', '!=', self.id)]) if count>0: raise UserError('This name already exist') class opendons_qualifier(models.Model): _name = 'opendons_qualifier.qualifier' _description = 'qualificatifs de contacts' name = fields.Char() #type=fields.Selection([('checkbox','checkbox'),('text','text'),('numerical','numerical')], default='checkbox') default_value = fields.Char() description = fields.Text() category_id = fields.Many2one( 'opendons_qualifier.category', string='Category', tracking=True, required=True) @api.model def create(self,vals): res = super(opendons_qualifier, self).create(vals) #ajout du qualificatif nouvellement créé pour chaque contact for partner in self.env['res.partner'].sudo().search([]): create_partner_qualifier=self.env['opendons_qualifier.partnerqualifier'].sudo().create( {'partner_id': int(partner.id), 'qualifier_id':int(res.id)}) return res 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') category = fields.Char(related='qualifier_id.category_id.name') partner_id = fields.Many2one( 'res.partner', string='partner', required=True, index=True, readonly=True, track_visibility='onchange', ondelete='restrict' ) 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: result=self.search_count([('qualifier_id','=',int(self.qualifier_id)),('id', '!=', self.id),('partner_id','=',int(self.partner_id))]) if result>0: raise UserError('A qualifier could be defined only one time on same partner.')