From 8612ed6da69f9cb9ac87c72f3ff29c625f25d930 Mon Sep 17 00:00:00 2001 From: "mga@tinyerp.com" <> Date: Tue, 19 Aug 2008 16:53:03 +0530 Subject: [PATCH] * change view for the server action * change the selecte method for the email / sms address bzr revid: mga@tinyerp.com-20080819112303-4xphj3m3mfya9k7l --- bin/addons/base/ir/ir.xml | 55 ++++++++++++++++------- bin/addons/base/ir/ir_actions.py | 89 +++++++++++++++++++++++++++++++------- 2 files changed, 114 insertions(+), 30 deletions(-) mode change 100644 => 100755 bin/addons/base/ir/ir.xml diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml old mode 100644 new mode 100755 index d68c126..8337278 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -1039,23 +1039,34 @@ form
- + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -1080,8 +1091,22 @@ ir.actions.server form + {'key':'myval'} - + + + ir.model.fields.tree + ir.model.fields + tree + + + + + + + + + diff --git a/bin/addons/base/ir/ir_actions.py b/bin/addons/base/ir/ir_actions.py index 159707c..324d853 100755 --- a/bin/addons/base/ir/ir_actions.py +++ b/bin/addons/base/ir/ir_actions.py @@ -255,10 +255,6 @@ class act_url(osv.osv): } act_url() -def _get_fields(self, cr, uid, context={}): - - return [('key','Email Value')] - def model_get(self, cr, uid, context={}): wkf_pool = self.pool.get('workflow') ids = wkf_pool.search(cr, uid, []) @@ -273,7 +269,62 @@ def model_get(self, cr, uid, context={}): res.append((model, name)) return res - + +class ir_model_fields(osv.osv): + _inherit = 'ir.model.fields' + _rec_name = 'complete_name' + _columns = { + 'complete_name': fields.char('Complete Name', required=True, size=64, select=1), + } + + def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=80): + + print name, args, operator, context + + def get_fields(cr, uid, field, rel): + result = [] + mobj = self.pool.get('ir.model') + id = mobj.search(cr, uid, [('model','=',rel)]) + + obj = self.pool.get('ir.model.fields') + ids = obj.search(cr, uid, [('model_id','in',id)]) + records = obj.read(cr, uid, ids) + for record in records: + id = record['id'] + fld = field + '/' + record['name'] + + result.append((id, fld)) + return result + + if not args: + args=[] + if not context: + context={} + return super(ir_model_fields, self).name_search(cr, uid, name, args, operator, context, limit) + + result = [] + obj = self.pool.get('ir.model.fields') + ids = obj.search(cr, uid, args) + records = obj.read(cr, uid, ids) + for record in records: + id = record['id'] + field = record['name'] + + if record['ttype'] == 'many2one': + rel = record['relation'] + res = get_fields(cr, uid, field, record['relation']) + for rs in res: + result.append(rs) + + result.append((id, field)) + + for rs in result: + obj.write(cr, uid, [rs[0]], {'complete_name':rs[1]}) + + #result = super(ir_model_fields, self).name_search(cr, uid, name, [['complete_name','ilike',name]], operator, context, limit) + return result + +ir_model_fields() # # Actions that are run on the server side # @@ -302,7 +353,8 @@ class actions_server(osv.osv): #'trigger_object': fields.char('Trigger Object', size=128), #'trigger_object_id': fields.char('Trigger Object ID', size=128), 'message': fields.text('Message', translate=True), - 'address': fields.selection(_get_fields ,'Email / SMS', size=128), + 'address': fields.many2one('ir.model.fields', 'Email From / SMS'), + #selection(_get_fields ,'Email / SMS', size=128), 'child_ids': fields.one2many('ir.actions.actions', 'parent_id', 'Others Actions'), 'usage': fields.char('Action Usage', size=32), 'type': fields.char('Report Type', size=32, required=True), @@ -322,6 +374,11 @@ class actions_server(osv.osv): """ } +# def on_change_model(self, cr, uid, ids, model_id): +# print '**************** : method called' +# res = {'value' : {'address': [('key1','Email Value One')]} } +# return res + # # Context should contains: # ids : original ids @@ -344,9 +401,14 @@ class actions_server(osv.osv): exec action.code in localdict if 'action' in localdict: return localdict['action'] + if action.state == 'email': user = config['email_from'] subject = action.name + + #TODO : Apply Mail merge in to the Content of the Email + print '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ',context + body = action.message if tools.email_send_attach(user, action.address, subject, body, debug=False) == True: logger.notifyChannel('email', netsvc.LOG_INFO, 'Email successfully send to : %s' % (action.address)) @@ -361,10 +423,12 @@ class actions_server(osv.osv): wf_service.trg_validate(uid, model, int(id), action.trigger_name, cr) if action.state == 'sms': + #TODO: Apply mearge with the field if tools.sms_send(user, password, api_id, text, to) == True: logger.notifyChannel('sms', netsvc.LOG_INFO, 'SMS successfully send to : %s' % (action.address)) else: logger.notifyChannel('sms', netsvc.LOG_ERROR, 'Failed to send SMS to : %s' % (action.address)) + if action.state == 'other': localdict = { 'self': self.pool.get(action.model_id.model), @@ -376,15 +440,10 @@ class actions_server(osv.osv): } for act in action.child_ids: - code = """ - action = { - 'res_model': %s, - 'type': %s, - 'name': %s, - 'usage': %s, - } - """ % (action.model_id.model, act.type, act.name, act.usage) - exec action.code in localdict + code = """action = {'model':'%s','type':'%s', %s}""" % (action.model_id.model, act.type, act.usage) + exec code in localdict + if 'action' in localdict: + return localdict['action'] return False actions_server() -- 1.7.10.4