Files
horizon/openstack_dashboard/dashboards/identity/users/tabs.py
David Gutman d66df58e2d Add group tab in user details view.
Add an extra tab "groups" in the user details view which
displays the groups of the user.

The groups are displayed in a table which is an extansion
(inheritance) of the group table used in the Group panel.

Change-Id: I0ffaafaeacba0a0863c2550ac1e3649c9dd85983
Partial-Bug: #1792524
2018-12-20 08:32:53 +00:00

90 lines
2.7 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import tabs
from openstack_dashboard import api
from openstack_dashboard.dashboards.identity.users.groups \
import tables as groups_tables
from openstack_dashboard.dashboards.identity.users.role_assignments \
import tables as role_assignments_tables
class OverviewTab(tabs.Tab):
"""Overview of the user.
Global user informations such as user name, domain ID, email...
"""
name = _("Overview")
slug = "overview"
template_name = 'identity/users/_detail_overview.html'
def get_context_data(self, request):
return {"user": self.tab_group.kwargs['user']}
class RoleAssignmentsTab(tabs.TableTab):
"""Role assignment of the user to domain/project."""
table_classes = (role_assignments_tables.RoleAssignmentsTable,)
name = _("Role assignments")
slug = "roleassignments"
template_name = "horizon/common/_detail_table.html"
preload = False
def get_roleassignmentstable_data(self):
user = self.tab_group.kwargs['user']
try:
# Get all the roles of the user
user_roles = api.keystone.role_assignments_list(
self.request, user=user, include_subtree=False,
include_names=True)
return user_roles
except Exception:
exceptions.handle(
self.request,
_("Unable to display the role assignments of this user."))
return []
class GroupsTab(tabs.TableTab):
"""Groups of the user."""
table_classes = (groups_tables.GroupsTable,)
name = _("Groups")
slug = "groups"
template_name = "horizon/common/_detail_table.html"
preload = False
def get_groupstable_data(self):
user_groups = []
user = self.tab_group.kwargs['user']
try:
user_groups = api.keystone.group_list(self.request, user=user.id)
except Exception:
exceptions.handle(self.request,
_("Unable to display the groups of this user."))
return user_groups
class UserDetailTabs(tabs.DetailTabsGroup):
slug = "user_details"
tabs = (OverviewTab, RoleAssignmentsTab, GroupsTab,)