From ef5907f8be448f8d335909d445778f53185a8177 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 4 Feb 2011 16:58:51 +0530 Subject: [PATCH] [IMP] improve onchange method. merge 3 method in 1 method. old method keep in comment. bzr revid: ysa@tinyerp.com-20110204112851-q10tg2fgxpghbuof --- addons/email/email_message.py | 1 - addons/email_template/email_template.py | 159 +++++++++++------- addons/email_template/email_template_view.xml | 6 +- 3 files changed, 101 insertions(+), 65 deletions(-) diff --git a/addons/email/email_message.py b/addons/email/email_message.py index ee69bc1e9fd..960c08d1b65 100644 --- a/addons/email/email_message.py +++ b/addons/email/email_message.py @@ -235,7 +235,6 @@ class email_message(osv.osv): netsvc.LOG_ERROR, _("Error sending mail: %s") % e) - def email_send(cr, uid, email_from, email_to, subject, body, model=False, email_cc=None, email_bcc=None, reply_to=False, attach=None, openobject_id=False, debug=False, subtype='plain', x_headers=None, priority='3'): attachment_obj = self.pool.get('ir.attachment') diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 8935d73c615..8d8b36fff7a 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -302,68 +302,105 @@ This is useful for CRM leads for example"), expression += " or '''%s'''" % null_value expression += "}" return expression +# +# def onchange_model_object_field(self, cr, uid, ids, model_object_field, context=None): +# if not model_object_field: +# return {} +# result = {} +# field_obj = self.pool.get('ir.model.fields').browse(cr, uid, model_object_field, context) +# #Check if field is relational +# if field_obj.ttype in ['many2one', 'one2many', 'many2many']: +# res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) +# if res_ids: +# result['sub_object'] = res_ids[0] +# result['copyvalue'] = self.build_expression(False, False, False) +# result['sub_model_object_field'] = False +# result['null_value'] = False +# else: +# #Its a simple field... just compute placeholder +# result['sub_object'] = False +# result['copyvalue'] = self.build_expression(field_obj.name, False, False) +# result['sub_model_object_field'] = False +# result['null_value'] = False +# return {'value':result} +# +# def onchange_sub_model_object_field(self, cr, uid, ids, model_object_field, sub_model_object_field, context=None): +# if not model_object_field or not sub_model_object_field: +# return {} +# result = {} +# field_obj = self.pool.get('ir.model.fields').browse(cr, uid, model_object_field, context) +# if field_obj.ttype in ['many2one', 'one2many', 'many2many']: +# res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) +# sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) +# if res_ids: +# result['sub_object'] = res_ids[0] +# result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, False) +# result['sub_model_object_field'] = sub_model_object_field +# result['null_value'] = False +# else: +# #Its a simple field... just compute placeholder +# result['sub_object'] = False +# result['copyvalue'] = self.build_expression(field_obj.name, False, False) +# result['sub_model_object_field'] = False +# result['null_value'] = False +# return {'value':result} +# +# +# def onchange_null_value(self, cr, uid, ids, model_object_field, sub_model_object_field, null_value, template_language, context=None): +# if not model_object_field and not null_value: +# return {} +# result = {} +# field_obj = self.pool.get('ir.model.fields').browse(cr, uid, model_object_field, context) +# if field_obj.ttype in ['many2one', 'one2many', 'many2many']: +# res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) +# sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) +# if res_ids: +# result['sub_object'] = res_ids[0] +# result['copyvalue'] = self.build_expression(field_obj.name, +# sub_field_obj.name, +# null_value, +# template_language +# ) +# result['sub_model_object_field'] = sub_model_object_field +# result['null_value'] = null_value +# else: +# #Its a simple field... just compute placeholder +# result['sub_object'] = False +# result['copyvalue'] = self.build_expression(field_obj.name, +# False, +# null_value, +# template_language +# ) +# result['sub_model_object_field'] = False +# result['null_value'] = null_value +# return {'value':result} - def onchange_model_object_field(self, cr, uid, ids, model_object_field, context=None): - if not model_object_field: - return {} - result = {} - field_obj = self.pool.get('ir.model.fields').browse(cr, uid, model_object_field, context) - #Check if field is relational - if field_obj.ttype in ['many2one', 'one2many', 'many2many']: - res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) - if res_ids: - result['sub_object'] = res_ids[0] - result['copyvalue'] = self.build_expression(False, False, False) - result['sub_model_object_field'] = False - result['null_value'] = False - else: - #Its a simple field... just compute placeholder - result['sub_object'] = False - result['copyvalue'] = self.build_expression(field_obj.name, False, False) - result['sub_model_object_field'] = False - result['null_value'] = False - return {'value':result} - - def onchange_sub_model_object_field(self, cr, uid, ids, model_object_field, sub_model_object_field, context=None): - if not model_object_field or not sub_model_object_field: - return {} - result = {} - field_obj = self.pool.get('ir.model.fields').browse(cr, uid, model_object_field, context) - if field_obj.ttype in ['many2one', 'one2many', 'many2many']: - res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) - sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) - if res_ids: - result['sub_object'] = res_ids[0] - result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, False) - result['sub_model_object_field'] = sub_model_object_field - result['null_value'] = False - else: - #Its a simple field... just compute placeholder - result['sub_object'] = False - result['copyvalue'] = self.build_expression(field_obj.name, False, False) - result['sub_model_object_field'] = False - result['null_value'] = False - return {'value':result} - - def onchange_null_value(self, cr, uid, ids, model_object_field, sub_model_object_field, null_value, context=None): - if not model_object_field and not null_value: - return {} - result = {} - field_obj = self.pool.get('ir.model.fields').browse(cr, uid, model_object_field, context) - if field_obj.ttype in ['many2one', 'one2many', 'many2many']: - res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) - sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) - if res_ids: - result['sub_object'] = res_ids[0] - result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, null_value) - result['sub_model_object_field'] = sub_model_object_field - result['null_value'] = null_value - else: - #Its a simple field... just compute placeholder - result['sub_object'] = False - result['copyvalue'] = self.build_expression(field_obj.name, False, null_value) - result['sub_model_object_field'] = False - result['null_value'] = null_value + def onchange_sub_model_object_value_field(self, cr, uid, ids, model_object_field, sub_model_object_field=False, null_value=None, context=None): + result = { + 'sub_object': False, + 'copyvalue': False, + 'sub_model_object_field': False, + 'null_value': False + } + if model_object_field: + field_obj = self.pool.get('ir.model.fields').browse(cr, uid, model_object_field, context) + if field_obj.ttype in ['many2one', 'one2many', 'many2many']: + res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) + sub_field_value = False + if sub_model_object_field: + sub_field_value = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) + if res_ids: + result.update({ + 'sub_object': res_ids[0], + 'copyvalue': self.build_expression(field_obj.name, sub_field_value and sub_field_value.name or False, null_value or False), + 'sub_model_object_field': sub_model_object_field or False, + 'null_value': null_value or False + }) + else: + result.update({ + 'copyvalue': self.build_expression(field_obj.name, False, null_value or False), + 'null_value': null_value or False + }) return {'value':result} def _add_attachment(self, cursor, user, mailbox_id, name, data, filename, context=None): diff --git a/addons/email_template/email_template_view.xml b/addons/email_template/email_template_view.xml index c9286982683..ea3e82c724a 100644 --- a/addons/email_template/email_template_view.xml +++ b/addons/email_template/email_template_view.xml @@ -47,16 +47,16 @@ + on_change="onchange_sub_model_object_value_field(model_object_field,sub_model_object_field)" /> + on_change="onchange_sub_model_object_value_field(model_object_field,sub_model_object_field,null_value)" />