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

Odoo V11 

I want to set time as default in ir.cron object for currency update

I am getting error like this when I try loading the module data .

odoo.tools.convert.ParseError: "<class 'TypeError'>: "'module' object is not callable" while evaluating' datetime.combine(datetime.now().date() + timedelta(days=1), time(hour=15,minute=40))'"

How can I solve this problem ? 

My data code:

<record model="ir.cron" id="ir_cron_currency_update_every_day">
        <field name="name">Currency Rate Update</field>
        <field name="interval_number">1</field>
        <field name="interval_type">days</field><!-- it s every day -->
        <field name="numbercall">-1</field>
        <field name="state">code</field>
        <field name="doall" eval="False"/>
        <field name="model_id" ref="currency_rate_update.model_currency_rate_update_service"/>
        <field name="nextcall" eval="datetime.combine(datetime.now().date() + timedelta(days=1),time(hour=15,minute=40))"/>
        <field name="code">model._run_currency_update()</field>
</record>

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

Hi,

Try this code,

<record model="ir.cron" id="ir_cron_currency_update_every_day">
<field name="name">Currency Rate Update</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field><!-- it s every day -->
<field name="numbercall">-1</field>
<field name="state">code</field>
<field name="doall" eval="False"/>
<field name="model_id" ref="currency_rate_update.model_currency_rate_update_service"/>
<field name="nextcall" eval="(DateTime.now() + timedelta(days=1)).strftime('%Y-%m-%d 15:40:%S')" />
<field name="code">model._run_currency_update()</field>
</record>


Also, make sure that whether there is a need to set the next execution time as the next execution time will get set automatically based on the given interval number and interval type.


Thanks

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

Thank you so much :) I have tried this code and it worked. But, I had to use 'datetime.now ()' instead of 'DateTime.now ()'

أفضل إجابة

This error statement TypeError: 'module' object is not callable is raised as you are being confused about the Class name and Module name. The problem is in the import line . You are importing a module, not a class. This happend because the module name and class name have the same name .

If you have a class "MyClass" in a file called "MyClass.py" , then you should import :

 from MyClass import MyClass

In Python , a script is a module, whose name is determined by the filename . So when you start out your file MyClass.py with import MyClass you are creating a loop in the module structure.

http://net-informations.com/python/iq/typeerror.htm

الصورة الرمزية
إهمال
المنشورات ذات الصلة الردود أدوات العرض النشاط
2
فبراير 24
15413
1
ديسمبر 22
4928
2
ديسمبر 22
14347
2
يونيو 22
6180
2
يونيو 22
4594