how to reslove the TypeError: 'int' object is not callable?

Asked by shanky

Hello,
I get error TypeError: 'int' object is not callable:

The code for reference is as follows:
I get error message when call go to obj_task.create(cr,uid,record)

class history_state(osv.osv_memory):
    _name='history.state'
    _columns = {
        'description' : fields.text('Description', help="maintain history of bug"),
            }
    def update(self, cr, uid, ids, context=None):
        if 'active_id' in context:
            pdb.set_trace()
            comment=self.browse(cr,uid,ids)[0].description
            print "comment: ",comment
            obj_task = self.pool.get('task.work')
            tasks = obj_task.search(cr,uid,[('task_id','=',context['active_id'])])
            task_id = str(context['active_id'])
            record = {
                            'task_id' : task_id,
                            'user_id':str(uid),
                            'name': comment,
                            'date' : time.strftime('%Y-%m-%d %H:%M:%S') }
            print record
-------------------------------------------------------------------------
            obj_task.create(cr,uid,record)

Please help me.
 Do i need to implement "Create(slef,cr,uid,values)" method in the "task.work" class
Regards

Question information

Language:
English Edit question
Status:
Solved
For:
Odoo Addons (MOVED TO GITHUB) Edit question
Assignee:
No assignee Edit question
Solved by:
Jay Vora (Serpent Consulting Services)
Solved:
Last query:
Last reply:
Revision history for this message
Jay Vora (Serpent Consulting Services) (jayvora) said :
#1

Hello Shankar,

No, you never need to implelement create method once its the derived class of Osv.Osv.

Can you send us the full traceback?

Its just the problem of object.METHOD, but the method for your end is having an integer value!

Kindly check again.

Thanks.

Revision history for this message
shanky (shankar-shinde-deactivatedaccount) said :
#2

Hello Jay,

My aim is to push the record in database,since I use create method.

Here is traceback :

Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/openerp-server/netsvc.py", line 245, in dispatch
    result = LocalService(service_name)(method, *params)
  File "/usr/lib/python2.5/site-packages/openerp-server/netsvc.py", line 74, in __call__
    return getattr(self, method)(*params)
  File "/usr/lib/python2.5/site-packages/openerp-server/service/web_services.py", line 576, in execute
    res = service.execute(db, uid, object, method, *args)
  File "/usr/lib/python2.5/site-packages/openerp-server/osv/osv.py", line 58, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/usr/lib/python2.5/site-packages/openerp-server/osv/osv.py", line 119, in execute
    res = pool.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/usr/lib/python2.5/site-packages/openerp-server/osv/osv.py", line 111, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/lib/python2.5/site-packages/openerp-server/addons/bug_tracker/bug_tracker.py", line 197, in update
    id = obj_task.create(cr,uid,record) #
  File "/usr/lib/python2.5/site-packages/openerp-server/osv/orm.py", line 2767, in create
    default_values = self.default_get(cr, user, default, context)
  File "/usr/lib/python2.5/site-packages/openerp-server/osv/orm.py", line 2131, in default_get
    value[f] = self._defaults[f](self, cr, uid, context)
TypeError: 'int' object is not callable

Regards,
  Shankar

Revision history for this message
Jay Vora (Serpent Consulting Services) (jayvora) said :
#3

Hello Shankar,

There seems to be a problem with your _defaults dictionary.

You seem to have used a user_id : uid value.

It always has to be like : 'user_id': lambda obj, cr, uid, context: uid.

Either way, you have used a function .but its not well-defined.

Attach your _defaults here.

Thanks.

Revision history for this message
shanky (shankar-shinde-deactivatedaccount) said :
#4

Hello Jay,

My task_work class as follows contain _default :
class task_work(osv.osv):
    _name = "task.work"
    _description = "Task Work"
    _columns = {
        'name': fields.text('Work summary' ,required=True),
        'date': fields.datetime('Date'),
        'task_id': fields.many2one('bug.tracker', 'Task', ondelete='cascade', required=True),
        'hours': fields.float('Time Spent'),
        'user_id': fields.many2one('res.users', 'Done by', ondelete='cascade', required=True),
    }
    _defaults = {
        'user_id': lambda obj,cr,uid,context: uid,
        'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
    }
    _order = "date desc"
task_work()

for your reference code implemented for method is in first post

Revision history for this message
Best Jay Vora (Serpent Consulting Services) (jayvora) said :
#5

Hello Shankar,

The Code seems to be alright.

Can you do some debugging?

Thanks.

Revision history for this message
shanky (shankar-shinde-deactivatedaccount) said :
#6

Hello Jay,
Thanks for your co-operation My problem get solved.
Thanks and Regards
  Shankar

Revision history for this message
shanky (shankar-shinde-deactivatedaccount) said :
#7

Thanks Jay (Open ERP), that solved my question.