From dc8e4a6ea096068f4aa5bb9ce36cd36f97ff16ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 11 Mar 2010 16:48:37 +0100 Subject: [PATCH] New interface for Function/Property fields --- address.py | 7 +++-- category.py | 2 +- configuration.py | 11 ++++---- contact_mechanism.py | 66 ++++++++++++++++++++++---------------------- party.py | 29 ++++++++----------- 5 files changed, 55 insertions(+), 60 deletions(-) diff --git a/address.py b/address.py index f13b9fabbb..bd64db0aff 100644 --- a/address.py +++ b/address.py @@ -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 = {} diff --git a/category.py b/category.py index efc1aa23c2..5cdfbb9989 100644 --- a/category.py +++ b/category.py @@ -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 = {} diff --git a/configuration.py b/configuration.py index 147b8c2786..261af2d467 100644 --- a/configuration.py +++ b/configuration.py @@ -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() diff --git a/contact_mechanism.py b/contact_mechanism.py index c4fb319c96..1367b226a4 100644 --- a/contact_mechanism.py +++ b/contact_mechanism.py @@ -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) diff --git a/party.py b/party.py index 87bfaf9de7..c9dc96750c 100644 --- a/party.py +++ b/party.py @@ -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