私はスケジュールされたタスクを作成しました。ローカルホストでは、この機能を持つスケジューラが正常に動作しています。サーバーでは、Number of Calls = 10、Interval Unit = MinutesおよびInterval Number = 1を設定します。Openerp Schdularが一度に実行
特定のアップグレード後にサーバーが起動するのは、Number of Callsが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>
で私を助けてください
xmlを介してやったのですか? – danidee
最初にxmlからスケジューラを呼び出し、ui –
を使用して引数を変更しました。スケジューラと実行している関数の両方にコードを貼り付けて、デバッグするのが簡単になります – danidee