2016-09-04 3 views
0

현재 hr_holidays (일명 Leave Management) 모듈로 작업하고 있으며 지정된 휴가 유형에 대해 고유 한 레코드로 휴가 할당을 추가해야합니다.Openerp, 고유 한 레코드를 만드는 방법

create() 함수에 하나의 추가 조건을 추가 했으므로 휴가 요청이 허용되지 않습니다.

def create(self, cr, uid, values, context=None): 

    #-------what I have added starting from here------ 

    hol_stat=values['holiday_status_id'] 
    emp_id=values['employee_id'] 
    n_allo=values['test_allocation'] 

    ids=self.pool.get('hr.holidays').search(cr, uid, [('holiday_status_id','=', hol_stat),('employee_id','=', emp_id),('type','=','add')], context=context) 
     if ids: 
      raise osv.except_osv(_('Warning!'),_('Already allocated leaves .')) 
    # ------end from here----- 


     """ Override to avoid automatic logging of creation """ 
     if context is None: 
      context = {} 
     context = dict(context, mail_create_nolog=True) 

     if ('date_from' in values and 'date_to' in values): 
      define_holidays = self.pool.get('company.holidays').search(cr, uid, ['|',('date', '=', values['date_from']),('date', '=', values['date_to'])]) 

      if define_holidays: 
       raise osv.except_osv(_('Warning!'),_('You need not to apply leaves one Company holidays.')) 
      else: 
       return super(hr_holidays, self).create(cr, uid, values, context=context) 
     else:#mani 
      return super(hr_holidays, self).create(cr, uid, values, context=context) 

질문

가 어떻게 고유 기록 요구 사항을 달성하기 위해 내 create() 기능을 변경할 수 있습니다 :

다음은 내 create() 기능입니다?

답변

1

대신 검색 언제든지 일을 당신은 고유 제한 조건이 있습니다이

_sql_constraints = [ 
     ('unique_hol_empid_type', 'unique(holiday_status_id, employee_id, type)', 'Error: Already allocated leaves'), 
    ] 

으로, 중복 레코드가 생성 될 수없는 것입니다 데이터베이스에 UniqueConstraint를 시행, 새 레코드를 생성 할 원하는 세 열의 조합이고 unique_hol_empid_type은 (데이터베이스 계층에서) 제약 조건에 부여한 이름이며 레코드가 해당 제약 조건을 위반할 때마다 발생합니다.

+0

새 데이터베이스에서 작동하지 않습니까? –

+0

당신이 의미하는 바를 이해하지 못합니다 ... db의 레코드가 제약 조건을 위반하지 않는다면 새로운 데이터베이스 나 오래된 데이터베이스에서 작동 할 것입니다. – danidee

관련 문제