Many2Many edit should use his own screen instance

It must not trigger a grant parent reload.

issue3646
review3191003
This commit is contained in:
Cédric Krier committed 2014-02-15 18:40:44 +01:00
1 parent 25bea1594f
commit df6f7986d3
1 file changed
+19 -7
@@ -186,13 +186,25 @@ class Many2Many(WidgetInterface):
self._sig_edit()
def _sig_edit(self):
if self.screen.current_record:
def callback(result):
if result:
self.screen.current_record.save()
else:
self.screen.current_record.cancel()
WinForm(self.screen, callback)
if not self.screen.current_record:
return
# Create a new screen that is not linked to the parent otherwise on the
# save of the record will trigger the save of the parent
domain = self.field.domain_get(self.record)
add_remove = self.record.expr_eval(self.attrs.get('add_remove'))
if add_remove:
domain = [domain, add_remove]
screen = Screen(self.attrs['relation'], domain=domain,
view_ids=self.attrs.get('view_ids', '').split(','),
mode=['form'], views_preload=self.attrs.get('views', {}))
screen.load([self.screen.current_record.id])
def callback(result):
if result:
screen.current_record.save()
# Force a reload on next display
self.screen.current_record.cancel()
WinForm(screen, callback)
def _readonly_set(self, value):
self._readonly = value