Hi, in a production server i need to create the admin user when i init the db from the cli (using -i base --stop-after-init --without-demo). The db is manualy create with psql and i set db_name and list_db=false.
Online I found to use the shell with a custom python script (example --shell-file=odoo.createadmin.py) and here my script
login = "sandbox@odoo.com"
pwd = "Password123"
name = "Sandbox Admin"
Users = env["res.users"].sudo().with_context(active_test=False)
u = Users.search([("login", "=", login)], limit=1)
vals = {
"name": name,
"login": login,
"email": login,
"share": False,
"active": True,
}
if not u:
vals["password"] = pwd
u = Users.create(vals)
else:
vals["password"] = pwd
u.write(vals)
group_user = env.ref("base.group_user")
group_system = env.ref("base.group_system")
# Prova a scrivere direttamente su res.users
try:
u.write({
"groups_id": [(4, group_user.id, 0), (4, group_system.id, 0)]
})
except Exception:
# Se fallisce, prova tramite il partner
if not u.partner_id:
partner = env['res.partner'].create({
'name': name,
'email': login,
})
u.write({'partner_id': partner.id})
u.partner_id.write({
'groups_id': [(6, 0, [group_user.id, group_system.id])]
})
env.cr.commit()
But I get
env: <odoo.orm.environments.Environment object at 0x7f1ce4d62c40>
odoo: <module 'odoo' (namespace) from ['/opt/odoo/odoo-server/odoo']>
openerp: <module 'odoo' (namespace) from ['/opt/odoo/odoo-server/odoo']>
self: res.users(1,)
Traceback (most recent call last):
File "/opt/odoo/odoo-server/odoo/orm/models.py", line 4381, in write
self._check_field_access(self._fields[field_name], 'write')
~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'groups_id'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "odoo.createadmin.py", line 28, in <module>
u.write({
~~~~~~~^^
"groups_id": [(4, group_user.id, 0), (4, group_system.id, 0)]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
})
^^
File "/opt/odoo/odoo-server/odoo/addons/base/models/res_users.py", line 1370, in write
res = super().write(vals)
File "/opt/odoo/odoo-server/odoo/addons/base/models/res_users.py", line 617, in write
res = super().write(vals)
File "/opt/odoo/odoo-server/odoo/orm/models.py", line 4383, in write
raise ValueError(f"Invalid field {field_name!r} in {self._name!r}") from e
ValueError: Invalid field 'groups_id' in 'res.users'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "odoo.createadmin.py", line 39, in <module>
u.partner_id.write({
~~~~~~~~~~~~~~~~~~^^
'groups_id': [(6, 0, [group_user.id, group_system.id])]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
})
^^
File "/opt/odoo/odoo-server/odoo/addons/base/models/res_partner.py", line 880, in write
pre_values_list = [{fname: partner[fname] for fname in vals} for partner in self]
~~~~~~~^^^^^^^
File "/opt/odoo/odoo-server/odoo/orm/models.py", line 6686, in __getitem__
return self._fields[key].__get__(self)
~~~~~~~~~~~~^^^^^
KeyError: 'groups_id'
What is the correct way? I search in the docs but withour success.
Thanks
