This question has been flagged
12 Replies
10821 Views

Hi expert,

I am newbie on openerp/odoo, I would like to  capitalize the first letter of every word entered into a employee name, how to do that?

I am using openerp/odoo version 7

let say if I entered: john doe it would be John Doe

Thanks 

Avatar
Discard
Best Answer

May be useful for v9 and v8 users,

name = fields.Char()

@api.onchange('name')

def caps_name(self):

    if self.name :

        self.name = str(self.name).title()

Avatar
Discard
Best Answer

 

first_name = fields.Char(string='First Name')

middle_name = fields.Char(string='MiddleName')

last_name = fields.Char(string='LastName')


@api.model

def create(self, vals):

     vals['first_name'] = vals['first_name'].title()

     vals['middle_name'] = vals['middle_name'].title()

    vals['last_name'] = vals['last_name'].title()

     return super(Employee, self).create(vals)


 

     

Avatar
Discard
Best Answer

Define onchange method for this field. Inside method convert value of field as you like.

Avatar
Discard
Best Answer

You can title() function for this purpose field_name.title().

Avatar
Discard
Best Answer

Pls refer following links:

http://stackoverflow.com/questions/1549641/how-to-capitalize-the-first-letter-of-each-word-in-a-string-python


http://stackoverflow.com/questions/12410242/python-capitalize-first-letter-only

Avatar
Discard
Best Answer

the answer for odoo v8 

prenom = fields.Char()

@api.onchange('prenom')

def _compute_upper(self):

for rec in self:

self.prenom = self.prenom.title() if self.prenom else False

Avatar
Discard
Author Best Answer

Thanks for the response, and here's I have done already.

hr_view.xml

        <!--Employee form view -->

                       <div class="oe_title">
                            <label for="name" class="oe_edit_only"/>
                            <h1>
                            <field name="name"  on_change="onchange_name(name)"/>
                            </h1>

On hr.py I have added the below code

def onchange_name(self, cr, uid, ids, name, context=None):
    return {
        'value': {
            'name': name.title()
            }
    }

 

Got the following errors:

OpenERP Server Error

Client Traceback (most recent call last): File "/home/philip/ws/openerp/web/addons/web/http.py", line 204, in dispatch response["result"] = method(self, **self.params) File "/home/philip/ws/openerp/web/addons/web/controllers/main.py", line 1125, in call_kw return self._call_kw(req, model, method, args, kwargs) File "/home/philip/ws/openerp/web/addons/web/controllers/main.py", line 1117, in _call_kw return getattr(req.session.model(model), method)(*args, **kwargs) File "/home/philip/ws/openerp/web/addons/web/session.py", line 42, in proxy result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw) File "/home/philip/ws/openerp/web/addons/web/session.py", line 30, in proxy_method result = self.session.send(self.service_name, method, *args) File "/home/philip/ws/openerp/web/addons/web/session.py", line 103, in send raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info) Server Traceback (most recent call last): File "/home/philip/ws/openerp/web/addons/web/session.py", line 89, in send return openerp.netsvc.dispatch_rpc(service_name, method, args) File "/home/philip/ws/openerp/server/openerp/netsvc.py", line 296, in dispatch_rpc result = ExportService.getService(service_name).dispatch(method, params) File "/home/philip/ws/openerp/server/openerp/service/web_services.py", line 626, in dispatch res = fn(db, uid, *params) File "/home/philip/ws/openerp/server/openerp/osv/osv.py", line 190, in execute_kw return self.execute(db, uid, obj, method, *args, **kw or {}) File "/home/philip/philip/openerp/server/openerp/osv/osv.py", line 132, in wrapper return f(self, dbname, *args, **kwargs) File "/home/philip/ws/openerp/server/openerp/osv/osv.py", line 199, in execute res = self.execute_cr(cr, uid, obj, method, *args, **kw) File "/home/test/philip/openerp/server/openerp/osv/osv.py", line 187, in execute_cr return getattr(object, method)(cr, uid, *args, **kw) AttributeError: 'hr.employee' object has no attribute 'onchange_name'

 I would greatly appreciate any help you can give me in working this problem

Avatar
Discard

Hi philip, I updated my code please check it.

Thank you so much, very appreciated here, will update later


On Mon, Aug 18, 2014 at 3:31 PM, prakash <prakash-jain-sunarctechnologies-com@mail.odoo.com> wrote:

Hi philip, I updated my code please check it.

--
prakash Sent by OpenERP S.A. using Odoo. Access your messages and documents in Odoo

Author

Thank you so much prakash, really appreciated your help, is working now

Best Answer

Capitalize Firstname and set Name to Uppercase: Just use the tg_partner_firstname from http://thierry-godin.developpez.com/openerp/openerp-module-pos-enhanced-fr/fichiers/openerp_tg_pos_enhanced_package_1.0.1.zip

Avatar
Discard
Best Answer

In python use the code name.title() to Capitalize the first letter in Create method or onchange Method.

EDIT

I tested your code its working without any issue.

Try the below code:-

   <div class="oe_title">
      <label for="name" class="oe_edit_only"/>
        <h1>
           <field name="name"  on_change="onchange_name(name)"/>
        </h1>

def onchange_name(self, cr, uid, ids, name, context=None):
    if name:
        return {'value': {'name': name.title()}}
    return {'value':{}}
    
After making these changes, restart the server update your module and test it. It should work.
    

 

 

Avatar
Discard