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

53 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from odoo import models
from odoo.tools import populate
_logger = logging.getLogger(__name__)
class Users(models.Model):
_inherit = "res.users"
_populate_sizes = {
'small': 10,
'medium': 1000,
'large': 10000,
}
_populate_dependencies = ["res.partner"]
def _populate_factories(self):
last_id = self.env["res.users"].search([], order="id desc", limit=1).id
def generate_partner_id(iterator, *args):
partner_factories = self.env['res.partner']._populate_factories()
partner_generator = populate.chain_factories(partner_factories, self._name)
for dependant_values in partner_generator:
values = next(iterator)
yield {**dependant_values, **values, '__complete': values['__complete']}
def get_company_ids(values, **kwargs):
return [(6, 0, [values['company_id']])]
def compute_login(values=None, counter=0, **kwargs):
return f'user_login_{last_id + counter + 1}'
def compute_name(values=None, counter=0, **kwargs):
return f'user_{last_id + counter + 1}'
return [
('active', populate.cartesian([True, False], [0.9, 0.1])),
('partner_id', generate_partner_id),
('company_id', populate.randomize(self.env.registry.populated_models['res.company'])),
('company_ids', populate.compute(get_company_ids)),
('login', populate.compute(compute_login)),
('name', populate.compute(compute_name)),
]
def _populate(self, size):
self = self.with_context(no_reset_password=True) # avoid sending reset password email
return super(Users, self)._populate(size)