Set up env & tools for module website multiwebsite (blog, event, sale..)
website_id in modelConverter and ir_rule
add _compute_domain_keys to have a different cache per website
or rules would not be correctly website_dependant
eg: blog 1 on website 1, blog 2 on website 2
access blog 1 from website 1 => can access -> normal
access blog 1 from website 2 => can access -> should crash because (ir rule)
split mixing website.published.mixin and website.published.multi.mixin to have
website_id only on last one.
multi mixing will:
- override website_published compute to take current_website into account (not in backend)
- force website when clicking on published in backend
- website blog, website_sale, website_event, website_forum, website_slides are now multi website
Co-authored-by: Derie Romain <rde@odoo.com>
Co-authored-by: Kersten Jérémy <jke@odoo.com>
69 lines
2.9 KiB
Python
69 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
|
|
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.user.company_id.currency_id.id,
|
|
'dashboards': {
|
|
'visits': {},
|
|
}
|
|
}
|
|
|
|
current_website = website_id and Website.browse(website_id) or Website.get_current_website()
|
|
dashboard_data['websites'] = request.env['website'].search_read([], ['id', 'name'])
|
|
for website in dashboard_data['websites']:
|
|
if website['id'] == current_website.id:
|
|
website['selected'] = True
|
|
|
|
if has_group_designer:
|
|
config = request.env['res.config.settings'].sudo().create({})
|
|
config.website_id = current_website
|
|
if config.has_google_analytics_dashboard:
|
|
dashboard_data['dashboards']['visits'] = dict(
|
|
ga_client_id=config.google_management_client_id or '', # void string instead of stringified False
|
|
ga_analytics_key=config.google_analytics_key or '', # void string instead of stringified False
|
|
)
|
|
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({
|
|
'has_google_analytics': True,
|
|
'has_google_analytics_dashboard': True,
|
|
'google_management_client_id': ga_client_id,
|
|
'google_analytics_key': ga_analytics_key,
|
|
'website_id': current_website,
|
|
}).execute()
|
|
return True
|