diff --git a/base_group_backend/README.rst b/base_group_backend/README.rst index a00d2b3bd..c77b5aeb4 100644 --- a/base_group_backend/README.rst +++ b/base_group_backend/README.rst @@ -7,7 +7,7 @@ Group backend !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:6aed3105c0a4c58cc34c910e88d34a68e14d38a8d549160bbc5b8f276320cda4 + !! source digest: sha256:c7397d2b2e542e6918527090ab259d68f9d3b6a25386feccdc38002e51be4e31 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/base_group_backend/__manifest__.py b/base_group_backend/__manifest__.py index cd445f0c8..cf03013e6 100644 --- a/base_group_backend/__manifest__.py +++ b/base_group_backend/__manifest__.py @@ -8,14 +8,21 @@ "license": "LGPL-3", "maintainers": ["oca"], "website": "https://github.com/OCA/server-backend", - "depends": ["base", "mail"], + "depends": [ + "base", + "base_install_request", # weird module, we need to survive with it + "mail", + ], "demo": [ "demo/test-model.xml", "demo/ir.model.access.csv", "demo/backend_dummy_model.xml", + "demo/res_partners.xml", + "demo/res_users.xml", ], "data": [ - "data/res-groups.xml", + "data/res_groups.xml", + "data/ir_ui_menu.xml", "security/ir.model.access.csv", ], "installable": True, diff --git a/base_group_backend/data/ir_ui_menu.xml b/base_group_backend/data/ir_ui_menu.xml new file mode 100644 index 000000000..a8a80e106 --- /dev/null +++ b/base_group_backend/data/ir_ui_menu.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/base_group_backend/data/res-groups.xml b/base_group_backend/data/res-groups.xml deleted file mode 100644 index eb3291e9b..000000000 --- a/base_group_backend/data/res-groups.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - Backend user - - - This group is used to gives user backend access. - - While users in `base.group_user` gets a lot of default access - which makes hard to define properly records/rules/menu access. - - So for maintainability you shouldn't linked any access right, rules, - menu, and so on to this group directly. - - The only intent of this groups is to be able to get a session - to Odoo backend (`/web`). - - - diff --git a/base_group_backend/data/res_groups.xml b/base_group_backend/data/res_groups.xml new file mode 100644 index 000000000..db3df0068 --- /dev/null +++ b/base_group_backend/data/res_groups.xml @@ -0,0 +1,43 @@ + + + + Backend user + + + This group is used to gives user backend access. + + While users in `base.group_user` gets a lot of default access + which makes hard to define properly records/rules/menu access. + + So for maintainability you shouldn't linked any access right, rules, + menu, and so on to this group directly. + + The only intent of this groups is to be able to get a session + to Odoo backend (`/web`). + + + + + Backend UI user + + + This group is used to gives user basic ui access. + + + + + diff --git a/base_group_backend/demo/backend_dummy_model.py b/base_group_backend/demo/backend_dummy_model.py index 561ef8119..649f22418 100644 --- a/base_group_backend/demo/backend_dummy_model.py +++ b/base_group_backend/demo/backend_dummy_model.py @@ -3,7 +3,6 @@ class BackendDummyModel(models.Model): _name = "backend.dummy.model" - _inherit = ["mail.activity.mixin"] _description = "Backend Dummy Model demo" my_value = fields.Char(name="Value", required=True) diff --git a/base_group_backend/demo/backend_dummy_model.xml b/base_group_backend/demo/backend_dummy_model.xml index 3af728dd1..ade0d44c0 100644 --- a/base_group_backend/demo/backend_dummy_model.xml +++ b/base_group_backend/demo/backend_dummy_model.xml @@ -1,13 +1,12 @@ - - + Backend dummy tree view backend.dummy.model - + @@ -24,20 +23,20 @@ id="menu_dummy_root" name="Dummy" sequence="100" - groups="group_backend,base.group_user" + groups="group_backend_ui_users,base.group_user" /> diff --git a/base_group_backend/demo/ir.model.access.csv b/base_group_backend/demo/ir.model.access.csv index 95d560f98..6c353bcb6 100644 --- a/base_group_backend/demo/ir.model.access.csv +++ b/base_group_backend/demo/ir.model.access.csv @@ -1,3 +1,3 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"backend_dummy_models","backend dummy.model","model_backend_dummy_model",group_backend,1,0,0,0 +"backend_dummy_models","backend dummy.model","model_backend_dummy_model",group_backend_ui_users,1,0,0,0 "backend_dummy_models_user_grp","backend dummy.model user grp","model_backend_dummy_model",base.group_user,1,0,0,0 diff --git a/base_group_backend/demo/res_partners.xml b/base_group_backend/demo/res_partners.xml new file mode 100644 index 000000000..32b455809 --- /dev/null +++ b/base_group_backend/demo/res_partners.xml @@ -0,0 +1,12 @@ + + + + Demo partner backend + + + Demo partner backend 1 + + + Demo partner backend 2 + + diff --git a/base_group_backend/demo/res_users.xml b/base_group_backend/demo/res_users.xml new file mode 100644 index 000000000..37baa44a6 --- /dev/null +++ b/base_group_backend/demo/res_users.xml @@ -0,0 +1,21 @@ + + + + demo backend user + + + + + demo backend user 1 + + + + + demo backend user 2 + + + + diff --git a/base_group_backend/demo/test-model.xml b/base_group_backend/demo/test-model.xml index 42caa5cc7..3ced409a7 100644 --- a/base_group_backend/demo/test-model.xml +++ b/base_group_backend/demo/test-model.xml @@ -1,8 +1,7 @@ - - + + hello hello - diff --git a/base_group_backend/models/__init__.py b/base_group_backend/models/__init__.py index beafab2fa..883516533 100644 --- a/base_group_backend/models/__init__.py +++ b/base_group_backend/models/__init__.py @@ -1,2 +1 @@ -from odoo.tools import config from . import res_users diff --git a/base_group_backend/models/res_users.py b/base_group_backend/models/res_users.py index 8c456e5e6..87a6c2484 100644 --- a/base_group_backend/models/res_users.py +++ b/base_group_backend/models/res_users.py @@ -8,7 +8,6 @@ class Users(models.Model): _inherit = "res.users" - # TODO: (franz) make it clear why we test with "." group and why the share = True @api.model def has_group(self, group_ext_id): """While ensuring a user is part of `base.group_user` this code will @@ -25,21 +24,27 @@ def has_group(self, group_ext_id): res = super().has_group(group_ext_id) if not res and (group_ext_id == "base.group_user"): has_base_group_backend = super().has_group( - "base_group_backend.group_backend" - ) + "base_group_backend.base_group_backend" + ) or super().has_group("base_group_backend.group_backend_ui_users") if has_base_group_backend: - _logger.warning("Forcing has_group to return True for group_backend") + _logger.warning( + "Forcing has_group to return True" + + " for group_backend and base_group_backend_ui_users" + ) return has_base_group_backend return res @api.depends("groups_id") def _compute_share(self): - user_group_id = self.env["ir.model.data"]._xmlid_to_res_id("base.group_user") + res = super()._compute_share() backend_user_group_id = self.env["ir.model.data"]._xmlid_to_res_id( - "base_group_backend.group_backend" + "base_group_backend.base_group_backend" + ) + backend_ui_user_group_id = self.env["ir.model.data"]._xmlid_to_res_id( + "base_group_backend.group_backend_ui_users" ) internal_users = self.filtered_domain( - [("groups_id", "in", [user_group_id, backend_user_group_id])] + [("groups_id", "in", [backend_user_group_id, backend_ui_user_group_id])] ) internal_users.share = False - (self - internal_users).share = True + return res diff --git a/base_group_backend/readme/ROADMAP.rst b/base_group_backend/readme/ROADMAP.rst new file mode 100644 index 000000000..5190afe11 --- /dev/null +++ b/base_group_backend/readme/ROADMAP.rst @@ -0,0 +1,5 @@ +Current module depends on `base_install_request` instead of `base`. + +We don't need `base_install_request` auto install module but we must override it to set a security group on `App` menu. + +This dependency should be remove if possible in future versions. diff --git a/base_group_backend/security/ir.model.access.csv b/base_group_backend/security/ir.model.access.csv index c5b504a1d..1746a2398 100644 --- a/base_group_backend/security/ir.model.access.csv +++ b/base_group_backend/security/ir.model.access.csv @@ -1,13 +1,33 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -res_users_backend,backend user res.users,base.model_res_users,group_backend,1,0,0,0 -res_partner_backend,backend user res.partner,base.model_res_partner,group_backend,1,0,0,0 -ir_ui_menu_backend,backend user ir.ui.menu,base.model_ir_ui_menu,group_backend,1,0,0,0 -ir_filter_backend,backend user ir.filters,base.model_ir_filters,group_backend,1,1,1,1 -bus_presence_backend,backend user bus.presence,bus.model_bus_presence,group_backend,1,1,1,1 -mail_channel_member_backend,backend user mail.channel.member,mail.model_mail_channel_member,group_backend,1,1,1,0 -mail_channel_backend,backend user mail.group,mail.model_mail_channel,group_backend,1,1,1,0 -mail_notification_backend,backend user mail.notification,mail.model_mail_notification,group_backend,1,1,1,0 -mail_activity_backend,backend user mail.activity,mail.model_mail_activity,group_backend,1,1,1,1 -mail_activity_type_backend,backend user mail.activity.type,mail.model_mail_activity_type,group_backend,1,0,0,0 -ir_attachment_group_backend,backend user ir.attachment,base.model_ir_attachment,group_backend,1,0,0,0 -mail_followers_backend,backend user mail.followers,mail.model_mail_followers,group_backend,1,0,0,0 +backend_ui_users_ir_default,backend_ui_users_ir_default,base.model_ir_default,group_backend_ui_users,1,1,1,1 +backend_ui_users_ir_filters,backend_ui_users_ir_filters,base.model_ir_filters,group_backend_ui_users,1,1,1,1 +backend_ui_users_ir_model,backend_ui_users_ir_model,base.model_ir_model,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_model_fields,backend_ui_users_ir_model_fields,base.model_ir_model_fields,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_model_data,backend_ui_users_ir_model_data,base.model_ir_model_data,group_backend_ui_users,1,0,1,0 +backend_ui_users_ir_model_fields_selection,backend_ui_users_ir_model_fields_selection,base.model_ir_model_fields_selection,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_sequence,backend_ui_users_ir_sequence,base.model_ir_sequence,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_sequence_date_range,backend_ui_users_ir_sequence_date_range,base.model_ir_sequence_date_range,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_ui_menu,backend_ui_users_ir_ui_menu,base.model_ir_ui_menu,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_attachment,backend_ui_users_ir_attachment,base.model_ir_attachment,group_backend_ui_users,1,0,1,0 +backend_ui_users_res_partner,backend_ui_users_res_partner,base.model_res_partner,group_backend_ui_users,1,0,0,0 +backend_ui_users_bus_presence,backend_ui_users_bus_presence,bus.model_bus_presence,group_backend_ui_users,1,1,1,1 +backend_ui_users_mail_channel_member_public,backend_ui_users_mail_channel_member,mail.model_mail_channel_member,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_channel_public,backend_ui_users_mail_channel_member,mail.model_mail_channel,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_activity,backend_ui_users_mail_activity,mail.model_mail_activity,group_backend_ui_users,1,1,1,1 +backend_ui_users_mail_activity_type,backend_ui_users_mail_activity_type,mail.model_mail_activity_type,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_followers,backend_ui_users_mail_followers,mail.model_mail_followers,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_mail,backend_ui_users_mail_mail,mail.model_mail_mail,group_backend_ui_users,0,0,0,0 +backend_ui_users_mail_compose_message,backend_ui_users_mail_compose_message,mail.model_mail_compose_message,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_wizard_invite,backend_ui_users_mail_wizard_invite,mail.model_mail_wizard_invite,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_template,backend_ui_users_mail_template,mail.model_mail_template,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_template_preview,backend_ui_users_mail_template_preview,mail.model_mail_template_preview,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_message,backend_ui_users_mail_message,mail.model_mail_message,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_resend_message,backend_ui_users_mail_resend_message,mail.model_mail_resend_message,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_notification,backend_ui_users_mail_notification,mail.model_mail_notification,group_backend_ui_users,1,1,1,1 +backend_ui_users_mail_alias,backend_ui_users_mail_alias,mail.model_mail_alias,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_groups,backend_ui_users_res_groups,base.model_res_groups,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_partner_category,backend_ui_users_res_partner_category,base.model_res_partner_category,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_partner_industry,backend_ui_users_res_partner_industry,base.model_res_partner_industry,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_users_identitycheck,backend_ui_users_res_users_identitycheck,base.model_res_users_identitycheck,group_backend_ui_users,1,1,1,0 +backend_ui_users_res_bank,backend_ui_users_res_bank,base.model_res_bank,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_partner_bank,backend_ui_users_res_partner_bank,base.model_res_partner_bank,group_backend_ui_users,1,0,0,0 diff --git a/base_group_backend/static/description/index.html b/base_group_backend/static/description/index.html index 34383a765..ed78c3816 100644 --- a/base_group_backend/static/description/index.html +++ b/base_group_backend/static/description/index.html @@ -1,20 +1,20 @@ - + - + Group backend