Some tree states fixes

- Direct click on save should also store the tree states
- The timestamp of tree states should be ignored for form view because it is
  only for internal usage
- Store in tree states the index instead of id for new records

issue4130
issue4131
review14431002
This commit is contained in:
Cédric Krier committed 2014-08-29 16:27:59 +02:00
1 parent 944834994a
commit 09fbe1c1d0
2 files changed
+17 -4

No files matched your search

+7 -2
View File
@@ -346,6 +346,9 @@ class Form(SignalEvent, TabContent):
'green')
def sig_save(self, widget=None):
if widget:
# Called from button so we must save the tree state
self.screen.save_tree_state()
if not common.MODELACCESS[self.model]['write']:
return
if self.screen.save_current():
@@ -370,11 +373,13 @@ class Form(SignalEvent, TabContent):
self.activate_save()
def sig_reload(self, test_modified=True):
if test_modified and not self.modified_save():
if test_modified:
if not self.modified_save():
return False
else:
self.screen.save_tree_state(store=False)
self.screen.cancel_current()
set_cursor = False
self.screen.save_tree_state(store=False)
record_id = (self.screen.current_record.id
if self.screen.current_record else None)
if self.screen.current_view.view_type != 'form':
+10 -2
View File
@@ -615,7 +615,8 @@ class Screen(SignalEvent):
state = self.tree_states[parent][view.children_field]
if state:
state_timestamp, expanded_nodes, selected_nodes = state
if timestamp != state_timestamp:
if (timestamp != state_timestamp
and view.view_type != 'form'):
state = None
if state is None and CONFIG['client.save_tree_state']:
json_domain = self.get_tree_domain(parent)
@@ -639,6 +640,9 @@ class Screen(SignalEvent):
record = None
for node in selected_nodes[0]:
new_record = self.group.get(node)
if node < 0 and -node < len(self.group):
# Negative id is the index of the new record
new_record = self.group[-node]
if not new_record:
break
else:
@@ -662,8 +666,12 @@ class Screen(SignalEvent):
if hasattr(widget, 'screen'):
widget.screen.save_tree_state(store)
if len(self.views) == 1 and self.current_record:
path = self.current_record.id
if path < 0:
path = -self.current_record.group.index(
self.current_record)
self.tree_states[parent][view.children_field] = (
timestamp, [], [[self.current_record.id]])
timestamp, [], [[path]])
elif view.view_type == 'tree':
paths = view.get_expanded_paths()
selected_paths = view.get_selected_paths()