From b5b276f55255d03f14f39699d2cab6b4dd5367e7 Mon Sep 17 00:00:00 2001 From: karuna Date: Tue, 10 Mar 2026 10:45:00 +0530 Subject: [PATCH] Module Master Selector --- .../module_selector_sidebar/__init__.py | 1 + .../module_selector_sidebar/__manifest__.py | 12 ++++++ .../controllers/__init__.py | 1 + .../controllers/master_switcher.py | 14 +++++++ .../static/src/css/module_switcher.css | 22 +++++++++++ .../static/src/js/module_switcher.js | 37 +++++++++++++++++++ .../static/src/xml/module_switcher.xml | 34 +++++++++++++++++ .../my_custom_kudo_link/__manifest__.py | 5 +++ .../my_custom_kudo_link/models/__init__.py | 4 ++ 9 files changed, 130 insertions(+) create mode 100644 addons_extensions/module_selector_sidebar/__init__.py create mode 100644 addons_extensions/module_selector_sidebar/__manifest__.py create mode 100644 addons_extensions/module_selector_sidebar/controllers/__init__.py create mode 100644 addons_extensions/module_selector_sidebar/controllers/master_switcher.py create mode 100644 addons_extensions/module_selector_sidebar/static/src/css/module_switcher.css create mode 100644 addons_extensions/module_selector_sidebar/static/src/js/module_switcher.js create mode 100644 addons_extensions/module_selector_sidebar/static/src/xml/module_switcher.xml diff --git a/addons_extensions/module_selector_sidebar/__init__.py b/addons_extensions/module_selector_sidebar/__init__.py new file mode 100644 index 000000000..a03bfd097 --- /dev/null +++ b/addons_extensions/module_selector_sidebar/__init__.py @@ -0,0 +1 @@ +from . import controllers \ No newline at end of file diff --git a/addons_extensions/module_selector_sidebar/__manifest__.py b/addons_extensions/module_selector_sidebar/__manifest__.py new file mode 100644 index 000000000..8765522f9 --- /dev/null +++ b/addons_extensions/module_selector_sidebar/__manifest__.py @@ -0,0 +1,12 @@ +{ + "name": "Custom Module Switcher", + "version": "1.0", + "depends": ["web"], + "assets": { + "web.assets_backend": [ + "module_selector_sidebar/static/src/js/module_switcher.js", + "module_selector_sidebar/static/src/xml/module_switcher.xml", + ], + }, + "installable": True, +} \ No newline at end of file diff --git a/addons_extensions/module_selector_sidebar/controllers/__init__.py b/addons_extensions/module_selector_sidebar/controllers/__init__.py new file mode 100644 index 000000000..f92dc7642 --- /dev/null +++ b/addons_extensions/module_selector_sidebar/controllers/__init__.py @@ -0,0 +1 @@ +from . import master_switcher \ No newline at end of file diff --git a/addons_extensions/module_selector_sidebar/controllers/master_switcher.py b/addons_extensions/module_selector_sidebar/controllers/master_switcher.py new file mode 100644 index 000000000..4dcae1aaa --- /dev/null +++ b/addons_extensions/module_selector_sidebar/controllers/master_switcher.py @@ -0,0 +1,14 @@ +from odoo import http +from odoo.http import request + + +class MasterSwitcher(http.Controller): + + @http.route('/switch/master/', type='http', auth='user') + def switch_master(self, code): + + request.session['active_master'] = code + + request.env['ir.ui.menu'].sudo().clear_caches() + + return request.redirect('/web?reload=1') \ No newline at end of file diff --git a/addons_extensions/module_selector_sidebar/static/src/css/module_switcher.css b/addons_extensions/module_selector_sidebar/static/src/css/module_switcher.css new file mode 100644 index 000000000..e100b8716 --- /dev/null +++ b/addons_extensions/module_selector_sidebar/static/src/css/module_switcher.css @@ -0,0 +1,22 @@ +.custom-switcher { + position: fixed; + left: 0; + top: 40%; + width: 180px; + background: white; + padding: 15px; + box-shadow: 2px 2px 10px rgba(0,0,0,0.15); + z-index: 9999; + border-radius: 0 10px 10px 0; +} + +.switcher-title { + font-weight: bold; + margin-bottom: 10px; +} + +.custom-switcher button { + width: 100%; + margin-bottom: 8px; + padding: 6px; +} \ No newline at end of file diff --git a/addons_extensions/module_selector_sidebar/static/src/js/module_switcher.js b/addons_extensions/module_selector_sidebar/static/src/js/module_switcher.js new file mode 100644 index 000000000..d80a7ce61 --- /dev/null +++ b/addons_extensions/module_selector_sidebar/static/src/js/module_switcher.js @@ -0,0 +1,37 @@ +/** @odoo-module **/ + +import { Component, onWillStart, useState } from "@odoo/owl"; +import { registry } from "@web/core/registry"; +import { useService } from "@web/core/utils/hooks"; + +export class ModuleSelector extends Component { + + static template = "module_selector_sidebar.ModuleSelector"; + static props = {}; + + setup() { + + this.orm = useService("orm"); + + this.state = useState({ + masters: [], + }); + + onWillStart(async () => { + + const masters = await this.orm.searchRead( + "master.control", + [], + ["name", "code"] + ); + + this.state.masters = masters; + + }); + } + +} + +registry.category("systray").add("module_selector_sidebar", { + Component: ModuleSelector, +}); \ No newline at end of file diff --git a/addons_extensions/module_selector_sidebar/static/src/xml/module_switcher.xml b/addons_extensions/module_selector_sidebar/static/src/xml/module_switcher.xml new file mode 100644 index 000000000..824b883d1 --- /dev/null +++ b/addons_extensions/module_selector_sidebar/static/src/xml/module_switcher.xml @@ -0,0 +1,34 @@ + + + + + + + + + \ No newline at end of file diff --git a/addons_extensions/my_custom_kudo_link/__manifest__.py b/addons_extensions/my_custom_kudo_link/__manifest__.py index 32802fe99..9908831e7 100644 --- a/addons_extensions/my_custom_kudo_link/__manifest__.py +++ b/addons_extensions/my_custom_kudo_link/__manifest__.py @@ -14,6 +14,11 @@ # 'views/project_task_kudo_button.xml', 'views/task_assign_kudos_action.xml', 'views/kudo_log_extend.xml', + 'views/task_form_extend.xml', + 'views/task_timesheet_employee_domain.xml', + 'views/task_timesheet_context.xml', + # 'views/task_timesheet_stage_domain.xml', + ], 'post_init_hook': 'post_init_hook', 'installable': True, diff --git a/addons_extensions/my_custom_kudo_link/models/__init__.py b/addons_extensions/my_custom_kudo_link/models/__init__.py index 652b4b67d..f9f076655 100644 --- a/addons_extensions/my_custom_kudo_link/models/__init__.py +++ b/addons_extensions/my_custom_kudo_link/models/__init__.py @@ -1 +1,5 @@ from . import project_kudo_extend +from . import task_assignee_domain +from . import project_task +from . import account_analytic_line +