2016-05-25 7 views
3

ich eine Aktion automatisieren wollen und hier ist der Code, den ich verwende:automatisieren Aktionen mit Cron und dem neuen api odoo

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data noupdate="1"> 
     <record id="ir_cron_scheduler_demo_action" model="ir.cron"> 
      <field name="name">Demo scheduler</field> 
      <field name="user_id" ref="base.user_root"/> 
      <field name="interval_number">2</field> 
      <field name="interval_type">minutes</field> 
      <field name="numbercall">-1</field> 
      <field eval="False" name="doall"/> 
      <field eval="'note.admin'" name="model"/> 
      <field eval="'process_demo_scheduler_queue'" name="function"/> 
     </record> 
    </data> 
</openerp> 
@api.model 
def process_demo_scheduler_queue(self): 
    for note in self.env['note.admin']: 
     if datetime.strptime(note.date, DEFAULT_SERVER_DATETIME_FORMAT).date() == datetime.now().date(): 
      note.write({'is_visible': True}) 

Was möchte ich tun, ist, den Wert is_visible einstellen auf Wahr, wenn das Feld note.date == aktuelles Datum

hier ist das Protokoll auf dem Server:

2016-05-25 01: 20: 17.658 3680 INFO test3 werkzeug: 127.0.0.1 - - [25/Mai/2016 01.20.17] "POST /web/dataset/call_kw/note.admin/message_get_subscription_data HTTP/1.1" 200 -

aber es funktioniert nicht!


GELÖST:

@api.model 
def process_demo_scheduler_queue(self): 
    notes = self.search([('date', '=', fields.Date.today())]) 
    notes.write({'is_visible': True}) 

Antwort

1

Zuerst müssen Sie für alle Notizen in Ihrer Datenbank suchen, und zweitens versuchen odoo Datum zu verwenden Logik:

@api.model 
def process_demo_scheduler_queue(self): 
    for note in self.search([]): 
     if note.date == openerp.fields.Date.context_today(self): 
      note.is_visible = True 

Oder vielleicht schneller:

@api.model 
def process_demo_scheduler_queue(self): 
    notes = self.search([('date', '=', openerp.fields.Date.context_today(self))]) 
    notes.write({'is_visible': True}) 
+0

ich den schnelleren Weg, geliebt, Behälter Sie T_T – Mraimou

2

Sie haben wie unten Code zu schreiben,

@api.model 
def process_demo_scheduler_queue(self): 
    for note in self.env['note.admin'].search([]): 
     if datetime.strptime(note.date, DEFAULT_SERVER_DATETIME_FORMAT).date() == datetime.now().date(): 
      note.write({'is_visible': True}) 
+0

Dank für Ihre Antwort danken, vergaß ich die „.search ([])“ – Mraimou