odex30_standard/hr_holidays_public/models/hr_holidays_restriction.py

36 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class HrHolidaysRestriction(models.Model):
_name = 'hr.holidays.restriction'
_description = 'Holidays Restriction'
_rec_name = 'date_from'
_inherit = ['mail.thread', 'mail.activity.mixin']
date_from = fields.Date('Date From', required=True, default=fields.Date.today())
date_to = fields.Date('Date To', required=True)
leave_ids = fields.Many2many(comodel_name='hr.holidays.status', string='Leaves')
employee_ids = fields.Many2many(comodel_name='hr.employee', string='Employees')
class HRHolidays(models.Model):
_inherit = 'hr.holidays'
@api.constrains('holiday_status_id', 'employee_id', 'date_from', 'date_to')
def check_leave_restriction(self):
restricted_leaves = self.env['hr.holidays.restriction']
for leave in self:
if leave.holiday_status_id and leave.date_from and leave.date_to:
restricted = restricted_leaves.search([('date_from', '<=', leave.date_to),
('date_to', '>=', leave.date_from)
])
if leave.employee_id in restricted.mapped('employee_ids') and \
leave.holiday_status_id in restricted.mapped('leave_ids'):
msg = ''
for r in restricted: msg += str(r.date_from) + ' - ' + str(r.date_to) + '\n'
raise exceptions.ValidationError(_('Sorry you are restricted from applying for %s durring '
'the following periods \n %s') % (
leave.holiday_status_id.name, msg))