在上执行Openerp命令

2024-04-26 06:47:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了计划任务,在本地主机的调度与功能是正常工作。在服务器中,我将调用数设置为10,间隔单位为分钟,间隔数设置为1

问题是当服务器在特定升级后启动时,仅一分钟后,呼叫数显示为0而不是9

请帮帮我

函数

def allocate_on_probations(self, cr, uid, ids,tl, context=None):

        allo=0
        state='active'
        result = {}


        emps=self.pool.get('hr.employee').search(cr, uid, [('current_status','=','active')], context=context)
        if emps:

            for r in emps:
                hol_state=2 
                gt_dt=cr.execute("""SELECT appointed_date FROM hr_employee WHERE id= %d order by id"""%(r))
                gt_dd=cr.fetchone()[0]

                #getting today details
                today = datetime.datetime.now()
                tt=today.date()
                td=tt.day
                tm=tt.month
                ty=tt.year

                #getting appointment date details
                app=datetime.datetime.strptime(gt_dd, "%Y-%m-%d").date()
                #print app
                ay=app.year
                am=app.month
                ad=app.day

                if ay==ty:
                    #compairing today and appointed date
                    comp=(tt-app)
                    chat=int(comp.days)
                    chat_mod=chat%30
                    print chat_mod
                    print r

                    if chat_mod==29:
                        hol_obj=self.pool.get('hr.holidays')
                        print hol_obj
                        condition_1=[('employee_id','=',r),('type','=','add'),('holiday_status_id','=',hol_state)]
                        hol_emp=hol_obj.search(cr, uid,condition_1, context=context)

                        if hol_emp:

                            for n in hol_emp:
                                hol_dt=cr.execute("""SELECT number_of_days_temp FROM hr_holidays WHERE id= %d order by id"""%(n))
                                hol_dd=cr.fetchone()[0]
                                hol_inc=(hol_dd+0.5)

                                print hol_inc
                                cr.execute("""UPDATE hr_holidays SET number_of_days_temp= %d WHERE id= %d"""%(hol_inc,n))
                                cr.execute("""UPDATE hr_holidays SET number_of_days= %d  WHERE id= %d"""%(hol_inc,n))




        return True

XML调度程序调用

<record id="ir_cron_scheduler" model="ir.cron">
            <field name="name">Casual Leave Allocation</field>
            <field name="interval_number">1</field>
            <field name="interval_type">minutes</field>
            <field name="numbercall">10</field>
            <field eval="False" name="doall"/>
            <field eval="'hr.holidays'" name="hr.holidays"/>
            <field eval="'allocate_on_probations'" name="allocate_on_probations"/>
            <field eval="'()'" name="args"/>
        </record>

用户界面 enter image description here

enter image description here


Tags: nameidappfieldexecutedateifcontext
1条回答
网友
1楼 · 发布于 2024-04-26 06:47:02

你的问题是Repeat missed

如果将其设置为True,则意味着服务器关闭时未执行的操作应在服务器重新启动时执行,因此,如果服务器关闭至少10分钟,则在重新启动时,将尽快执行该期间未执行的所有操作。所以不要取消勾选该选项,它实际上是代码中的False(只需升级您的模块以覆盖UI中的选项)

您还可以设置从xml中触发函数的参数

<field eval="'(True,)'" name="args"/>

相关问题 更多 >