New interface for Function/Property fields

This commit is contained in:
Cédric Krier
2010-03-11 16:48:37 +01:00
parent 74ab2a4968
commit dc8e4a6ea0
5 changed files with 55 additions and 60 deletions
+4 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+12 -17
View File
@@ -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