2016-02-13 36 views
0

我正在Odoo上的會議室預定模塊上工作 我想比較一下插入日期和數據庫中的日期。 我試過搜索(),browse()函數,我也嘗試遍歷記錄集,但它總是指向我即將插入的記錄。 我正在考慮通過SQL查詢doint,但我無法找到存儲數據的表的名稱。Odoo - 如何在驗證前比較存儲日期

下面是類的定義:

class Reservation(models.Model): 
    _name = 'module001.reservation' 

    name = fields.Char(String="Reservation Number", required=True) 
    start_date = fields.Datetime(default=fields.Date.today) 
    room_number = fields.Many2one('module001.room', ondelete='cascade', string="Room", required=True) 
    reserved_for = fields.Many2one('res.partner', string="Reserved for ") 
    end_date = fields.Datetime(string="End Date", store=True) 

預先感謝您

+0

是否要比較您的案例中的start_date和end_date字段? –

回答

0

我能完成它這樣,所以我可以比較的,我已經與當前的記錄每一個日期記錄我即將插入

@api.multi 
@api.constrains('start_date', 'end_date', 'name') 
def _check_date(self): 
    envir = self.env['tt.reservation'].search([('id', '!=', self.id)]) 
    for record in envir: 
     start_self = datetime.datetime.strptime(self.start_date, "%Y-%m-%d %H:%M:%S") 
     end_self = datetime.datetime.strptime(self.end_date, "%Y-%m-%d %H:%M:%S") 
     start_rec = datetime.datetime.strptime(record.start_date, "%Y-%m-%d %H:%M:%S") 
     end_rec = datetime.datetime.strptime(record.end_date, "%Y-%m-%d %H:%M:%S") 

#verification de la diponibilite de la salle 
     if self.room_id == record.room_id: 
      if start_self.date() == start_rec.date() and start_self.date() == end_rec.date(): 
       if ((start_self.time() > start_rec.time() and start_self.time() < end_rec.time()) or (end_self.time() > start_rec.time() and end_self.time() < end_rec.time()) or (start_self.time() <= start_rec.time() and end_self.time() >= end_rec.time())): 
        raise exceptions.ValidationError("Salle occupée")