# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import http from odoo.http import request from odoo.tools.translate import _ class WebsiteBackend(http.Controller): @http.route('/website/fetch_dashboard_data', type="json", auth='user') def fetch_dashboard_data(self, website_id, date_from, date_to): Website = request.env['website'] has_group_system = request.env.user.has_group('base.group_system') has_group_designer = request.env.user.has_group('website.group_website_designer') dashboard_data = { 'groups': { 'system': has_group_system, 'website_designer': has_group_designer }, 'currency': request.env.company.currency_id.id, 'dashboards': { 'visits': {}, } } current_website = website_id and Website.browse(website_id) or Website.get_current_website() multi_website = request.env.user.has_group('website.group_multi_website') websites = multi_website and request.env['website'].search([]) or current_website dashboard_data['websites'] = websites.read(['id', 'name']) for rec, website in zip(websites, dashboard_data['websites']): website['domain'] = rec._get_http_domain() if website['id'] == current_website.id: website['selected'] = True if has_group_designer: if current_website.google_management_client_id and current_website.google_analytics_key: dashboard_data['dashboards']['visits'] = dict( ga_client_id=current_website.google_management_client_id or '', ga_analytics_key=current_website.google_analytics_key or '', ) return dashboard_data @http.route('/website/dashboard/set_ga_data', type='json', auth='user') def website_set_ga_data(self, website_id, ga_client_id, ga_analytics_key): if not request.env.user.has_group('base.group_system'): return { 'error': { 'title': _('Access Error'), 'message': _('You do not have sufficient rights to perform that action.'), } } if not ga_analytics_key or not ga_client_id.endswith('.apps.googleusercontent.com'): return { 'error': { 'title': _('Incorrect Client ID / Key'), 'message': _('The Google Analytics Client ID or Key you entered seems incorrect.'), } } Website = request.env['website'] current_website = website_id and Website.browse(website_id) or Website.get_current_website() request.env['res.config.settings'].create({ 'google_management_client_id': ga_client_id, 'google_analytics_key': ga_analytics_key, 'website_id': current_website.id, }).execute() return True