1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# -*- coding: utf-8 -*-
# Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>)
# @author: La Louve
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import api, fields, models
from openerp.tools.safe_eval import safe_eval
class ResPartner(models.Model):
_inherit = "res.partner"
# ### FUNCTIONS FOR DEFINING DEFAULT VALUES #########
@api.model
def _get_default_badge_to_print(self):
trigger_fields = self._get_field_names_trigger_badge_reprint()
fields_has_value = trigger_fields and \
all([self[field_item] for field_item in trigger_fields]) or \
False
return fields_has_value
# ########## FIELDS DEFINITION ############
badge_to_print = fields.Boolean(
"Badge To Print",
default=_get_default_badge_to_print)
updated_badges_info = fields.Boolean(
'Updated Badges Information',
compute="_computed_updated_badges_info",
store=True)
# ######### COMPUTE FUNCTIONS ############
@api.depends('badge_to_print', 'is_member', 'is_associated_people')
def _computed_updated_badges_info(self):
'''
@Function to compute the value of field updated_badges_info
'''
for record in self:
if record.badge_to_print and \
(record.is_member or record.is_associated_people):
record.updated_badges_info = True
else:
record.updated_badges_info = False
# ###### RECORD OPERATION FUNCTIONS #########
@api.multi
def untick_badges_to_print(self):
for record in self:
record.badge_to_print = False
@api.multi
def write(self, vals):
res = False
fields_trigger_badge_reprint = \
self.env['res.partner']._get_field_names_trigger_badge_reprint()
for partner in self:
partner_vals = vals.copy()
for field_name in fields_trigger_badge_reprint:
if field_name in partner_vals and \
partner_vals.get(field_name) != partner[field_name]:
partner_vals['badge_to_print'] = True
break
res = super(ResPartner, partner).write(partner_vals)
return res
# ######## SUPPORTING FUNCTIONS ##########
@api.model
def _get_field_names_trigger_badge_reprint(self):
'''
@Function to get a list of fields in Partner object which triggers
badge to print
'''
field_str = self.env['ir.config_parameter'].sudo().get_param(
'reprint_change_field_ids', '[]')
field_ids = safe_eval(field_str)
fields_recs = self.env['ir.model.fields'].sudo().browse(field_ids)
return [field_item.name for field_item in fields_recs]