Purpose ======= Settings are often way too long and hard to scan and sometimes you don't know where to find the settings you're looking for. By adding a left navigation, you can already have an overview of the settings, and switch easily between them. Specification ============= - Add a search bar on all the apps that have settings which can search results from all the installed apps. (If i'm on sales settings,and I search anything then it shows results from sales settings and also shows all the other matching results from all the other apps such as, Inventory...etc) with app name. - Able to activate feature from the current page results (no matter if the searched result is from another apps). - Highlight searched word in results - Delete the sheet, have a full white background - Add left navigation bar on setting - Left navigation bar fixed - List displayed based on installed apps - On right panel, by default display current app setting and change accordingly - [Mobile] Left navigation bar displayed on top - Add Breadcrumb on top of the page: have the name "Settings" + Save / discard CTA + Search - Add General Settings on the nav bar - remove "save this page..." notif in all settings - Delete all recommanded apps section + all checkbox that install app should disappear: payroll: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrSkMzWVpuZ0ZoaFE/view?usp=drivesdk Events: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrYXlHMHd2NTM2blE/view?usp=drivesdk Manufacturing: Delete Repair - Quality Control - Maintenance - Product Lifecycle Management [LAP][ok] Timesheets: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrdFg5XzNydkd2TlU/view?usp=drivesdk project: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrraWo3NE04TktwcTQ/view?usp=drivesdk inventory: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrQkRaVUR5ekFQYTQ/view?usp=drivesdk recruitment: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrbDdqLWQweF80UkE/view?usp=drivesdk purchase: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrRlAyUDBnb0trQWs/view?usp=drivesdk email marketing: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrOUZONjhvX2k3Y2s/view?usp=drivesdk expenses: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrrR0JpN1ZpQmtxU3M/view?usp=drivesdk attendances: https://drive.google.com/a/odoo.com/file/d/0B1uIL9E_zXrralpjZ1VJclNpMWs/view?usp=drivesdk - About duplicate settings: Docsaway: Delete from Sales + delete Default Print Provider Attributs & Variants: Delete from Purchases - Manufacturing Multi-currencies: delete from Sales Unit Of Measures: Delete from Purchase & Expenses - Add a scroll bar on the left bar when there's too many apps - Keep the navbar visible even when you search - Move General Settings to the bottom of the list - Update on Settings: - Accounting: - rename automatic rates - Anglo Saxon Account: Should be in technical feature - Place Accounting Reports section before Taxes section - CRM: - Phone Validation: Enforce international format becomes - Local Numbers: (2 radio buttons proposals) Add international prefix / No prefix - Fleet: typo " ... a new car if ..." + text is too long <br> - project: fix tooltip for colab pads
64 lines
2.7 KiB
Python
64 lines
2.7 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, date_from, date_to):
|
|
has_group_system = request.env.user.has_group('base.group_system')
|
|
has_group_designer = request.env.user.has_group('website.group_website_designer')
|
|
if has_group_system:
|
|
apps_data = dict((app['name'], app) for app in request.env['ir.module.module'].sudo().search_read(
|
|
['|', ('name', 'ilike', 'website'), ('application', '=', True)],
|
|
['id', 'sequence', 'name', 'shortdesc', 'state'],
|
|
order='sequence ASC'))
|
|
else:
|
|
apps_data = {}
|
|
dashboard_data = {
|
|
'groups': {
|
|
'system': has_group_system,
|
|
'website_designer': has_group_designer
|
|
},
|
|
'currency': request.env.user.company_id.currency_id.id,
|
|
'dashboards': {
|
|
'apps_data': apps_data,
|
|
'visits': {},
|
|
}
|
|
}
|
|
if has_group_designer:
|
|
config = request.env['res.config.settings'].sudo().create({})
|
|
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, 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.',
|
|
}
|
|
}
|
|
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,
|
|
}).execute()
|
|
return True
|