diff --git a/tryton/action/main.py b/tryton/action/main.py index 21fa5f62c1..a8d08c26cf 100644 --- a/tryton/action/main.py +++ b/tryton/action/main.py @@ -55,7 +55,7 @@ class Action(object): raise Exception, 'ActionNotFound' action_type = res['type'] act_id2 = rpc.session.rpc_exec_auth('/object', 'execute', action_type, - 'search', [('action', '=', act_id)], ctx)[0] + 'search', [('action', '=', act_id)], 0, None, None, ctx)[0] res = rpc.session.rpc_exec_auth('/object', 'execute', action_type, 'read', act_id2, False, ctx) Action._exec_action(res, datas) diff --git a/tryton/gui/main.py b/tryton/gui/main.py index b9a743ad2e..1c587055ae 100644 --- a/tryton/gui/main.py +++ b/tryton/gui/main.py @@ -559,12 +559,7 @@ class Main(object): self.notebook.set_current_page(page - 1) def sig_user_preferences(self, widget): - actions = rpc.session.rpc_exec_auth('/object', 'execute', - 'ir.values', 'get', 'meta', False, [('res.user',False)], - True, rpc.session.context, True) - - win = Preference('res.user', rpc.session.user, - actions, parent=self.window) + win = Preference(rpc.session.user, self.window) if win.run(): rpc.session.context_reload() self.window.present() diff --git a/tryton/gui/window/preference.py b/tryton/gui/window/preference.py index e83416b6fd..02c2784e29 100644 --- a/tryton/gui/window/preference.py +++ b/tryton/gui/window/preference.py @@ -1,6 +1,7 @@ "Preference" import gettext import gtk +from tryton.rpc import RPCProxy import tryton.rpc as rpc import copy from tryton.gui.window.view_form.screen import Screen @@ -12,7 +13,7 @@ _ = gettext.gettext class Preference(object): "Preference window" - def __init__(self, model, obj_id, preferences, parent): + def __init__(self, user, parent): self.win = gtk.Dialog(_('Tryton - Preferences'), parent, gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, @@ -26,60 +27,41 @@ class Preference(object): self.win.set_transient_for(parent) self.parent = parent self.win.show_all() - self.obj_id = obj_id - self.model = model - fields = {} - arch = '
\n' % (_('Preferences'),) - for pref in preferences: - arch += '' % (pref[1],) - fields[pref[1]] = pref[3] - arch += '' + user = RPCProxy('res.user') - self.screen = Screen(model, view_type=[]) + res = user.get_preferences_fields_view(rpc.session.context) + arch = res['arch'] + fields = res['fields'] + self.screen = Screen('res.user', view_type=[]) self.screen.new(default=False) self.screen.add_view_custom(arch, fields, display=True) - defaults = rpc.session.rpc_exec_auth('/object', 'execute', 'ir.values', - 'get', 'meta', False, [(self.model, self.obj_id)], False, - rpc.session.context, True, True, False) - default2 = {} - self.defaults = {} - for default in defaults: - default2[default[1]] = default[2] - self.defaults[default[1]] = default[0] - self.screen.current_model.set(default2) + preferences = user.get_preferences(False, rpc.session.context) + self.screen.current_model.set(preferences) width, height = self.screen.screen_container.size_get() - self.screen.widget.set_size_request(width, height) - + parent_width, parent_height = parent.get_size() + self.screen.widget.set_size_request(min(parent_width - 20, width + 20), + min(parent_height - 60, height + 25)) + self.screen.widget.show() self.win.vbox.pack_start(self.screen.widget) - - self.win.set_title(_('Preference')+' '+model) - self.win.show_all() + self.win.set_title(_('Preference')) + self.win.show() def run(self): "Run the window" - final = False + res = False while True: - res = self.win.run() - if res == gtk.RESPONSE_OK: + if self.win.run() == gtk.RESPONSE_OK: if self.screen.current_model.validate(): - final = True - val = copy.copy(self.screen.get()) - - for key in val: - if val[key]: - rpc.session.rpc_exec_auth('/object', 'execute', - 'ir.values', 'set', 'meta', key, key, - [(self.model, self.obj_id)], val[key]) - elif self.defaults.get(key, False): - rpc.session.rpc_exec_auth('/common', 'ir_del', - self.defaults[key]) + user = RPCProxy('res.user') + user.set_preferences(val, rpc.session.context) + res = True break else: break self.parent.present() self.win.destroy() - return final + return diff --git a/tryton/gui/window/view_form/view/form.py b/tryton/gui/window/view_form/view/form.py index 982ee586fb..189b5c9085 100644 --- a/tryton/gui/window/view_form/view/form.py +++ b/tryton/gui/window/view_form/view/form.py @@ -166,7 +166,7 @@ class ViewForm(ParserView): code = lang['code'] val = rpc.session.rpc_exec_auth('/object', 'execute', tool['type'], 'read', - [tool['id']], ['name'], {'lang': code}) + [tool['id']], ['name'], {'language': code}) val = val[0] label = gtk.Label(lang['name']) @@ -201,7 +201,7 @@ class ViewForm(ParserView): rpc.session.rpc_exec_auth('/object', 'execute', tool['type'], 'write', [tool['id']], - {'name': val}, {'lang': code}) + {'name': val}, {'language': code}) window.present() win.destroy() return res diff --git a/tryton/gui/window/view_form/view/form_gtk/calendar.py b/tryton/gui/window/view_form/view/form_gtk/calendar.py index e567a16be4..e43ba1bb39 100644 --- a/tryton/gui/window/view_form/view/form_gtk/calendar.py +++ b/tryton/gui/window/view_form/view/form_gtk/calendar.py @@ -172,10 +172,10 @@ class DateTime(WidgetInterface): locale.D_FMT).replace('%y', '%Y') + ' ' + HM_FORMAT) except: return False - if 'tz' in rpc.session.context and timezone: + if 'timezone' in rpc.session.context and timezone: try: import pytz - lzone = pytz.timezone(rpc.session.context['tz']) + lzone = pytz.timezone(rpc.session.context['timezone']) szone = pytz.timezone(rpc.session.timezone) datetime = DT.datetime(date[0], date[1], date[2], date[3], date[4], date[5], date[6]) @@ -201,10 +201,10 @@ class DateTime(WidgetInterface): self.entry.set_text('') else: date = time.strptime(dt_val, DHM_FORMAT) - if 'tz' in rpc.session.context and timezone: + if 'timezone' in rpc.session.context and timezone: try: import pytz - lzone = pytz.timezone(rpc.session.context['tz']) + lzone = pytz.timezone(rpc.session.context['timezone']) szone = pytz.timezone(rpc.session.timezone) datetime = DT.datetime(date[0], date[1], date[2], date[3], date[4], date[5], date[6]) diff --git a/tryton/gui/window/view_form/view/form_gtk/parser.py b/tryton/gui/window/view_form/view/form_gtk/parser.py index 77532a3752..86d57f4d10 100644 --- a/tryton/gui/window/view_form/view/form_gtk/parser.py +++ b/tryton/gui/window/view_form/view/form_gtk/parser.py @@ -400,7 +400,7 @@ class ParserForm(ParserInterface): langs = rpc.session.rpc_exec_auth('/object', 'execute', 'res.lang', 'read', lang_ids, ['code', 'name']) - code = rpc.session.context.get('lang', 'en_US') + code = rpc.session.context.get('language', 'en_US') #change 'en' to false for context def adapt_context(val): @@ -483,7 +483,7 @@ class ParserForm(ParserInterface): i = 0 for lang in langs: context = copy.copy(rpc.session.context) - context['lang'] = adapt_context(lang['code']) + context['language'] = adapt_context(lang['code']) val = rpc.session.rpc_exec_auth('/object', 'execute', model, 'read', [obj_id], [name], context) val = val[0] @@ -531,7 +531,7 @@ class ParserForm(ParserInterface): if new_val['code'] == code: value_set(widget_entry, new_val['value']) context = copy.copy(rpc.session.context) - context['lang'] = adapt_context(new_val['code']) + context['language'] = adapt_context(new_val['code']) rpc.session.rpc_exec_auth('/object', 'execute', model, 'write', [obj_id], {str(name): new_val['value']}, context) diff --git a/tryton/gui/window/view_form/view/list_gtk/parser.py b/tryton/gui/window/view_form/view/list_gtk/parser.py index 7573f628a1..f6f8c5dfe9 100644 --- a/tryton/gui/window/view_form/view/list_gtk/parser.py +++ b/tryton/gui/window/view_form/view/list_gtk/parser.py @@ -248,10 +248,10 @@ class Datetime(Date): if not value: return '' date = time.strptime(value, self.server_format) - if 'tz' in rpc.session.context: + if 'timezone' in rpc.session.context: try: import pytz - lzone = pytz.timezone(rpc.session.context['tz']) + lzone = pytz.timezone(rpc.session.context['timezone']) szone = pytz.timezone(rpc.session.timezone) datetime = DT.datetime(date[0], date[1], date[2], date[3], date[4], date[5], date[6]) @@ -274,10 +274,10 @@ class Datetime(Date): date = tuple(datetime) except: return False - if 'tz' in rpc.session.context: + if 'timezone' in rpc.session.context: try: import pytz - lzone = pytz.timezone(rpc.session.context['tz']) + lzone = pytz.timezone(rpc.session.context['timezone']) szone = pytz.timezone(rpc.session.timezone) datetime = DT.datetime(date[0], date[1], date[2], date[3], date[4], date[5], date[6]) diff --git a/tryton/gui/window/view_tree/view_tree.py b/tryton/gui/window/view_tree/view_tree.py index 87fa54247e..d2008a3ebe 100644 --- a/tryton/gui/window/view_tree/view_tree.py +++ b/tryton/gui/window/view_tree/view_tree.py @@ -81,10 +81,10 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable): for obj in res_ids: if obj[field]: date = time.strptime(obj[field], DHM_FORMAT) - if 'tz' in rpc.session.context: + if 'timezone' in rpc.session.context: try: import pytz - lzone = pytz.timezone(rpc.session.context['tz']) + lzone = pytz.timezone(rpc.session.context['timezone']) szone = pytz.timezone(rpc.session.timezone) datetime = DT.datetime(date[0], date[1], date[2], date[3], date[4], date[5], diff --git a/tryton/rpc.py b/tryton/rpc.py index 0252926dc8..186323a33f 100644 --- a/tryton/rpc.py +++ b/tryton/rpc.py @@ -333,28 +333,25 @@ class RPCSession(object): def context_reload(self): self.context = {} self.timezone = 'utc' - # self.user - context = self.rpc_exec_auth('/object', 'execute', 'ir.values', 'get', - 'meta', False, [('res.user', self.user or False)], False, {}, - True, True, False) - for ctx in context: - if ctx[2]: - self.context[ctx[1]] = ctx[2] - if ctx[1] == 'lang': - translate.setlang(ctx[2]) - CONFIG['client.lang'] = ctx[2] - ids = self.rpc_exec_auth('/object', 'execute', 'res.lang', - 'search', [('code', '=', ctx[2])]) + user = RPCProxy('res.user') + lang = RPCProxy('res.lang') + context = user.get_preferences(True, {}) + for name in context: + value = context[name] + if value: + self.context[name] = value + if name == 'lang': + translate.setlang(value) + CONFIG['client.lang'] = value + ids = lang.search([('code', '=', value)]) if ids: - lang = self.rpc_exec_auth('/object', 'execute', 'res.lang', - 'read', ids, ['direction']) - if lang and 'direction' in lang[0]: - common.DIRECTION = lang[0]['direction'] - if common.DIRECTION == 'rtl': + lang = lang.read(ids[0], ['direction']) + if lang and 'direction' in lang: + if lang['direction'] == 'rtl': gtk.widget_set_default_direction(gtk.TEXT_DIR_RTL) else: gtk.widget_set_default_direction(gtk.TEXT_DIR_LTR) - elif ctx[1] == 'tz': + elif name == 'timezone': self.timezone = self.rpc_exec_auth('/common', 'timezone_get') try: import pytz