75 lines
2.7 KiB
Python
75 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
from flectra import fields, http
|
|
from flectra.exceptions import AccessError
|
|
from flectra.http import request
|
|
from flectra import release
|
|
|
|
class WebSettingsDashboard(http.Controller):
|
|
|
|
@http.route('/web_settings_dashboard/data', type='json', auth='user')
|
|
def web_settings_dashboard_data(self, **kw):
|
|
if not request.env.user.has_group('base.group_erp_manager'):
|
|
raise AccessError("Access Denied")
|
|
|
|
installed_apps = request.env['ir.module.module'].search_count([
|
|
('application', '=', True),
|
|
('state', 'in', ['installed', 'to upgrade', 'to remove'])
|
|
])
|
|
cr = request.cr
|
|
cr.execute("""
|
|
SELECT count(*)
|
|
FROM res_users
|
|
WHERE active=true AND
|
|
share=false
|
|
""")
|
|
active_count = cr.dictfetchall()[0].get('count')
|
|
|
|
cr.execute("""
|
|
SELECT count(u.*)
|
|
FROM res_users u
|
|
WHERE active=true AND
|
|
NOT exists(SELECT 1 FROM res_users_log WHERE create_uid=u.id)
|
|
""")
|
|
pending_count = cr.dictfetchall()[0].get('count')
|
|
|
|
cr.execute("""
|
|
SELECT id, login
|
|
FROM res_users u
|
|
WHERE active=true
|
|
AND NOT exists(SELECT 1 FROM res_users_log WHERE create_uid=u.id)
|
|
ORDER BY id desc
|
|
LIMIT 10
|
|
""")
|
|
pending_users = cr.fetchall()
|
|
|
|
# See update.py for this computation
|
|
limit_date = datetime.now() - timedelta(15)
|
|
enterprise_users = request.env['res.users'].search_count([("login_date", ">=", fields.Datetime.to_string(limit_date)), ('share', '=', False)])
|
|
|
|
expiration_date = request.env['ir.config_parameter'].sudo().get_param('database.expiration_date')
|
|
return {
|
|
'apps': {
|
|
'installed_apps': installed_apps,
|
|
'enterprise_users': enterprise_users,
|
|
},
|
|
'users_info': {
|
|
'active_users': active_count,
|
|
'pending_count': pending_count,
|
|
'pending_users': pending_users,
|
|
'user_form_view_id': request.env['ir.model.data'].xmlid_to_res_id("base.view_users_form"),
|
|
},
|
|
'share': {
|
|
'server_version': release.version,
|
|
'expiration_date': expiration_date,
|
|
'debug': request.debug,
|
|
},
|
|
'company': {
|
|
'company_id': request.env.user.company_id.id,
|
|
'company_name': request.env.user.company_id.name
|
|
}
|
|
}
|