تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
1 الرد
5323 أدوات العرض

Hello, I need to schedule a method from my own module. I set as Object the name of my model (_name) and the name of my method in Method. I tried to schedule it every minute to check if it works, but even if the scheduled time changes, the method is not called. My class is a Transient model and the method works if I call it manually.

Here is a screen:

http://it.tinypic.com/r/zldz13/8 

(I tried to set Arguments to '()' too)

And the piece of code from models.py that i want to schedule just for test (I put only the used method):

class prova(models.TransientModel):
_name = 'prove.prove'


def regola_restrizione(self, cr, uid, ids, context={}):

username = 'admin'
pwd = 'admin'
dbname = 'TestScheduler'

sock_common = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)
sock = xmlrpclib.ServerProxy'http://localhost:8069/xmlrpc/object')

rule = {

'model_id': '79',
'domain_force': "['|',('user_id','=',user.id),('user_id','=',False)]",
'active': 'TRUE',
'name': 'PROVA',
'global': 'FALSE',
'perm_unlink': 'TRUE',
'perm_write': 'TRUE',
'perm_read': 'TRUE',
'perm_create': 'TRUE',
'groups': [(6, 0, [9])]
}

sock.execute(dbname, uid, pwd, 'ir.rule', 'create', rule)

return True


Is there a way to know if I set the fields correctly and Odoo could 'catch' my method?

Any help is appreciated.

الصورة الرمزية
إهمال
أفضل إجابة

Hi,

You just need to make one change inside your method defination as like below.

def regola_restrizione(self, cr, uid, ids=[ ], context={}): # Cause while calling from cron job Odoo will not pass ids.

I hope your issue will resolve. 

الصورة الرمزية
إهمال
الكاتب

Thank you very much, it works :)

المنشورات ذات الصلة الردود أدوات العرض النشاط
2
أبريل 23
2841
1
مارس 15
5845
0
مارس 15
5534
0
مايو 21
3565
2
أبريل 20
15693