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
1=== modified file 'openerp/osv/fields.py'
2--- openerp/osv/fields.py 2012-06-19 15:16:51 +0000
3+++ openerp/osv/fields.py 2012-10-20 16:47:22 +0000
4@@ -1179,25 +1179,16 @@
5 ids=[ids]
6 objlst = obj.browse(cr, uid, ids)
7 for data in objlst:
8- t_id = data.id
9 t_data = data
10- for i in range(len(self.arg)):
11- if not t_data: break
12- field_detail = self._relations[i]
13+ for i in range(len(self.arg) - 1):
14 if not t_data[self.arg[i]]:
15- if self._type not in ('one2many', 'many2many'):
16- t_id = t_data['id']
17- t_data = False
18- elif field_detail['type'] in ('one2many', 'many2many'):
19- if self._type != "many2one":
20- t_id = t_data.id
21- t_data = t_data[self.arg[i]][0]
22- else:
23- t_data = False
24+ break
25+ if self._relations[i]['type'] in ('one2many', 'many2many'):
26+ t_data = t_data[self.arg[i]][0]
27 else:
28- t_id = t_data['id']
29 t_data = t_data[self.arg[i]]
30 else:
31+ t_id = t_data.id
32 model = obj.pool.get(self._relations[-1]['object'])
33 model.write(cr, uid, [t_id], {args[-1]: values}, context=context)
34

Subscribers

People subscribed via source and target branches

to all changes: