resource/populate/resource_calendar.py

44 lines
1.5 KiB
Python
Raw Permalink Normal View History

2024-05-03 15:16:16 +03:00
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import populate
class ResourceCalendar(models.Model):
_inherit = "resource.calendar"
_populate_dependencies = ["res.company"] # multi-company setup
_populate_sizes = {
"small": 10, # 1-2 per company
"medium": 30, # 3 per company
"large": 250 # 5 per company
}
def _populate_factories(self):
company_ids = self.env.registry.populated_models["res.company"]
return [
("company_id", populate.iterate(company_ids)),
("name", populate.iterate(["A little {counter}", "A lot {counter}"])),
]
def _populate(self, size):
records = super()._populate(size)
random = populate.Random('calendar')
# Randomly remove 1 half day from schedule
a_lot = records.filtered_domain([("name", "like", "A lot")])
for record in a_lot:
att_id = record.attendance_ids[random.randint(0, 9)]
record.write({
'attendance_ids': [(3, att_id.id)],
})
# Randomly remove 3 to 5 half days from schedule
a_little = records - a_lot
for record in a_little:
to_pop = random.sample(range(10), random.randint(3, 5))
record.write({
'attendance_ids': [(3, record.attendance_ids[idx].id) for idx in to_pop],
})
return records