changeset 16db4360489e in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=16db4360489e
description:
Make get_preferences synchronous
We must be sure that the preferences have been set before triggering
other
actions (like opening URL).
issue8011
review281141002
diffstat:
tryton/common/common.py | 9 ++++-
tryton/gui/main.py | 71 ++++++++++++++++++++++--------------------------
2 files changed, 40 insertions(+), 40 deletions(-)
diffs (101 lines):
diff -r 2d221d67b7a9 -r 16db4360489e tryton/common/common.py
--- a/tryton/common/common.py Tue Apr 02 17:49:10 2019 +0200
+++ b/tryton/common/common.py Tue Apr 02 17:53:05 2019 +0200
@@ -1076,8 +1076,13 @@
if callback:
callback()
# Use RPCProgress to not send rpc.CONTEXT
- RPCProgress('execute', ('model', 'res.user', 'get_preferences', True, {})
- ).run(True, update)
+ context = RPCProgress(
+ 'execute',
+ ('model', 'res.user', 'get_preferences', True, {})).run(
+ True, update if callback else None)
+ if not callback:
+ rpc.context_reset()
+ rpc.CONTEXT.update(context)
class Tooltips(object):
diff -r 2d221d67b7a9 -r 16db4360489e tryton/gui/main.py
--- a/tryton/gui/main.py Tue Apr 02 17:49:10 2019 +0200
+++ b/tryton/gui/main.py Tue Apr 02 17:53:05 2019 +0200
@@ -506,45 +506,40 @@
self.notebook.set_current_page(page - 1)
def get_preferences(self):
- def _set_preferences(prefs):
- try:
- prefs = prefs()
- except RPCException:
- prefs = {}
- threads = []
- for target in (
- common.IconFactory.load_icons,
- common.MODELACCESS.load_models,
- common.MODELHISTORY.load_history,
- common.VIEW_SEARCH.load_searches,
- ):
- t = threading.Thread(target=target)
- threads.append(t)
- t.start()
- for t in threads:
- t.join()
- if prefs and 'language_direction' in prefs:
- translate.set_language_direction(prefs['language_direction'])
- CONFIG['client.language_direction'] = \
- prefs['language_direction']
- self.sig_win_menu(prefs=prefs)
- for action_id in prefs.get('actions', []):
- Action.execute(action_id, {})
- self.set_title(prefs.get('status_bar', ''))
- if prefs and 'language' in prefs:
- translate.setlang(prefs['language'], prefs.get('locale'))
- if CONFIG['client.lang'] != prefs['language']:
- self.favorite_unset()
- CONFIG['client.lang'] = prefs['language']
- # Set placeholder after language is set to get correct translation
- self.global_search_entry.set_placeholder_text(_("Action"))
- CONFIG.save()
+ RPCContextReload()
+ try:
+ prefs = RPCExecute('model', 'res.user', 'get_preferences', False)
+ except RPCException:
+ prefs = {}
- def _get_preferences():
- RPCExecute('model', 'res.user', 'get_preferences', False,
- callback=_set_preferences)
-
- RPCContextReload(_get_preferences)
+ threads = []
+ for target in (
+ common.IconFactory.load_icons,
+ common.MODELACCESS.load_models,
+ common.MODELHISTORY.load_history,
+ common.VIEW_SEARCH.load_searches,
+ ):
+ t = threading.Thread(target=target)
+ threads.append(t)
+ t.start()
+ for t in threads:
+ t.join()
+ if prefs and 'language_direction' in prefs:
+ translate.set_language_direction(prefs['language_direction'])
+ CONFIG['client.language_direction'] = \
+ prefs['language_direction']
+ self.sig_win_menu(prefs=prefs)
+ for action_id in prefs.get('actions', []):
+ Action.execute(action_id, {})
+ self.set_title(prefs.get('status_bar', ''))
+ if prefs and 'language' in prefs:
+ translate.setlang(prefs['language'], prefs.get('locale'))
+ if CONFIG['client.lang'] != prefs['language']:
+ self.favorite_unset()
+ CONFIG['client.lang'] = prefs['language']
+ # Set placeholder after language is set to get correct translation
+ self.global_search_entry.set_placeholder_text(_("Action"))
+ CONFIG.save()
def preferences(self):
from tryton.gui.window.preference import Preference