odoo_17.0.1/odoo/addons/base/populate/res_currency.py

37 lines
1.2 KiB
Python

from dateutil.relativedelta import relativedelta
from datetime import date
from odoo import models, Command
from odoo.tools import populate
class ResCurrencyRate(models.Model):
_inherit = "res.currency.rate"
_populate_sizes = {
'small': 100,
'medium': 1000,
'large': 10000,
}
def _populate_factories(self):
def get_rate(random, values, **kwargs):
basis = sum(
ord(c) for c in
self.env['res.currency'].browse(values['currency_id']).name
) % 20
return basis + random.uniform(-1, 1)
def get_date(random, values, **kwargs):
return date(2020, 1, 1) - relativedelta(days=kwargs['counter'])
company_ids = self.env['res.company'].search([
('id', 'in', self.env.registry.populated_models['res.company']),
])
return [
('currency_id', populate.randomize(self.env['res.currency'].search([('active', '=', True)]).ids)),
('company_id', populate.randomize(company_ids.root_id.ids)),
('name', populate.compute(get_date)),
('rate', populate.compute(get_rate)),
]