37 lines
1.2 KiB
Python
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)),
|
|
]
|