Remove ir.values

- Better user  preference implementation
- Fix context in search actions
- Fix language/timezone in context
This commit is contained in:
Cédric Krier
2008-01-27 17:38:19 +01:00
parent 0c6a2c94b1
commit 1ff29c998f
9 changed files with 53 additions and 79 deletions
+1 -1
View File
@@ -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
View File
@@ -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()
+21 -39
View File
@@ -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
+2 -2
View File
@@ -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])
+2 -2
View File
@@ -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
View File
@@ -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