From 748450b9f9895ac9b9b55873e8d54999b35f6dd6 Mon Sep 17 00:00:00 2001 From: "mga@tinyerp.com" <> Date: Thu, 7 Aug 2008 16:27:47 +0530 Subject: [PATCH] Apply patch which is iven by the Amit for the view - Dashboard bzr revid: mga@tinyerp.com-20080807105747-8f5kp16zd7bxixoz --- bin/addons/base/ir/ir_ui_view.py | 70 ++++++++++++-------------------- 1 file changed, 25 insertions(+), 45 deletions(-) diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index aaad63c6fe5..f015478a568 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -47,32 +47,14 @@ def _check_xml(self, cr, uid, ids, context={}): return False return True -class CustomView(osv.osv): +class view_custom(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), - '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), - 'user_id': fields.many2one('res.users', 'User'), 'ref_id': fields.many2one('ir.ui.view', 'Orignal View'), + 'user_id': fields.many2one('res.users', 'User'), + 'arch': fields.text('View Architecture', required=True), } - _defaults = { - 'arch': lambda *a: '\n\n\t\n', - 'priority': lambda *a: 16 - } - _order = "priority" - _constraints = [ - (_check_xml, 'Invalid XML for View Architecture!', ['arch']) - ] -CustomView() +view_custom() class view(osv.osv): _name = 'ir.ui.view' @@ -100,13 +82,13 @@ class view(osv.osv): def read(self,cr, uid, ids, fields=None, context={}, load='_classic_read'): - if type(ids) != type([]): + if not isinstance(ids, (list, tuple)): ids = [ids] - + result = super(view, self).read(cr, uid, ids, fields, context, load) for rs in result: - if rs.get('model',False) == 'board.board': + if rs.get('model') == 'board.board': 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: @@ -115,28 +97,26 @@ class view(osv.osv): return result 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': - vids = self.pool.get('ir.ui.view.custom').search(cr, uid, [('user_id','=',uid), ('ref_id','=',ids[0])]) - if not vids: - 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 + if not isinstance(ids, (list, tuple)): + ids = [ids] + + exist = self.pool.get('ir.ui.view').browse(cr, uid, ids[0]) + if exist.model == 'board.board' and 'arch' in vals: + vids = self.pool.get('ir.ui.view.custom').search(cr, uid, [('user_id','=',uid), ('ref_id','=',ids[0])]) + vals2 = {'user_id': uid, 'ref_id': ids[0], 'arch': vals.pop('arch')} + + # write fields except arch to the `ir.ui.view` + result = super(view, self).write(cr, uid, vids, vals, context) + + if not vids: + self.pool.get('ir.ui.view.custom').create(cr, uid, vals2) else: - nid = vids - result = self.pool.get('ir.ui.view.custom').write(cr, uid, nid, vals) - - result = super(view, self).write(cr, uid, vids, vals, context) - return result - - result = super(view, self).write(cr, uid, ids, vals, context) - cr.commit() - return result + self.pool.get('ir.ui.view.custom').write(cr, uid, vids, vals2) + + return result + + return super(view, self).write(cr, uid, ids, vals, context) view() class view_sc(osv.osv):