44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
# Copyright 2017-2018 Tecnativa - Pedro M. Baeza
 | 
						|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 | 
						|
 | 
						|
from odoo import models
 | 
						|
from odoo.addons.resource.models.resource import to_naive_utc
 | 
						|
from datetime import datetime, time
 | 
						|
 | 
						|
 | 
						|
class ResourceCalendar(models.Model):
 | 
						|
    _inherit = 'resource.calendar'
 | 
						|
 | 
						|
    def _get_weekdays(self):
 | 
						|
        """Include full week when we detect by context that we should include
 | 
						|
        all days in leave computation.
 | 
						|
        """
 | 
						|
        if self.env.context.get('include_rest_days'):
 | 
						|
            return range(7)
 | 
						|
        return super()._get_weekdays()
 | 
						|
 | 
						|
    def _get_day_work_intervals(self, day_date, start_time=None, end_time=None,
 | 
						|
                                compute_leaves=False, resource_id=None):
 | 
						|
        """Return fake work intervals for full day when asking for rest days
 | 
						|
        included through ``_get_weekdays``.
 | 
						|
        """
 | 
						|
        if self.env.context.get('include_rest_days'):
 | 
						|
            real_weekdays = self.with_context(
 | 
						|
                include_rest_days=False,
 | 
						|
            )._get_weekdays()
 | 
						|
            if day_date.weekday() not in real_weekdays:
 | 
						|
                user = self.env.user
 | 
						|
                return [self._interval_new(
 | 
						|
                    to_naive_utc(datetime.combine(
 | 
						|
                        day_date, time(hour=0, minute=0, second=0),
 | 
						|
                    ), user),
 | 
						|
                    to_naive_utc(datetime.combine(
 | 
						|
                        day_date, time(hour=23, minute=59, second=59),
 | 
						|
                    ), user),
 | 
						|
                    {},
 | 
						|
                )]
 | 
						|
        return super()._get_day_work_intervals(
 | 
						|
            day_date, start_time=start_time, end_time=end_time,
 | 
						|
            compute_leaves=compute_leaves, resource_id=resource_id,
 | 
						|
        )
 |