Merge "Add filter to User Credentials table"
This commit is contained in:
commit
f4fee82369
@ -518,9 +518,12 @@ def credential_get(request, credential_id, admin=True):
|
||||
|
||||
|
||||
@profiler.trace
|
||||
def credentials_list(request, user=None):
|
||||
def credentials_list(request, user_id=None, filters=None):
|
||||
manager = keystoneclient(request).credentials
|
||||
return manager.list(user=user)
|
||||
kwargs = {"user_id": user_id}
|
||||
if filters:
|
||||
kwargs.update(filters)
|
||||
return manager.list(**kwargs)
|
||||
|
||||
|
||||
@profiler.trace
|
||||
|
@ -62,6 +62,13 @@ class DeleteCredentialAction(tables.DeleteAction):
|
||||
keystone.credential_delete(request, obj_id)
|
||||
|
||||
|
||||
class CredentialFilterAction(tables.FilterAction):
|
||||
filter_type = "server"
|
||||
filter_choices = (("user_name", _("User Name ="), True),
|
||||
("user_id", _("User ID ="), True),
|
||||
("type", _("Type ="), True),)
|
||||
|
||||
|
||||
def get_user_link(datum):
|
||||
if datum.user_id is not None:
|
||||
return urls.reverse("horizon:identity:users:detail",
|
||||
@ -77,6 +84,7 @@ def get_project_link(datum, request):
|
||||
|
||||
|
||||
class CredentialsTable(tables.DataTable):
|
||||
user_id = tables.WrappingColumn('user_id', verbose_name=_('User ID'))
|
||||
user_name = tables.WrappingColumn('user_name',
|
||||
verbose_name=_('User'),
|
||||
link=get_user_link)
|
||||
@ -97,7 +105,8 @@ class CredentialsTable(tables.DataTable):
|
||||
class Meta(object):
|
||||
name = "credentialstable"
|
||||
verbose_name = _("User Credentials")
|
||||
table_actions = (CreateCredentialAction,
|
||||
table_actions = (CredentialFilterAction,
|
||||
CreateCredentialAction,
|
||||
DeleteCredentialAction)
|
||||
row_actions = (UpdateCredentialAction,
|
||||
DeleteCredentialAction)
|
||||
|
@ -21,9 +21,9 @@ INDEX_VIEW_TEMPLATE = 'horizon/common/_data_table_view.html'
|
||||
|
||||
class UserCredentialsViewTests(test.TestCase):
|
||||
|
||||
def _get_credentials(self, user):
|
||||
def _get_credentials(self, user_id):
|
||||
credentials = [cred for cred in self.credentials.list()
|
||||
if cred.user_id == user.id]
|
||||
if cred.user_id == user_id]
|
||||
return credentials
|
||||
|
||||
@test.create_mocks({api.keystone: ('credentials_list',
|
||||
@ -31,7 +31,7 @@ class UserCredentialsViewTests(test.TestCase):
|
||||
def test_index(self):
|
||||
user = self.users.list()[0]
|
||||
self.mock_user_get.return_value = user
|
||||
credentials = self._get_credentials(user)
|
||||
credentials = self._get_credentials(user.id)
|
||||
self.mock_credentials_list.return_value = credentials
|
||||
|
||||
res = self.client.get(INDEX_URL)
|
||||
|
@ -43,14 +43,31 @@ def get_user_name(request, user_id):
|
||||
return None
|
||||
|
||||
|
||||
@memoized.memoized
|
||||
def get_user_names(request):
|
||||
users = keystone.user_list(request)
|
||||
return {u.name: u.id for u in users}
|
||||
|
||||
|
||||
class CredentialsView(tables.DataTableView):
|
||||
table_class = credential_tables.CredentialsTable
|
||||
page_title = _("User Credentials")
|
||||
policy_rules = (("identity", "identity:list_credentials"),)
|
||||
|
||||
def get_data(self):
|
||||
filters = self.get_filters()
|
||||
|
||||
if 'user_name' in filters:
|
||||
users = get_user_names(self.request)
|
||||
user_id = users.get(filters['user_name'])
|
||||
if user_id is not None:
|
||||
filters = {'user_id': user_id}
|
||||
else:
|
||||
return []
|
||||
|
||||
try:
|
||||
credentials = keystone.credentials_list(self.request)
|
||||
credentials = keystone.credentials_list(
|
||||
self.request, filters=filters)
|
||||
for cred in credentials:
|
||||
cred.project_name = get_project_name(
|
||||
self.request, cred.project_id)
|
||||
|
@ -19,6 +19,7 @@ from openstack_dashboard.dashboards.identity.credentials \
|
||||
|
||||
|
||||
class CredentialsTable(credentials_tables.CredentialsTable):
|
||||
user_id = tables.WrappingColumn('user_id', hidden=True)
|
||||
user_name = tables.WrappingColumn('user_name', hidden=True)
|
||||
|
||||
class Meta(object):
|
||||
|
@ -155,10 +155,11 @@ class GroupsTab(tabs.TableTab):
|
||||
return user_groups
|
||||
|
||||
|
||||
def get_credentials(request, user):
|
||||
def get_credentials(request, user_id):
|
||||
user_credentials = []
|
||||
try:
|
||||
user_credentials = api.keystone.credentials_list(request, user=user)
|
||||
user_credentials = api.keystone.credentials_list(
|
||||
request, user_id=user_id)
|
||||
for cred in user_credentials:
|
||||
cred.project_name = get_project_name(request, cred.project_id)
|
||||
except Exception:
|
||||
@ -178,8 +179,8 @@ class CredentialsTab(tabs.TableTab):
|
||||
policy_rules = (("identity", "identity:list_credentials"),)
|
||||
|
||||
def get_credentialstable_data(self):
|
||||
user = self.tab_group.kwargs['user']
|
||||
return get_credentials(self.request, user)
|
||||
user_id = self.tab_group.kwargs['user'].id
|
||||
return get_credentials(self.request, user_id)
|
||||
|
||||
|
||||
class UserDetailTabs(tabs.DetailTabsGroup):
|
||||
|
@ -31,6 +31,7 @@ class DeleteCredentialAction(credentials_tables.DeleteCredentialAction):
|
||||
|
||||
|
||||
class CredentialsTable(credentials_tables.CredentialsTable):
|
||||
user_id = tables.WrappingColumn('user_id', hidden=True)
|
||||
user_name = tables.WrappingColumn('user_name', hidden=True)
|
||||
|
||||
class Meta(object):
|
||||
|
@ -21,9 +21,9 @@ INDEX_VIEW_TEMPLATE = 'horizon/common/_data_table_view.html'
|
||||
|
||||
class CredentialsViewTests(test.TestCase):
|
||||
|
||||
def _get_credentials(self, user):
|
||||
def _get_credentials(self, user_id):
|
||||
credentials = [cred for cred in self.credentials.list()
|
||||
if cred.user_id == user.id]
|
||||
if cred.user_id == user_id]
|
||||
return credentials
|
||||
|
||||
@test.create_mocks({api.keystone: ('credentials_list',
|
||||
@ -31,7 +31,7 @@ class CredentialsViewTests(test.TestCase):
|
||||
def test_index(self):
|
||||
user = self.users.list()[0]
|
||||
self.mock_user_get.return_value = user
|
||||
credentials = self._get_credentials(user)
|
||||
credentials = self._get_credentials(user.id)
|
||||
self.mock_credentials_list.return_value = credentials
|
||||
|
||||
res = self.client.get(INDEX_URL)
|
||||
|
@ -31,8 +31,8 @@ class CredentialsView(tables.DataTableView):
|
||||
policy_rules = (("identity", "identity:list_credentials"),)
|
||||
|
||||
def get_data(self):
|
||||
user = self.request.user
|
||||
return get_credentials(self.request, user)
|
||||
user_id = self.request.user.id
|
||||
return get_credentials(self.request, user_id)
|
||||
|
||||
|
||||
class UpdateView(credential_views.UpdateView):
|
||||
|
Loading…
x
Reference in New Issue
Block a user