Force call of on_write after action
Use a better reload behavior to group calls
This commit is contained in:
1 parent
fa179abf8e
commit
a61550e1fd
6 files changed
+17
-9
No files matched your search
@@ -109,17 +109,23 @@ class ModelRecordGroup(SignalEvent):
|
||||
saved = model.save()
|
||||
self.writen(saved)
|
||||
|
||||
def writen(self, edited_id):
|
||||
ids = self.on_write_ids([edited_id])
|
||||
def writen(self, ids):
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
ids = self.on_write_ids(ids)
|
||||
if not ids:
|
||||
return
|
||||
self.reload(ids)
|
||||
return ids
|
||||
|
||||
def reload(self, ids):
|
||||
models = []
|
||||
for obj_id in ids:
|
||||
for model in self.models:
|
||||
if model.id == obj_id:
|
||||
model.reload()
|
||||
if model.id == obj_id and not model.modified:
|
||||
models.append(model)
|
||||
for model in models:
|
||||
model._loaded = False
|
||||
|
||||
def on_write_ids(self, ids):
|
||||
if not self.on_write:
|
||||
|
||||
@@ -452,9 +452,11 @@ class Screen(SignalEvent):
|
||||
res = True
|
||||
return res
|
||||
|
||||
def reload(self):
|
||||
def reload(self, writen=False):
|
||||
ids = self.sel_ids_get()
|
||||
self.models.reload(ids)
|
||||
if writen:
|
||||
self.models.writen(ids)
|
||||
if self.parent:
|
||||
self.parent.reload()
|
||||
self.display()
|
||||
|
||||
@@ -182,7 +182,7 @@ class ViewForm(ParserView):
|
||||
}
|
||||
value = Action._exec_action(act, self.window, data, {})
|
||||
if atype in ('print', 'action'):
|
||||
self.screen.reload()
|
||||
self.screen.reload(writen=True)
|
||||
return value
|
||||
|
||||
def __getitem__(self, name):
|
||||
|
||||
@@ -82,7 +82,7 @@ class Button(object):
|
||||
}, self.form.window, context=ctx)
|
||||
else:
|
||||
raise Exception('Unallowed button type')
|
||||
self.form.screen.reload()
|
||||
self.form.screen.reload(writen=True)
|
||||
else:
|
||||
if self.form.screen.form:
|
||||
self.form.screen.form.message_info(
|
||||
|
||||
@@ -277,7 +277,7 @@ class ViewList(ParserView):
|
||||
'ids': obj_ids,
|
||||
}
|
||||
value = Action._exec_action(act, self.window, data, {})
|
||||
self.screen.reload()
|
||||
self.screen.reload(writen=True)
|
||||
return value
|
||||
|
||||
|
||||
|
||||
@@ -866,7 +866,7 @@ class Button(object):
|
||||
}, self.window, context=ctx)
|
||||
else:
|
||||
raise Exception('Unallowed button type')
|
||||
self.screen.reload()
|
||||
self.screen.reload(writen=True)
|
||||
else:
|
||||
if self.screen.form:
|
||||
self.screen.form.message_info(
|
||||
|
||||
Reference in new issue
Block a user