在时间线视图中显示公共假日12

2024-05-28 23:17:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在项目仪表板的时间线视图中显示项目期间中包含的公共假日

首先,我得到了每个项目中包含的假期列表,这里是我的功能:

holiday_in_project = fields.Text('Holiday in project', compute='get_holiday')

# get holiday include in interval date project
@api.depends('date_start', 'date')
def get_holiday(self):

    if self.resource_calendar_id:
        for leave_ids in self.env['resource.calendar.leaves'].search([
                                                            ('calendar_id', '=', self.resource_calendar_id.name),
                                                            ]):

                # datetime to date
                date_from = leave_ids.date_from.date()
                date_to = leave_ids.date_to.date()

                Range = namedtuple('Range', ['start', 'end'])

                r1 = Range(start=self.date_start, end=self.date)
                r2 = Range(start=date_from, end=date_to)

                latest_start = max(r1.start, r2.start)
                earliest_end = min(r1.end, r2.end)

                overlap = (earliest_end - latest_start).days + 1
                overlapping_dates = []

                if overlap > 0:

                    overlapping_dates = range(latest_start.toordinal(), earliest_end.toordinal() + 1)

                    overlapping_dates = [date.fromordinal(x) for x in overlapping_dates]

                    # print('overlapping_dates')
                    # print(overlapping_dates)

                    self.holiday_in_project = overlapping_dates

                    # reconvert text to liste (if need)
                    liste = self.holiday_in_project.split(',')
                    print(liste)

现在我必须从javascript调用我的函数,以不同的颜色在时间线视图中显示结果(公共假日),我该怎么做?

例如:2020年1月1日是公共假日,如下所示:

enter image description here


Tags: to项目inselfprojectgetdateif

热门问题