From 167057800bf015cbed193a34ba8dd45691d110ae Mon Sep 17 00:00:00 2001 From: Kishan Gajjar Date: Tue, 8 Nov 2016 11:28:03 +0530 Subject: [PATCH] [IMP] web,website: Only display planner for group_system users Planners should only be visible for "base.group_system" user group (admin settings) because there are links to install apps etc. For now missing access rights messages whenever you click a settings link.Only for admin and not by company. Admin and the user who has "base.group_system" rights can see the planners. --- addons/web/models/ir_http.py | 1 + .../static/src/js/web_planner_backend.js | 5 ++++- .../static/src/js/web_planner_website.js | 22 +++++++++++-------- addons/website/views/website_templates.xml | 1 + odoo/addons/base/res/res_users.py | 5 +++++ 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/addons/web/models/ir_http.py b/addons/web/models/ir_http.py index 1ab8943f835..1964e59bd13 100644 --- a/addons/web/models/ir_http.py +++ b/addons/web/models/ir_http.py @@ -25,6 +25,7 @@ class Http(models.AbstractModel): return { "session_id": request.session.sid, "uid": request.session.uid, + "is_system": request.env.user._is_system(), "is_admin": request.env.user.has_group('base.group_system'), "is_superuser": request.env.user._is_superuser(), "user_context": request.session.get_context() if request.session.uid else {}, diff --git a/addons/web_planner/static/src/js/web_planner_backend.js b/addons/web_planner/static/src/js/web_planner_backend.js index 0a7c4b61c42..3f4391ae8eb 100644 --- a/addons/web_planner/static/src/js/web_planner_backend.js +++ b/addons/web_planner/static/src/js/web_planner_backend.js @@ -5,6 +5,7 @@ var core = require('web.core'); var Model = require('web.Model'); var SystrayMenu = require('web.SystrayMenu'); var planner = require('web.planner.common'); +var session = require('web.session'); var PlannerLauncher = planner.PlannerLauncher.extend({ start: function() { @@ -33,7 +34,9 @@ var PlannerLauncher = planner.PlannerLauncher.extend({ }, }); -SystrayMenu.Items.push(PlannerLauncher); +if (session.is_system) { + SystrayMenu.Items.push(PlannerLauncher); +} return { PlannerLauncher: PlannerLauncher, diff --git a/addons/website/static/src/js/web_planner_website.js b/addons/website/static/src/js/web_planner_website.js index f94b995b830..b2407837481 100644 --- a/addons/website/static/src/js/web_planner_website.js +++ b/addons/website/static/src/js/web_planner_website.js @@ -5,6 +5,7 @@ var ajax = require('web.ajax'); var core = require('web.core'); var Model = require('web.Model'); var planner = require('web.planner.common'); +var session = require('web.session'); var website = require('website.website'); var qweb = core.qweb; @@ -20,13 +21,16 @@ var WebsitePlannerLauncher = planner.PlannerLauncher.extend({ }, }); -website.TopBar.include({ - start: function () { - var websitePlannerLauncher = new WebsitePlannerLauncher(); - var def = ajax.loadXML('/web_planner/static/src/xml/web_planner.xml', qweb).then((function() { - return websitePlannerLauncher.prependTo(this.$(".o_menu_systray")); - }).bind(this)); - return $.when(this._super.apply(this, arguments), def); - }, -}); +if (session.is_system) { + website.TopBar.include({ + start: function () { + var websitePlannerLauncher = new WebsitePlannerLauncher(); + var def = ajax.loadXML('/web_planner/static/src/xml/web_planner.xml', qweb).then((function() { + return websitePlannerLauncher.prependTo(this.$(".o_menu_systray")); + }).bind(this)); + return $.when(this._super.apply(this, arguments), def); + }, + }); +} + }); diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 847f5770f36..6cce24534a4 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -124,6 +124,7 @@ diff --git a/odoo/addons/base/res/res_users.py b/odoo/addons/base/res/res_users.py index ef93e384f8b..45142038b27 100644 --- a/odoo/addons/base/res/res_users.py +++ b/odoo/addons/base/res/res_users.py @@ -565,6 +565,11 @@ class Users(models.Model): # for a few places explicitly clearing the has_group cache has_group.clear_cache = _has_group.clear_cache + @api.multi + def _is_system(self): + self.ensure_one() + return self.has_group('base.group_system') + @api.multi def _is_admin(self): self.ensure_one()