summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabien Pinckaers <fp@tinyerp.com>2008-06-16 18:27:17 +0000
committerFabien Pinckaers <fp@tinyerp.com>2008-06-16 18:27:17 +0000
commit17db0379902075b0070f9d9ae478faf8bac07d4f (patch)
tree1b5a617796d055a77faf137f946850cba6da7c60
parent326bbb4dce7b4eb656475f66fc9f5ec8e6499bc4 (diff)
Improvements
bzr revid: fp@tinyerp.com-dd48c1c3ca315d8ee6bf962b6af334ade92a0fc7
-rw-r--r--bin/addons/base/base_update.xml42
-rw-r--r--bin/addons/base/ir/ir.xml2
-rw-r--r--bin/addons/base/res/res_user.py35
-rwxr-xr-xbin/report/render/rml2pdf/trml2pdf.py1
-rwxr-xr-xbin/tinyerp-server.py2
-rw-r--r--bin/tools/translate.py12
6 files changed, 40 insertions, 54 deletions
diff --git a/bin/addons/base/base_update.xml b/bin/addons/base/base_update.xml
index 0aada0ba8d7..33bc475e2a1 100644
--- a/bin/addons/base/base_update.xml
+++ b/bin/addons/base/base_update.xml
@@ -26,26 +26,6 @@
<field name="view_type">form</field>
</record>
<menuitem name="Administration/Custom/Interface/Languages" action="action_lang" id="menu_action_lang"/>
-
- <ir_set>
- <field name="key" eval="'meta'"/>
- <field name="key2" eval="'lang'"/>
- <field name="models" eval="['res.users']"/>
- <field name="name">lang</field>
- <field name="value" eval="False"/>
- <field name="meta" eval="{'type':'selection', 'string':'Language', 'selection':[('en_US', 'English')]}"/>
- <field name="replace" eval="True"/>
- </ir_set>
-
- <ir_set>
- <field name="key" eval="'meta'"/>
- <field name="key2" eval="'tz'"/>
- <field name="models" eval="['res.users']"/>
- <field name="name">tz</field>
- <field name="value" eval="False"/>
- <field name="meta" eval="{'type':'selection', 'string':'Timezone', 'selection': [(x, x) for x in pytz.all_timezones] }"/>
- <field name="replace" eval="True"/>
- </ir_set>
<!--
======================
@@ -84,7 +64,7 @@
</form>
</field>
</record>
-
+
<!--
======================
Users
@@ -97,30 +77,16 @@
<field name="priority" eval="10"/>
<field name="arch" type="xml">
<form string="Users">
- <field name="name" colspan="4" select="1"/>
- <field name="login" readonly="1" select="1"/>
<field name="password"/>
<label string="Please note that you will have to logout and relog if you change your password." colspan="4"/>
+ <field name="context_lang"/>
+ <field name="context_tz"/>
<newline/>
<field name="signature" colspan="4"/>
</form>
</field>
</record>
- <record model="ir.ui.view" id="view_users_form_simple">
- <field name="name">res.users.form</field>
- <field name="model">res.users</field>
- <field name="type">form</field>
- <field name="priority" eval="8"/>
- <field name="arch" type="xml">
- <form string="Users">
- <field name="name" readonly="1" colspan="4" select="1"/>
- <field name="login" readonly="1" select="1"/>
- <field name="active" readonly="1" select="1"/>
- <newline/>
- <field name="signature" readonly="1" colspan="4"/>
- </form>
- </field>
- </record>
+
<record model="ir.ui.view" id="view_users_form">
<field name="name">res.users.form</field>
<field name="model">res.users</field>
diff --git a/bin/addons/base/ir/ir.xml b/bin/addons/base/ir/ir.xml
index 89649ecb299..15be0105adf 100644
--- a/bin/addons/base/ir/ir.xml
+++ b/bin/addons/base/ir/ir.xml
@@ -378,7 +378,7 @@
<menuitem name="Administration/Users/Users" action="action_res_users" id="menu_action_res_users"/>
<record model="ir.actions.act_window" id="action_res_users_my">
- <field name="name">Change My Password</field>
+ <field name="name">Change My Preferences</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.users</field>
<field name="view_type">form</field>
diff --git a/bin/addons/base/res/res_user.py b/bin/addons/base/res/res_user.py
index fb4cf7846f5..3e121bbb5bc 100644
--- a/bin/addons/base/res/res_user.py
+++ b/bin/addons/base/res/res_user.py
@@ -29,6 +29,7 @@
from osv import fields,osv
import tools
+import pytz
class groups(osv.osv):
_name = "res.groups"
@@ -82,6 +83,13 @@ class roles(osv.osv):
return False
roles()
+def _lang_get(self, cr, uid, context={}):
+ obj = self.pool.get('res.lang')
+ ids = obj.search(cr, uid, [])
+ res = obj.read(cr, uid, ids, ['code', 'name'], context)
+ res = [(r['code'], r['name']) for r in res]
+ return res
+
class users(osv.osv):
_name = "res.users"
_log_access = False
@@ -98,6 +106,8 @@ class users(osv.osv):
'roles_id': fields.many2many('res.roles', 'res_roles_users_rel', 'uid', 'rid', 'Roles'),
'company_id': fields.many2one('res.company', 'Company'),
'rule_groups': fields.many2many('ir.rule.group', 'user_rule_group_rel', 'user_id', 'rule_group_id', 'Rules', domain="[('global', '<>', True)]"),
+ 'context_lang': fields.selection(_lang_get, 'Language', required=True),
+ 'context_tz': fields.selection([(x, x) for x in pytz.all_timezones], 'Timezone')
}
def read(self,cr, uid, ids, fields=None, context=None, load='_classic_read'):
result = super(users, self).read(cr, uid, ids, fields, context, load)
@@ -113,6 +123,7 @@ class users(osv.osv):
]
_defaults = {
'password' : lambda obj,cr,uid,context={} : '',
+ 'context_lang': lambda *args: 'en_US',
'active' : lambda obj,cr,uid,context={} : True,
}
def company_get(self, cr, uid, uid2):
@@ -120,8 +131,15 @@ class users(osv.osv):
return company_id
company_get = tools.cache()(company_get)
- def write(self, cr, uid, *args, **argv):
- res = super(users, self).write(cr, uid, *args, **argv)
+ def write(self, cr, uid, ids, values, *args, **argv):
+ if (ids == [uid]):
+ ok = True
+ for k in values.keys():
+ if k not in ('password','signature','action_id', 'context_lang', 'context_tz'):
+ ok=False
+ if ok:
+ uid = 1
+ res = super(users, self).write(cr, uid, ids, values, *args, **argv)
self.company_get()
# Restart the cache on the company_get method
self.pool.get('ir.rule').domain_get()
@@ -148,6 +166,19 @@ class users(osv.osv):
login = self.read(cr, uid, [id], ['login'])[0]['login']
default.update({'login': login+' (copy)'})
return super(users, self).copy(cr, uid, id, default, context)
+
+ def context_get(self, cr, uid, context={}):
+ user = self.browse(cr, uid, uid, context)
+ result = {}
+ for k in self._columns.keys():
+ if k.startswith('context_'):
+ result[k[8:]] = getattr(user,k)
+ return result
+
+ def action_get(self, cr, uid, context={}):
+ dataobj = self.pool.get('ir.model.data')
+ data_id = dataobj._get_id(cr, 1, 'base', 'action_res_users_my')
+ return dataobj.browse(cr, uid, data_id, context).res_id
users()
class groups2(osv.osv):
diff --git a/bin/report/render/rml2pdf/trml2pdf.py b/bin/report/render/rml2pdf/trml2pdf.py
index 25ec57ebb12..4b1f3735308 100755
--- a/bin/report/render/rml2pdf/trml2pdf.py
+++ b/bin/report/render/rml2pdf/trml2pdf.py
@@ -337,6 +337,7 @@ class _rml_canvas(object):
else:
import base64
image_data = base64.decodestring(node.firstChild.nodeValue)
+ if not image_data: return False
s = StringIO.StringIO(image_data)
else:
if node.getAttribute('file') in self.images:
diff --git a/bin/tinyerp-server.py b/bin/tinyerp-server.py
index 101de7f12a8..4d590f906d9 100755
--- a/bin/tinyerp-server.py
+++ b/bin/tinyerp-server.py
@@ -139,7 +139,7 @@ except psycopg.OperationalError:
logger.notifyChannel("init", netsvc.LOG_INFO, "could not connect to database '%s'!" % db_name,)
cr = None
if cr:
- cr.execute("SELECT relname FROM pg_class WHERE relkind='r' AND relname='perm'")
+ cr.execute("SELECT relname FROM pg_class WHERE relkind='r' AND relname='ir_ui_menu'")
if len(cr.fetchall())==0:
#if False:
logger.notifyChannel("init", netsvc.LOG_INFO, "init db")
diff --git a/bin/tools/translate.py b/bin/tools/translate.py
index 5de8003faad..cd989ee39dc 100644
--- a/bin/tools/translate.py
+++ b/bin/tools/translate.py
@@ -317,18 +317,6 @@ def trans_load_data(db_name, data, lang, strict=False, lang_name=None):
langs = lang_obj.read(cr, uid, lang_ids)
ls = map(lambda x: (x['code'],x['name']), langs)
- ir.ir_set(cr, uid, 'meta', 'lang', 'lang', [('res.users',False,)],
- False, True, False, meta={
- 'type': 'selection',
- 'string': 'Language',
- 'selection':ls,
- })
-
- ids = pool.get('res.users').search(cr, uid, [])
- for id in ids:
- ir.ir_set(cr, uid, 'meta', 'lang', 'lang', [('res.users',id,)],
- lang, True, False)
-
reader = csv.reader(data)
# read the first line of the file (it contains columns titles)
for row in reader: