Merge lp:~therp-nl/therp-backports/server6.1-lp915975-related_x2m_writes_target_model_with_source_model_id into lp:therp-backports/server-6.1

Proposed by Stefan Rijnhart (Opener)
Status: Merged
Merged at revision: 4292
Proposed branch: lp:~therp-nl/therp-backports/server6.1-lp915975-related_x2m_writes_target_model_with_source_model_id
Merge into: lp:therp-backports/server-6.1
Diff against target: 33 lines (+5/-14)
1 file modified
openerp/osv/fields.py (+5/-14)
To merge this branch: bzr merge lp:~therp-nl/therp-backports/server6.1-lp915975-related_x2m_writes_target_model_with_source_model_id
Reviewer Review Type Date Requested Status
Therp Pending
Review via email: mp+130675@code.launchpad.net

Description of the change

Hi,

the related field's fnct_write attempts at writing the target model with the source model id if the target model's field value is a relational field and is currently empty.

As far as I could see the logic in this method was overly complicated and could not be fixed easily. In this branch I tried to simplify the code. This version at least fixes the issue.

Cheers,
Stefan.

To post a comment you must log in.
4292. By Stefan Rijnhart (Opener)

[IMP] Removed void assignment

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openerp/osv/fields.py'
--- openerp/osv/fields.py 2012-06-19 15:16:51 +0000
+++ openerp/osv/fields.py 2012-10-20 16:47:22 +0000
@@ -1179,25 +1179,16 @@
1179 ids=[ids]1179 ids=[ids]
1180 objlst = obj.browse(cr, uid, ids)1180 objlst = obj.browse(cr, uid, ids)
1181 for data in objlst:1181 for data in objlst:
1182 t_id = data.id
1183 t_data = data1182 t_data = data
1184 for i in range(len(self.arg)):1183 for i in range(len(self.arg) - 1):
1185 if not t_data: break
1186 field_detail = self._relations[i]
1187 if not t_data[self.arg[i]]:1184 if not t_data[self.arg[i]]:
1188 if self._type not in ('one2many', 'many2many'):1185 break
1189 t_id = t_data['id']1186 if self._relations[i]['type'] in ('one2many', 'many2many'):
1190 t_data = False1187 t_data = t_data[self.arg[i]][0]
1191 elif field_detail['type'] in ('one2many', 'many2many'):
1192 if self._type != "many2one":
1193 t_id = t_data.id
1194 t_data = t_data[self.arg[i]][0]
1195 else:
1196 t_data = False
1197 else:1188 else:
1198 t_id = t_data['id']
1199 t_data = t_data[self.arg[i]]1189 t_data = t_data[self.arg[i]]
1200 else:1190 else:
1191 t_id = t_data.id
1201 model = obj.pool.get(self._relations[-1]['object'])1192 model = obj.pool.get(self._relations[-1]['object'])
1202 model.write(cr, uid, [t_id], {args[-1]: values}, context=context)1193 model.write(cr, uid, [t_id], {args[-1]: values}, context=context)
12031194

Subscribers

People subscribed via source and target branches

to all changes: