New interface for Function/Property fields
This commit is contained in:
+4
-3
@@ -31,7 +31,8 @@ class Address(ModelSQL, ModelView):
|
||||
states=STATES)
|
||||
active = fields.Boolean('Active')
|
||||
sequence = fields.Integer("Sequence")
|
||||
full_address = fields.Function('get_full_address', type='text')
|
||||
full_address = fields.Function(fields.Text('Full Address'),
|
||||
'get_full_address')
|
||||
|
||||
def __init__(self):
|
||||
super(Address, self).__init__()
|
||||
@@ -44,7 +45,7 @@ class Address(ModelSQL, ModelView):
|
||||
def default_active(self, cursor, user, context=None):
|
||||
return True
|
||||
|
||||
def get_full_address(self, cursor, user, ids, name, arg, context=None):
|
||||
def get_full_address(self, cursor, user, ids, name, context=None):
|
||||
if not ids:
|
||||
return {}
|
||||
res = {}
|
||||
@@ -80,7 +81,7 @@ class Address(ModelSQL, ModelView):
|
||||
res[address.id] += address.country.name
|
||||
return res
|
||||
|
||||
def get_rec_name(self, cursor, user, ids, name, arg, context=None):
|
||||
def get_rec_name(self, cursor, user, ids, name, context=None):
|
||||
if not ids:
|
||||
return {}
|
||||
res = {}
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ class Category(ModelSQL, ModelView):
|
||||
return False
|
||||
return True
|
||||
|
||||
def get_rec_name(self, cursor, user, ids, name, arg, context=None):
|
||||
def get_rec_name(self, cursor, user, ids, name, context=None):
|
||||
if not ids:
|
||||
return {}
|
||||
res = {}
|
||||
|
||||
+5
-6
@@ -7,11 +7,10 @@ from trytond.pyson import Eval
|
||||
class Configuration(ModelSingleton, ModelSQL, ModelView):
|
||||
_name = 'party.configuration'
|
||||
|
||||
party_sequence = fields.Property(type='many2one',
|
||||
relation='ir.sequence', string='Party Reference Sequence',
|
||||
domain=[
|
||||
('company', 'in', [Eval('company'), False]),
|
||||
('code', '=', 'party.party'),
|
||||
], required=True)
|
||||
party_sequence = fields.Property(fields.Many2One('ir.sequence',
|
||||
'Party Reference Sequence', domain=[
|
||||
('company', 'in', [Eval('company'), False]),
|
||||
('code', '=', 'party.party'),
|
||||
], required=True))
|
||||
|
||||
Configuration()
|
||||
|
||||
+33
-33
@@ -35,36 +35,36 @@ class ContactMechanism(ModelSQL, ModelView):
|
||||
ondelete='CASCADE', states=STATES, select=1)
|
||||
active = fields.Boolean('Active', select=1)
|
||||
sequence = fields.Integer('Sequence')
|
||||
email = fields.Function('get_value', fnct_inv='set_value', type='char',
|
||||
string="E-Mail", states={
|
||||
'invisible': Not(Equal(Eval('type'), 'email')),
|
||||
'required': Equal(Eval('type'), 'email'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['email'], depends=['value', 'type', 'active'])
|
||||
website = fields.Function('get_value', fnct_inv='set_value', type='char',
|
||||
string="Website", states={
|
||||
'invisible': Not(Equal(Eval('type'), 'website')),
|
||||
'required': Equal(Eval('type'), 'website'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['website'], depends=['value', 'type', 'active'])
|
||||
skype = fields.Function('get_value', fnct_inv='set_value', type='char',
|
||||
string="Skype", states={
|
||||
'invisible': Not(Equal(Eval('type'), 'skype')),
|
||||
'required': Equal(Eval('type'), 'skype'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['skype'], depends=['value', 'type', 'active'])
|
||||
sip = fields.Function('get_value', fnct_inv='set_value', type='char',
|
||||
string="SIP", states={
|
||||
'invisible': Not(Equal(Eval('type'), 'sip')),
|
||||
'required': Equal(Eval('type'), 'sip'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['sip'], depends=['value', 'type', 'active'])
|
||||
other_value = fields.Function('get_value', fnct_inv='set_value',
|
||||
type='char', string='Value', states={
|
||||
'invisible': In(Eval('type'), ['email', 'website', 'skype', 'sip']),
|
||||
'required': Not(In(Eval('type'), ['email', 'website'])),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['other_value'], depends=['value', 'type', 'active'])
|
||||
email = fields.Function(fields.Char('E-Mail', states={
|
||||
'invisible': Not(Equal(Eval('type'), 'email')),
|
||||
'required': Equal(Eval('type'), 'email'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['email'], depends=['value', 'type', 'active']),
|
||||
'get_value', setter='set_value')
|
||||
website = fields.Function(fields.Char('Website', states={
|
||||
'invisible': Not(Equal(Eval('type'), 'website')),
|
||||
'required': Equal(Eval('type'), 'website'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['website'], depends=['value', 'type', 'active']),
|
||||
'get_value', setter='set_value')
|
||||
skype = fields.Function(fields.Char('Skype',states={
|
||||
'invisible': Not(Equal(Eval('type'), 'skype')),
|
||||
'required': Equal(Eval('type'), 'skype'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['skype'], depends=['value', 'type', 'active']),
|
||||
'get_value', setter='set_value')
|
||||
sip = fields.Function(fields.Char('SIP', states={
|
||||
'invisible': Not(Equal(Eval('type'), 'sip')),
|
||||
'required': Equal(Eval('type'), 'sip'),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['sip'], depends=['value', 'type', 'active']),
|
||||
'get_value', setter='set_value')
|
||||
other_value = fields.Function(fields.Char('Value', states={
|
||||
'invisible': In(Eval('type'), ['email', 'website', 'skype', 'sip']),
|
||||
'required': Not(In(Eval('type'), ['email', 'website'])),
|
||||
'readonly': Not(Bool(Eval('active'))),
|
||||
}, on_change=['other_value'], depends=['value', 'type', 'active']),
|
||||
'get_value', setter='set_value')
|
||||
|
||||
def __init__(self):
|
||||
super(ContactMechanism, self).__init__()
|
||||
@@ -81,7 +81,7 @@ class ContactMechanism(ModelSQL, ModelView):
|
||||
def default_active(self, cursor, user, context=None):
|
||||
return True
|
||||
|
||||
def get_value(self, cursor, user, ids, names, arg, context=None):
|
||||
def get_value(self, cursor, user, ids, names, context=None):
|
||||
res = {}
|
||||
for name in names:
|
||||
res[name] = {}
|
||||
@@ -90,8 +90,8 @@ class ContactMechanism(ModelSQL, ModelView):
|
||||
res[name][mechanism.id] = mechanism.value
|
||||
return res
|
||||
|
||||
def set_value(self, cursor, user, obj_id, name, value, arg, context=None):
|
||||
self.write(cursor, user, obj_id, {
|
||||
def set_value(self, cursor, user, ids, name, value, context=None):
|
||||
self.write(cursor, user, ids, {
|
||||
'value': value,
|
||||
}, context=context)
|
||||
|
||||
|
||||
@@ -38,8 +38,8 @@ class Party(ModelSQL, ModelView):
|
||||
vat_country = fields.Selection(VAT_COUNTRIES, 'VAT Country', states=STATES,
|
||||
help="Setting VAT country will enable validation of the VAT number.",
|
||||
translate=False)
|
||||
vat_code = fields.Function('get_vat_code', type='char', string="VAT Code",
|
||||
fnct_search='search_vat_code')
|
||||
vat_code = fields.Function(fields.Char('VAT Code'), 'get_vat_code',
|
||||
searcher='search_vat_code')
|
||||
addresses = fields.One2Many('party.address', 'party',
|
||||
'Addresses', states=STATES)
|
||||
contact_mechanisms = fields.One2Many('party.contact_mechanism', 'party',
|
||||
@@ -47,17 +47,12 @@ class Party(ModelSQL, ModelView):
|
||||
categories = fields.Many2Many('party.party-party.category',
|
||||
'party', 'category', 'Categories', states=STATES)
|
||||
active = fields.Boolean('Active', select=1)
|
||||
full_name = fields.Function('get_full_name', type='char')
|
||||
phone = fields.Function('get_mechanism', arg='phone', type='char',
|
||||
string='Phone')
|
||||
mobile = fields.Function('get_mechanism', arg='mobile', type='char',
|
||||
string='Mobile')
|
||||
fax = fields.Function('get_mechanism', arg='fax', type='char',
|
||||
string='Fax')
|
||||
email = fields.Function('get_mechanism', arg='email', type='char',
|
||||
string='E-Mail')
|
||||
website = fields.Function('get_mechanism', arg='website', type='char',
|
||||
string='Website')
|
||||
full_name = fields.Function(fields.Char('Full Name'), 'get_full_name')
|
||||
phone = fields.Function(fields.Char('Phone'), 'get_mechanism')
|
||||
mobile = fields.Function(fields.Char('Mobile'), 'get_mechanism')
|
||||
fax = fields.Function(fields.Char('Fax'), 'get_mechanism')
|
||||
email = fields.Function(fields.Char('E-Mail'), 'get_mechanism')
|
||||
website = fields.Function(fields.Char('Website'), 'get_mechanism')
|
||||
|
||||
def __init__(self):
|
||||
super(Party, self).__init__()
|
||||
@@ -81,7 +76,7 @@ class Party(ModelSQL, ModelView):
|
||||
context = {}
|
||||
return context.get('categories', [])
|
||||
|
||||
def get_vat_code(self, cursor, user, ids, name, arg, context=None):
|
||||
def get_vat_code(self, cursor, user, ids, name, context=None):
|
||||
if not ids:
|
||||
return []
|
||||
res = {}
|
||||
@@ -105,7 +100,7 @@ class Party(ModelSQL, ModelView):
|
||||
i += 1
|
||||
return args2
|
||||
|
||||
def get_full_name(self, cursor, user, ids, name, arg, context=None):
|
||||
def get_full_name(self, cursor, user, ids, name, context=None):
|
||||
if not ids:
|
||||
return []
|
||||
res = {}
|
||||
@@ -113,14 +108,14 @@ class Party(ModelSQL, ModelView):
|
||||
res[party.id] = party.name
|
||||
return res
|
||||
|
||||
def get_mechanism(self, cursor, user, ids, name, arg, context=None):
|
||||
def get_mechanism(self, cursor, user, ids, name, context=None):
|
||||
if not ids:
|
||||
return []
|
||||
res = {}
|
||||
for party in self.browse(cursor, user, ids, context=context):
|
||||
res[party.id] = ''
|
||||
for mechanism in party.contact_mechanisms:
|
||||
if mechanism.type == arg:
|
||||
if mechanism.type == name:
|
||||
res[party.id] = mechanism.value
|
||||
break
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user