diff --git a/hide_menu_user/__manifest__.py b/hide_menu_user/__manifest__.py index 49cc3ec6b..2a3001805 100644 --- a/hide_menu_user/__manifest__.py +++ b/hide_menu_user/__manifest__.py @@ -31,7 +31,6 @@ 'website': "https://www.cybrosys.com", 'depends': ['base'], 'data': [ - 'security/security.xml', 'views/res_users_views.xml', ], 'license': 'LGPL-3', diff --git a/hide_menu_user/models/res_users.py b/hide_menu_user/models/res_users.py index fe33da246..babebf142 100644 --- a/hide_menu_user/models/res_users.py +++ b/hide_menu_user/models/res_users.py @@ -19,7 +19,8 @@ # If not, see . # ############################################################################# -from odoo import fields, models + +from odoo import fields, models, api class ResUsers(models.Model): @@ -29,24 +30,21 @@ class ResUsers(models.Model): _inherit = 'res.users' def write(self, vals): - """ - Write method for the ResUsers model. - Ensure the menu will not remain hidden after removing it from the list. - """ - res = super(ResUsers, self).write(vals) + # Store old hide_menu_ids per record + old_hide_menu_map = {record.id: record.hide_menu_ids for record in self} + res = super().write(vals) for record in self: + old_hide_menu_ids = old_hide_menu_map.get(record.id, + self.env['ir.ui.menu']) + + # Add new restrictions for menu in record.hide_menu_ids: - menu.write({ - 'restrict_user_ids': [fields.Command.link(record.id)] - }) - # Handle unlinked menus (removed from hide_menu_ids) - previous_menus = self.env['ir.ui.menu'].search( - [('restrict_user_ids', 'in', [record.id])]) - removed_menus = previous_menus - record.hide_menu_ids + menu.sudo().write({'restrict_user_ids': [(4, record.id)]}) + + # Remove old ones that are no longer selected + removed_menus = old_hide_menu_ids - record.hide_menu_ids for menu in removed_menus: - menu.write({ - 'restrict_user_ids': [fields.Command.unlink(record.id)] - }) + menu.sudo().write({'restrict_user_ids': [(3, record.id)]}) return res def _get_is_admin(self): @@ -63,11 +61,10 @@ class ResUsers(models.Model): 'ir.ui.menu', string="Hidden Menu", store=True, help='Select menu items that need to ' 'be hidden to this user.') - is_admin = fields.Boolean(compute=_get_is_admin, string="Is Admin", + is_admin = fields.Boolean(compute='_get_is_admin', string="Is Admin", help='Check if the user is an admin.') - class IrUiMenu(models.Model): """ Model to restrict the menu for specific users. @@ -77,3 +74,18 @@ class IrUiMenu(models.Model): restrict_user_ids = fields.Many2many( 'res.users', string="Restricted Users", help='Users restricted from accessing this menu.') + + @api.returns('self') + def _filter_visible_menus(self): + """ + Override to filter out menus restricted for current user. + Applies only to the current user context. + """ + menus = super()._filter_visible_menus() + + # Allow system admin to see everything + if self.env.user.has_group('base.group_system'): + return menus + + return menus.filtered( + lambda m: self.env.user not in m.restrict_user_ids) diff --git a/hide_menu_user/security/security.xml b/hide_menu_user/security/security.xml deleted file mode 100644 index 3b2e10cf3..000000000 --- a/hide_menu_user/security/security.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - Restrict Menu from Users - - [('restrict_user_ids','not in',user.id)] - - diff --git a/hide_menu_user/static/description/assets/icons/logo.png b/hide_menu_user/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/hide_menu_user/static/description/assets/icons/logo.png differ diff --git a/hide_menu_user/static/description/assets/misc/categories.png b/hide_menu_user/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/categories.png differ diff --git a/hide_menu_user/static/description/assets/misc/check-box.png b/hide_menu_user/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/check-box.png differ diff --git a/hide_menu_user/static/description/assets/misc/compass.png b/hide_menu_user/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/compass.png differ diff --git a/hide_menu_user/static/description/assets/misc/corporate.png b/hide_menu_user/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/corporate.png differ diff --git a/hide_menu_user/static/description/assets/misc/customer-support.png b/hide_menu_user/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/customer-support.png differ diff --git a/hide_menu_user/static/description/assets/misc/cybrosys-logo.png b/hide_menu_user/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/cybrosys-logo.png differ diff --git a/hide_menu_user/static/description/assets/misc/features.png b/hide_menu_user/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/features.png differ diff --git a/hide_menu_user/static/description/assets/misc/logo.png b/hide_menu_user/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/logo.png differ diff --git a/hide_menu_user/static/description/assets/misc/pictures.png b/hide_menu_user/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/pictures.png differ diff --git a/hide_menu_user/static/description/assets/misc/pie-chart.png b/hide_menu_user/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/pie-chart.png differ diff --git a/hide_menu_user/static/description/assets/misc/right-arrow.png b/hide_menu_user/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/right-arrow.png differ diff --git a/hide_menu_user/static/description/assets/misc/star.png b/hide_menu_user/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/star.png differ diff --git a/hide_menu_user/static/description/assets/misc/support.png b/hide_menu_user/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/support.png differ diff --git a/hide_menu_user/static/description/assets/misc/whatsapp.png b/hide_menu_user/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/hide_menu_user/static/description/assets/misc/whatsapp.png differ diff --git a/hide_menu_user/static/description/assets/modules/budget_image.png b/hide_menu_user/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..b50130c7d Binary files /dev/null and b/hide_menu_user/static/description/assets/modules/budget_image.png differ diff --git a/hide_menu_user/static/description/assets/modules/credit_image.png b/hide_menu_user/static/description/assets/modules/credit_image.png new file mode 100644 index 000000000..3ad04ecfd Binary files /dev/null and b/hide_menu_user/static/description/assets/modules/credit_image.png differ diff --git a/hide_menu_user/static/description/assets/modules/employee_image.png b/hide_menu_user/static/description/assets/modules/employee_image.png new file mode 100644 index 000000000..30ad58232 Binary files /dev/null and b/hide_menu_user/static/description/assets/modules/employee_image.png differ diff --git a/hide_menu_user/static/description/assets/modules/export_image.png b/hide_menu_user/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..492980ad0 Binary files /dev/null and b/hide_menu_user/static/description/assets/modules/export_image.png differ diff --git a/hide_menu_user/static/description/assets/modules/gantt_image.png b/hide_menu_user/static/description/assets/modules/gantt_image.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/hide_menu_user/static/description/assets/modules/gantt_image.png differ diff --git a/hide_menu_user/static/description/assets/modules/quotation_image.png b/hide_menu_user/static/description/assets/modules/quotation_image.png new file mode 100644 index 000000000..499b1a72f Binary files /dev/null and b/hide_menu_user/static/description/assets/modules/quotation_image.png differ diff --git a/hide_menu_user/static/description/assets/screenshots/hero.gif b/hide_menu_user/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..948c0e472 Binary files /dev/null and b/hide_menu_user/static/description/assets/screenshots/hero.gif differ diff --git a/hide_menu_user/static/description/assets/screenshots/screenshot-1.png b/hide_menu_user/static/description/assets/screenshots/screenshot-1.png new file mode 100644 index 000000000..5c466fa16 Binary files /dev/null and b/hide_menu_user/static/description/assets/screenshots/screenshot-1.png differ diff --git a/hide_menu_user/static/description/assets/screenshots/screenshot-2.png b/hide_menu_user/static/description/assets/screenshots/screenshot-2.png new file mode 100644 index 000000000..7c3278324 Binary files /dev/null and b/hide_menu_user/static/description/assets/screenshots/screenshot-2.png differ diff --git a/hide_menu_user/static/description/assets/screenshots/screenshot-3.png b/hide_menu_user/static/description/assets/screenshots/screenshot-3.png new file mode 100644 index 000000000..ec1802327 Binary files /dev/null and b/hide_menu_user/static/description/assets/screenshots/screenshot-3.png differ diff --git a/hide_menu_user/static/description/assets/screenshots/screenshot-4.png b/hide_menu_user/static/description/assets/screenshots/screenshot-4.png new file mode 100644 index 000000000..e9611414e Binary files /dev/null and b/hide_menu_user/static/description/assets/screenshots/screenshot-4.png differ diff --git a/hide_menu_user/static/description/banner.png b/hide_menu_user/static/description/banner.png new file mode 100644 index 000000000..2c8fbb83f Binary files /dev/null and b/hide_menu_user/static/description/banner.png differ diff --git a/hide_menu_user/views/res_users_views.xml b/hide_menu_user/views/res_users_views.xml index ef26d4622..0bb0613c0 100644 --- a/hide_menu_user/views/res_users_views.xml +++ b/hide_menu_user/views/res_users_views.xml @@ -33,4 +33,4 @@ - \ No newline at end of file +