Files
superset2/superset/views/utils.py
Hugh A. Miles II 11ea83ecf1 New Landing Page v1.0 (#4463)
* Updated welcome landing page

* fixed test and linting

* linting

* addressing comments

* fix test

* fix test

* remove unneeded var

* add magic comments
2018-02-26 17:02:41 -08:00

68 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from collections import defaultdict
from flask import g
from flask_appbuilder.security.sqla import models as ab_models
from superset import db
def bootstrap_user_data(username=None, include_perms=False):
if username:
username = username
else:
username = g.user.username
user = (
db.session.query(ab_models.User)
.filter_by(username=username)
.one()
)
payload = {
'username': user.username,
'firstName': user.first_name,
'lastName': user.last_name,
'userId': user.id,
'isActive': user.is_active(),
'createdOn': user.created_on.isoformat(),
'email': user.email,
}
if include_perms:
roles, permissions = get_permissions(user)
payload['roles'] = roles
payload['permissions'] = permissions
return payload
def get_permissions(user):
if not user.roles:
raise AttributeError('User object does not have roles')
roles = {}
permissions = defaultdict(set)
for role in user.roles:
perms = set()
for perm in role.permissions:
if perm.permission and perm.view_menu:
perms.add(
(perm.permission.name, perm.view_menu.name),
)
if perm.permission.name in ('datasource_access',
'database_access'):
permissions[perm.permission.name].add(perm.view_menu.name)
roles[role.name] = [
[perm.permission.name, perm.view_menu.name]
for perm in role.permissions
if perm.permission and perm.view_menu
]
return roles, permissions