diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml index 3824ca99022..964ea69b676 100644 --- a/bin/addons/base/ir/ir.xml +++ b/bin/addons/base/ir/ir.xml @@ -134,6 +134,7 @@ + diff --git a/bin/addons/base/ir/ir_actions.py b/bin/addons/base/ir/ir_actions.py index dc403a15210..46386af1383 100644 --- a/bin/addons/base/ir/ir_actions.py +++ b/bin/addons/base/ir/ir_actions.py @@ -331,6 +331,11 @@ class actions_server(osv.osv): logger.notifyChannel('email', netsvc.LOG_INFO, 'Email successfully send to : %s' % (action.address)) else: logger.notifyChannel('email', netsvc.LOG_ERROR, 'Failed to send email to : %s' % (action.address)) + if action.state == 'sms': + 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)) return False actions_server() diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index ee610bcb67b..20bee505cc7 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -47,8 +47,8 @@ def _check_xml(self, cr, uid, ids, context={}): return False return True -class view(osv.osv): - _name = 'ir.ui.view' +class CustomView(osv.osv): + _name = 'ir.ui.view.custom' _columns = { 'name': fields.char('View Name',size=64, required=True), 'model': fields.char('Model', size=64, required=True), @@ -72,6 +72,31 @@ class view(osv.osv): _constraints = [ (_check_xml, 'Invalid XML for View Architecture!', ['arch']) ] +CustomView() + +class view(osv.osv): + _name = 'ir.ui.view' + _columns = { + 'name': fields.char('View Name',size=64, required=True), + 'model': fields.char('Model', size=64, required=True), + 'priority': fields.integer('Priority', required=True), + 'type': fields.selection(( + ('tree','Tree'), + ('form','Form'), + ('graph', 'Graph'), + ('calendar', 'Calendar')), 'View Type', required=True), + 'arch': fields.text('View Architecture', required=True), + 'inherit_id': fields.many2one('ir.ui.view', 'Inherited View'), + 'field_parent': fields.char('Childs Field',size=64), + } + _defaults = { + 'arch': lambda *a: '\n\n\t\n', + 'priority': lambda *a: 16 + } + _order = "priority" + _constraints = [ + (_check_xml, 'Invalid XML for View Architecture!', ['arch']) + ] def read(self,cr, uid, ids, fields=None, context={}, load='_classic_read'): @@ -80,10 +105,10 @@ class view(osv.osv): result = super(view, self).read(cr, uid, ids, fields, context, load) - if context.get('read', False) != 'default': + if context.get('read', False) != 'custom': for rs in result: if rs.get('model',False) == 'board.board': - cr.execute("select id,arch,ref_id from ir_ui_view where user_id=%d and ref_id=%d", (uid, rs['id'])) + cr.execute("select id,arch,ref_id from ir_ui_view_custom where user_id=%d and ref_id=%d", (uid, rs['id'])) oview = cr.dictfetchall() if oview: rs['arch'] = oview[0]['arch'] @@ -93,22 +118,21 @@ class view(osv.osv): def write(self, cr, uid, ids, vals, context={}): exist = self.pool.get('ir.ui.view').browse(cr, uid, ids[0]) if exist.model == 'board.board': - if not exist.ref_id.id: - vids = self.pool.get('ir.ui.view').search(cr, uid, [('user_id','=',uid), ('ref_id','=',ids[0])]) - if not vids: - if context.get('tiny') == 'base': - result = super(view, self).write(cr, uid, ids, vals, context) - return result - else: - default = {} - default['user_id'] = uid - default['ref_id'] = ids[0] - nids = super(view, self).copy(cr, uid, ids[0], default, context=context) - result = super(view, self).write(cr, uid, [nids], vals, {}) - return result - else: - result = super(view, self).write(cr, uid, vids, vals, context) - return result + vids = self.pool.get('ir.ui.view.custom').search(cr, uid, [('user_id','=',uid), ('ref_id','=',ids[0])]) + if not vids: +# if context.get('write') == 'custom': + + old = self.pool.get('ir.ui.view').read(cr, uid, ids)[0] + + del old['id'] + old['user_id'] = uid + old['ref_id'] = ids[0] + nid = self.pool.get('ir.ui.view.custom').create(cr, uid, old) + result = self.pool.get('ir.ui.view.custom').write(cr, uid, [nid], vals) + return result + else: + result = super(view, self).write(cr, uid, vids, vals, context) + return result result = super(view, self).write(cr, uid, ids, vals, context) cr.commit()