Odoo18-Base/extra-addons/website_event_track_gantt/models/event_event.py

36 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import datetime
from odoo import api, fields, models
class Event(models.Model):
_inherit = 'event.event'
# Initial date and scale of the track gantt view
track_gantt_initial_date = fields.Date(compute='_compute_track_gantt_information')
track_gantt_scale = fields.Char(compute='_compute_track_gantt_information')
@api.depends('track_ids.date', 'track_ids.date_end', 'date_begin', 'date_end')
def _compute_track_gantt_information(self):
for event in self:
first_date = min([event.date_begin] + [track.date for track in event.track_ids if track.date])
last_date = max([event.date_end] + [track.date_end for track in event.track_ids if track.date_end])
if first_date and last_date:
duration = last_date - first_date
if duration / datetime.timedelta(days=30) > 1:
event.track_gantt_scale = 'year'
elif duration / datetime.timedelta(weeks=1) > 1:
event.track_gantt_scale = 'month'
elif duration / datetime.timedelta(days=1) > 1:
event.track_gantt_scale = 'week'
else:
event.track_gantt_scale = 'day'
event.track_gantt_initial_date = first_date
else:
event.track_gantt_scale = False
event.track_gantt_initial_date = False