Implemented write method on fields.related

bzr revid: hda@tinyerp.com-20081212130511-gcoovgqnkg0txde7
This commit is contained in:
Husen Daudi 2008-12-12 18:35:11 +05:30
parent 381ad4fe1f
commit 6675a3709c
1 changed files with 26 additions and 3 deletions

View File

@ -654,8 +654,31 @@ class related(function):
i -= 1
return [(self._arg[0], 'in', sarg)]
def _fnct_write(self,obj,cr, uid, ids,values, field_name, args, context=None):
raise 'Not Implemented Yet'
def _fnct_write(self,obj,cr, uid, ids, field_name, values, args, context=None):
if values and field_name:
self._field_get2(cr, uid, obj, context)
self._field_get2(cr, uid, obj, context)
relation = obj._name
res = {}
if type(ids) != type([]):
ids=[ids]
objlst = obj.browse(cr, uid, ids)
for data in objlst:
t_data = data
relation = obj._name
for i in range(len(self.arg)):
field_detail = self._relations[i]
relation = field_detail['object']
if not t_data[self.arg[i]]:
t_data = False
break
if field_detail['type'] in ('one2many', 'many2many'):
t_id=t_data.id
t_data = t_data[self.arg[i]][0]
else:
t_id=t_data['id']
t_data = t_data[self.arg[i]]
return obj.pool.get(field_detail['object']).write(cr,uid,t_id,{args[-1]:values})
def _fnct_read(self, obj, cr, uid, ids, field_name, args, context=None):
self._field_get2(cr, uid, obj, context)
@ -685,7 +708,7 @@ class related(function):
def __init__(self, *arg, **args):
self.arg = arg
self._relations = []
super(related, self).__init__(self._fnct_read, arg, fnct_inv_arg=arg, method=True, fnct_search=self._fnct_search, **args)
super(related, self).__init__(self._fnct_read, arg, self._fnct_write, fnct_inv_arg=arg, method=True, fnct_search=self._fnct_search, **args)
def _field_get2(self, cr, uid, obj, context={}):
if self._relations: