Remove ir.values
- Better user preference implementation - Fix context in search actions - Fix language/timezone in context
This commit is contained in:
@@ -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)
|
||||
|
||||
+1
-6
@@ -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()
|
||||
|
||||
@@ -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 = '<?xml version="1.0"?><form string="%s">\n' % (_('Preferences'),)
|
||||
for pref in preferences:
|
||||
arch += '<field name="%s" colspan="4"/>' % (pref[1],)
|
||||
fields[pref[1]] = pref[3]
|
||||
arch += '</form>'
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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],
|
||||
|
||||
+15
-18
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user