Browse Source

qualifiant text et booleen

master
root 3 years ago
parent
commit
c68f41fe3b
5 changed files with 173 additions and 80 deletions
  1. +1
    -1
      models/operation.py
  2. +30
    -13
      models/partner.py
  3. +67
    -10
      models/qualifier.py
  4. +26
    -7
      views/partner.xml
  5. +49
    -49
      views/qualifier.xml

+ 1
- 1
models/operation.py View File

@ -495,7 +495,7 @@ class opendons_ensemble(models.Model):
name=fields.Char(string='Name',required=True, translate=True,track_visibility='always') name=fields.Char(string='Name',required=True, translate=True,track_visibility='always')
logical_operator = fields.Selection([('union','union'),('inter','intersection')],'Type',default='union') 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_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') #partner_ids = fields.Many2many('res.partner', 'partner_segment_rel', 'partner_id', 'segment_id', string='partners')


+ 30
- 13
models/partner.py View File

@ -13,14 +13,26 @@ from werkzeug import utils
class partner(models.Model): class partner(models.Model):
_inherit = 'res.partner' _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): def _compute_address_count(self):
# The current user may not have access rights for donations # The current user may not have access rights for donations
@ -69,11 +81,16 @@ class partner(models.Model):
string='Qualifier', string='Qualifier',
readonly=True 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( address_ids = fields.One2many(
'opendons.partneraddress', 'opendons.partneraddress',


+ 67
- 10
models/qualifier.py View File

@ -34,8 +34,11 @@ class opendons_qualifier(models.Model):
name = fields.Char() name = fields.Char()
#type=fields.Selection([('checkbox','checkbox'),('text','text'),('numerical','numerical')], default='checkbox') #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() 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( category_id = fields.Many2one(
'opendons_qualifier.category', string='Category', tracking=True, 'opendons_qualifier.category', string='Category', tracking=True,
required=True) required=True)
@ -49,23 +52,74 @@ class opendons_qualifier(models.Model):
#ajout du qualificatif nouvellement créé pour chaque contact #ajout du qualificatif nouvellement créé pour chaque contact
for partner in self.env['res.partner'].sudo().search([]): 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 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): class opendons_partnerqualifier(models.Model):
_name = 'opendons_qualifier.partnerqualifier' _name = 'opendons_qualifier.partnerqualifier'
_description = 'qualificatifs pour stocker les valeurs au niveau du contact' _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') category = fields.Char(related='qualifier_id.category_id.name')
partner_id = fields.Many2one( partner_id = fields.Many2one(
'res.partner', 'res.partner',
@ -74,13 +128,16 @@ class opendons_partnerqualifier(models.Model):
index=True, index=True,
readonly=True, readonly=True,
track_visibility='onchange', track_visibility='onchange',
ondelete='restrict'
ondelete='cascade'
) )
sql_constraints = [ sql_constraints = [
('qualifier_uniq', 'unique (qualifier_id,partner_id)', 'A qualifier could be defined only one time on same partner.') ('qualifier_uniq', 'unique (qualifier_id,partner_id)', 'A qualifier could be defined only one time on same partner.')
] ]
@api.constrains('qualifier_id') @api.constrains('qualifier_id')
def _check_qualifier_id(self): def _check_qualifier_id(self):
for q in self: for q in self:


+ 26
- 7
views/partner.xml View File

@ -2,11 +2,20 @@
<odoo> <odoo>
<record id="act_partner_qualifier" model="ir.actions.act_window">
<field name="name">Qualifiers</field>
<record id="act_partner_text_qualifier" model="ir.actions.act_window">
<field name="name">Text qualifiers</field>
<field name="res_model">opendons_qualifier.partnerqualifier</field> <field name="res_model">opendons_qualifier.partnerqualifier</field>
<field name="view_mode">tree,form,graph</field> <field name="view_mode">tree,form,graph</field>
<field name="context">{'search_default_partner_id': active_id}</field>
<field name="context">{'search_default_partner_id': active_id,'ctx_value_text':True,'ctx_value_bool':False}</field>
<field name="domain">[('value_type','=', 'text'),('actif','=',True)]</field>
</record>
<record id="act_partner_boolean_qualifier" model="ir.actions.act_window">
<field name="name">Bool qualifiers</field>
<field name="res_model">opendons_qualifier.partnerqualifier</field>
<field name="view_mode">tree,form,graph</field>
<field name="context">{'search_default_partner_id': active_id,'ctx_value_text':False,'ctx_value_bool':True}</field>
<field name="domain">[('value_type','=', 'boolean'),('actif','=',True)]</field>
</record> </record>
<record id="act_partner_address" model="ir.actions.act_window"> <record id="act_partner_address" model="ir.actions.act_window">
@ -108,10 +117,16 @@
</button> </button>
<button class="oe_stat_button" type="action" <button class="oe_stat_button" type="action"
name="%(act_partner_qualifier)d"
name="%(act_partner_text_qualifier)d"
icon="fa-info">
<span>Text Qualifiers</span>
</button>
<button class="oe_stat_button" type="action"
name="%(act_partner_boolean_qualifier)d"
icon="fa-info"> icon="fa-info">
<field string="Qualifiers" name="qualifier_count" widget="statinfo"/>
<span>Bool Qualifiers</span>
</button> </button>
<button class="oe_stat_button" type="action" <button class="oe_stat_button" type="action"
@ -139,11 +154,15 @@
<menuitem id="opendons_qualifier_title_menu" name ="Qualifiers" <menuitem id="opendons_qualifier_title_menu" name ="Qualifiers"
parent="contacts.menu_contacts" sequence="21"/> parent="contacts.menu_contacts" sequence="21"/>
<menuitem id="opendons_qualifier_menu" action="qualifier_action"
<menuitem id="opendons_boolean_qualifier_menu" action="boolean_qualifier_action"
parent="opendons_qualifier_title_menu" sequence="1"/> parent="opendons_qualifier_title_menu" sequence="1"/>
<menuitem id="opendons_qualifier_category_menu" action="category_action"
<menuitem id="opendons_text_qualifier_menu" action="text_qualifier_action"
parent="opendons_qualifier_title_menu" sequence="2"/> parent="opendons_qualifier_title_menu" sequence="2"/>
<menuitem id="opendons_qualifier_category_menu" action="category_action"
parent="opendons_qualifier_title_menu" sequence="3"/>
<menuitem id="opendons_relationship_title_menu" name ="Relationships" <menuitem id="opendons_relationship_title_menu" name ="Relationships"
parent="contacts.menu_contacts" sequence="22"/> parent="contacts.menu_contacts" sequence="22"/>


+ 49
- 49
views/qualifier.xml View File

@ -20,8 +20,11 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree> <tree>
<field name="name"/> <field name="name"/>
<field name="actif"/>
<field name="category_id"/> <field name="category_id"/>
<field name="default_value"/>
<field name="value_type"/>
<field name="default_value_text" invisible="context.get('ctx_value_bool')"/>
<field name="default_value_bool" invisible="context.get('ctx_value_text')"/>
<field name="description"/> <field name="description"/>
</tree> </tree>
@ -32,14 +35,16 @@
<field name="name">opendons_partnerqualifier list</field> <field name="name">opendons_partnerqualifier list</field>
<field name="model">opendons_qualifier.partnerqualifier</field> <field name="model">opendons_qualifier.partnerqualifier</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Qualifiers" editable="top">
<field name="category" string="category"/>
<tree string="Qualifiers" editable="top" delete="0" create="0">
<field name="qualifier_id"/> <field name="qualifier_id"/>
<field name="actif"/>
<field name="value"/>
<field name="value_type"/>
<field name="value_text" invisible="context.get('ctx_value_bool')"/>
<field name="value_bool" invisible="context.get('ctx_value_text')"/>
<field name="category" string="category"/>
</tree> </tree>
</field> </field>
</record> </record>
<record id="opendons.partnerqualifier_search" model="ir.ui.view"> <record id="opendons.partnerqualifier_search" model="ir.ui.view">
<field name="name">opendons_partnerqualifier.search</field> <field name="name">opendons_partnerqualifier.search</field>
<field name="model">opendons_qualifier.partnerqualifier</field> <field name="model">opendons_qualifier.partnerqualifier</field>
@ -50,18 +55,40 @@
</field> </field>
</record> </record>
<record model="ir.ui.view" id="opendons.qualifier_form" >
<field name="name">opendons_qualifier Form</field>
<field name="model">opendons_qualifier.qualifier</field>
<field name="arch" type="xml">
<form string="qualifier_form">
<header>
<button name="delete_all_partner_qualifiers" type="object" string="Delete all partner's qualifiers" />
</header>
<sheet>
<group name="qualifier">
<field name="name"/>
<field name="actif"/>
<field name="category_id"/>
<field name="value_type"/>
<field name="default_value_text" attrs="{'invisible': [('value_type','!=','text')]}"/>
<field name="default_value_bool" attrs="{'invisible': [('value_type','!=','boolean')]}"/>
<field name="description"/>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="opendons.partnerqualifier_form" > <record model="ir.ui.view" id="opendons.partnerqualifier_form" >
<field name="name">opendons_partnerqualifier Form</field> <field name="name">opendons_partnerqualifier Form</field>
<field name="model">opendons_qualifier.partnerqualifier</field> <field name="model">opendons_qualifier.partnerqualifier</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="partnerqualifier_form">
<form string="partnerqualifier_form" delete="0" create="0">
<sheet> <sheet>
<group name="qualifier"> <group name="qualifier">
<field name="partner_id"/> <field name="partner_id"/>
<field name="qualifier_id"/> <field name="qualifier_id"/>
<field name="actif"/>
<field name="value"/>
<field name="value_text"/>
<field name="value_bool"/>
</group> </group>
</sheet> </sheet>
</form> </form>
@ -76,10 +103,20 @@
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<record model="ir.actions.act_window" id="qualifier_action">
<field name="name">qualifiers</field>
<record model="ir.actions.act_window" id="boolean_qualifier_action">
<field name="name">boolean qualifiers</field>
<field name="res_model">opendons_qualifier.qualifier</field>
<field name="view_mode">tree,form</field>
<field name="context">{'default_value_type':'boolean','ctx_value_text':False,'ctx_value_bool':True}</field>
<field name="domain">[('value_type','=','boolean')]</field>
</record>
<record model="ir.actions.act_window" id="text_qualifier_action">
<field name="name">text qualifiers</field>
<field name="res_model">opendons_qualifier.qualifier</field> <field name="res_model">opendons_qualifier.qualifier</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="context">{'default_value_type':'text','ctx_value_text':True,'ctx_value_bool':False}</field>
<field name="domain">[('value_type','=','text')]</field>
</record> </record>
<record model="ir.actions.act_window" id="partnerqualifier_action"> <record model="ir.actions.act_window" id="partnerqualifier_action">
@ -88,48 +125,11 @@
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<!-- server action to the one above -->
<!--
<record model="ir.actions.server" id="opendons_qualifier.action_server">
<field name="name">opendons_qualifier server</field>
<field name="model_id" ref="model_opendons_qualifier_opendons_qualifier"/>
<field name="state">code</field>
<field name="code">
action = {
"type": "ir.actions.act_window",
"view_mode": "tree,form",
"res_model": model._name,
}
</field>
</record>
-->
<!-- Top menu item -->
<!-- <menuitem name="opendons_qualifier" id="opendons_qualifier.menu_root" parent="contacts.menu_contacts"/> -->
<!-- entries menu -->
<!-- <menuitem name="categories" id="opendons_qualifier.category" parent="opendons_qualifier_menu" action="opendons_qualifier.category_action_window"/>
<menuitem name="qualifiers" id="opendons_qualifier.qualifier" parent="opendons_qualifier_menu" action="opendons_qualifier.qualifier_action_window"/> -->
<!-- actions -->
<!-- <menuitem name="List" id="opendons_qualifier.menu_1_list" parent="opendons_qualifier.menu_1"
action="opendons_qualifier.action_window"/> -->
<!-- <menuitem name="Server to list" id="opendons_qualifier" parent="opendons_qualifier.menu_2"
action="opendons_qualifier.action_server"/> -->
</data> </data>
</odoo> </odoo>

Loading…
Cancel
Save