[add] autogenerate signature on user creation form

bzr revid: xmo@tinyerp.com-20091217170905-q194aey4efi9wkpd
This commit is contained in:
Xavier Morel 2009-12-17 18:09:05 +01:00
parent 327387ee6d
commit 714e56e5e7
2 changed files with 36 additions and 5 deletions

View File

@ -210,13 +210,20 @@
<group string="res_config_contents" position="replace">
<separator string="New User" colspan="4"/>
<field name="name"/>
<field name="email"/>
<field name="previous_signature" invisible="1"/>
<field name="name"
on_change="generate_signature(name, email,
previous_signature, signature)"/>
<field name="email"
on_change="generate_signature(name, email,
previous_signature, signature)"/>
<field name="login"/>
<field name="password" password="True"/>
<field name="context_lang"/>
<field name="context_tz"/>
<field colspan="4" name="signature"/>
<field colspan="4" name="signature"
on_change="generate_signature(name, email,
previous_signature, signature)"/>
<separator string="Group" colspan="4"/>
<label align="0.0" colspan="4" string="

View File

@ -259,11 +259,17 @@ class users(osv.osv):
]
users()
SIGNATURE_FORMAT = '''--
%(name)s %(email)s
'''
class config_users(osv.osv_memory):
_name = 'res.config.users'
_inherit = 'res.config'
_columns = users._columns
_columns = dict(
users._columns,
previous_signature=fields.text(),
)
_defaults = users._defaults
def user_data(self, cr, uid, new_id, context=None):
@ -279,7 +285,25 @@ class config_users(osv.osv_memory):
'''
self.pool.get('res.users').create(
cr, uid, self.user_data(cr, uid, new_id, context), context)
def generate_signature(self, cr, uid, ids, name, email,
previous_signature, signature, context=None):
''' If the admin sets the name or email, regenerate the signature
except if the admin has previously edited the signature manually,
in this case stop generating the signature unless the admin completely
empties the custom sig.
'''
if signature != previous_signature:
return {'value': {'previous_signature':''}}
signature = SIGNATURE_FORMAT % {
'name': name or '',
'email': email and ' <'+email+'>' or '',
}
return {'value': {
'previous_signature': signature,
'signature': signature,
}}
def execute(self, cr, uid, ids, context=None):
self.create_user(cr, uid, ids[0], context=context)
return {