diff options
| author | Raphael Collet <rco@odoo.com> | 2018-07-23 10:47:19 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2018-08-23 21:38:57 +0200 |
| commit | 2f7c03d9ca5809b65dc6eaa778064668d34fcd2e (patch) | |
| tree | 1d3452d9a127de1396563ab3b5f70de6e2bd5a7f /odoo/addons/base | |
| parent | 7ba9acea188a08a75ab1cd4a7f5f56e0d0f956ef (diff) | |
[IMP] base: add regular user admin as uid 2
User 1 simply becomes a technical user (inactive, no password).
Diffstat (limited to 'odoo/addons/base')
| -rw-r--r-- | odoo/addons/base/data/base_data.sql | 12 | ||||
| -rw-r--r-- | odoo/addons/base/data/res_partner_data.xml | 7 | ||||
| -rw-r--r-- | odoo/addons/base/data/res_users_data.xml | 13 | ||||
| -rw-r--r-- | odoo/addons/base/data/res_users_demo.xml | 5 | ||||
| -rw-r--r-- | odoo/addons/base/models/res_partner.py | 11 | ||||
| -rw-r--r-- | odoo/addons/base/security/base_groups.xml | 7 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_xmlrpc.py | 10 |
7 files changed, 44 insertions, 21 deletions
diff --git a/odoo/addons/base/data/base_data.sql b/odoo/addons/base/data/base_data.sql index 760205e3a89..58bdd7d3062 100644 --- a/odoo/addons/base/data/base_data.sql +++ b/odoo/addons/base/data/base_data.sql @@ -126,20 +126,20 @@ CREATE TABLE res_partner ( --------------------------------- insert into res_currency (id, name, symbol) VALUES (1, 'EUR', '€'); insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('EUR', 'base', 'res.currency', true, 1); -select setval('res_currency_id_seq', 2); +select setval('res_currency_id_seq', 1); insert into res_company (id, name, partner_id, currency_id, create_date) VALUES (1, 'My Company', 1, 1, now() at time zone 'UTC'); insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('main_company', 'base', 'res.company', true, 1); -select setval('res_company_id_seq', 2); +select setval('res_company_id_seq', 1); insert into res_partner (id, name, company_id, create_date) VALUES (1, 'My Company', 1, now() at time zone 'UTC'); insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('main_partner', 'base', 'res.partner', true, 1); -select setval('res_partner_id_seq', 2); +select setval('res_partner_id_seq', 1); -insert into res_users (id, login, password, active, partner_id, company_id, create_date) VALUES (1, 'admin', 'admin', true, 1, 1, now() at time zone 'UTC'); +insert into res_users (id, login, password, active, partner_id, company_id, create_date) VALUES (1, '__system__', NULL, false, 1, 1, now() at time zone 'UTC'); insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('user_root', 'base', 'res.users', true, 1); -select setval('res_users_id_seq', 2); +select setval('res_users_id_seq', 1); insert into res_groups (id, name) VALUES (1, 'Employee'); insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('group_user', 'base', 'res.groups', true, 1); -select setval('res_groups_id_seq', 2); +select setval('res_groups_id_seq', 1); diff --git a/odoo/addons/base/data/res_partner_data.xml b/odoo/addons/base/data/res_partner_data.xml index f83a9dceab4..41872a10fa0 100644 --- a/odoo/addons/base/data/res_partner_data.xml +++ b/odoo/addons/base/data/res_partner_data.xml @@ -16,6 +16,13 @@ </record> <record model="res.partner" id="base.partner_root"> + <field name="name">System</field> + <field name="company_id" ref="main_company"/> + <field name="customer" eval="False"/> + <field name="active" eval="False"/> + </record> + + <record model="res.partner" id="base.partner_admin"> <field name="name">Administrator</field> <field name="company_id" ref="main_company"/> <field name="customer" eval="False"/> diff --git a/odoo/addons/base/data/res_users_data.xml b/odoo/addons/base/data/res_users_data.xml index 70482bf1893..b28572009ce 100644 --- a/odoo/addons/base/data/res_users_data.xml +++ b/odoo/addons/base/data/res_users_data.xml @@ -1,11 +1,24 @@ <?xml version="1.0" encoding="utf-8"?> <odoo> <data noupdate="1"> + <!-- user 1 is the technical admin user --> <record model="res.users" id="base.user_root"> <field name="partner_id" ref="base.partner_root"/> <field name="company_id" ref="main_company"/> <field name="company_ids" eval="[(4, ref('main_company'))]"/> <field name="signature"><![CDATA[<span>-- <br/> +System</span>]]></field> + </record> + + <!-- user 2 is the human admin user --> + <record id="user_admin" model="res.users"> + <field name="login">admin</field> + <field name="password">admin</field> + <field name="partner_id" ref="base.partner_admin"/> + <field name="company_id" ref="main_company"/> + <field name="company_ids" eval="[(4, ref('main_company'))]"/> + <field name="groups_id" eval="[(6,0,[])]"/> + <field name="signature"><![CDATA[<span>-- <br/> Administrator</span>]]></field> </record> diff --git a/odoo/addons/base/data/res_users_demo.xml b/odoo/addons/base/data/res_users_demo.xml index faee5b8f40b..38d6323ee28 100644 --- a/odoo/addons/base/data/res_users_demo.xml +++ b/odoo/addons/base/data/res_users_demo.xml @@ -40,6 +40,11 @@ </record> <record model="res.partner" id="base.partner_root"> + <field name="email">root@yourcompany.example.com</field> + <field name="tz">Europe/Brussels</field> + </record> + + <record model="res.partner" id="base.partner_admin"> <field name="name">Mitchell Stephens</field> <field name="company_name">YourCompany</field> <field name="street">215 Vine St</field> diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py index a423af7835d..932c6d49167 100644 --- a/odoo/addons/base/models/res_partner.py +++ b/odoo/addons/base/models/res_partner.py @@ -208,7 +208,7 @@ class Partner(models.Model): compute='_compute_company_type', inverse='_write_company_type') company_id = fields.Many2one('res.company', 'Company', index=True, default=_default_company) color = fields.Integer(string='Color Index', default=0) - user_ids = fields.One2many('res.users', 'partner_id', string='Users', auto_join=True) + user_ids = fields.One2many('res.users', 'partner_id', string='Users', auto_join=True, context={'active_test': False}) partner_share = fields.Boolean( 'Share Partner', compute='_compute_partner_share', store=True, help="Either customer (not a user), either shared user. Indicated the current partner is a customer without " @@ -240,13 +240,6 @@ class Partner(models.Model): ('check_name', "CHECK( (type='contact' AND name IS NOT NULL) or (type!='contact') )", 'Contacts require a name.'), ] - @api.multi - def toggle_active(self): - for partner in self: - if partner.active and partner.user_ids: - raise ValidationError(_('You cannot archive a contact linked to an internal user.')) - super(Partner, self).toggle_active() - @api.depends('is_company', 'name', 'parent_id.name', 'type', 'company_name') def _compute_display_name(self): diff = dict(show_address=None, show_address_only=None, show_email=None) @@ -506,7 +499,7 @@ class Partner(models.Model): def write(self, vals): if vals.get('active') is False: for partner in self: - if partner.active and partner.user_ids: + if partner.active and any(partner.user_ids.mapped('active')): raise ValidationError(_('You cannot archive a contact linked to an internal user.')) # res.partner must only allow to set the company_id of a partner if it # is the same as the company of all users that inherit from this partner diff --git a/odoo/addons/base/security/base_groups.xml b/odoo/addons/base/security/base_groups.xml index a7e32bb1065..62889e5cbc9 100644 --- a/odoo/addons/base/security/base_groups.xml +++ b/odoo/addons/base/security/base_groups.xml @@ -14,7 +14,7 @@ <record model="res.groups" id="group_system"> <field name="name">Settings</field> <field name="implied_ids" eval="[(4, ref('group_erp_manager'))]"/> - <field name="users" eval="[(4, ref('base.user_root'))]"/> + <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/> </record> <record model="res.groups" id="group_user"> @@ -38,11 +38,12 @@ </record> <record model="res.groups" id="group_user"> <field name="implied_ids" eval="[(4, ref('group_no_one'))]"/> - <field name="users" eval="[(4, ref('base.user_root'))]"/> + <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/> </record> <record model="res.groups" id="group_partner_manager"> <field name="name">Contact Creation</field> + <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/> </record> <record id="default_user" model="res.users"> @@ -89,4 +90,4 @@ </record> </data> -</odoo>
\ No newline at end of file +</odoo> diff --git a/odoo/addons/base/tests/test_xmlrpc.py b/odoo/addons/base/tests/test_xmlrpc.py index 98ad2a473c1..09ec01adfbb 100644 --- a/odoo/addons/base/tests/test_xmlrpc.py +++ b/odoo/addons/base/tests/test_xmlrpc.py @@ -7,17 +7,21 @@ from odoo.tests import common @common.tagged('post_install', '-at_install') class TestXMLRPC(common.HttpCase): + def setUp(self): + super(TestXMLRPC, self).setUp() + self.admin_uid = self.env.ref('base.user_admin').id + def test_01_xmlrpc_login(self): """ Try to login on the common service. """ db_name = common.get_db_name() uid = self.xmlrpc_common.login(db_name, 'admin', 'admin') - self.assertEqual(uid, 1) + self.assertEqual(uid, self.admin_uid) def test_xmlrpc_ir_model_search(self): """ Try a search on the object service. """ o = self.xmlrpc_object db_name = common.get_db_name() - ids = o.execute(db_name, 1, 'admin', 'ir.model', 'search', []) + ids = o.execute(db_name, self.admin_uid, 'admin', 'ir.model', 'search', []) self.assertIsInstance(ids, list) - ids = o.execute(db_name, 1, 'admin', 'ir.model', 'search', [], {}) + ids = o.execute(db_name, self.admin_uid, 'admin', 'ir.model', 'search', [], {}) self.assertIsInstance(ids, list) |
