Merge "filter search by extra spec for share type list"

This commit is contained in:
Zuul 2021-03-24 23:20:26 +00:00 committed by Gerrit Code Review
commit ee3fd09af6
3 changed files with 35 additions and 1 deletions

View File

@ -81,6 +81,14 @@ class UpdateShareType(tables.LinkAction):
return {"project_id": project_id}
class ShareTypesFilterAction(tables.FilterAction):
filter_type = "server"
filter_choices = (
('name', _("Name "), True),
('extra_specs', _("Extra Spec "), True),
)
class ShareTypesTable(tables.DataTable):
name = tables.WrappingColumn("name", verbose_name=_("Name"))
description = tables.WrappingColumn(
@ -101,7 +109,7 @@ class ShareTypesTable(tables.DataTable):
name = "share_types"
verbose_name = _("Share Types")
table_actions = (
tables.NameFilterAction,
ShareTypesFilterAction,
CreateShareType,
DeleteShareType,
)

View File

@ -45,12 +45,34 @@ class ShareTypesView(tables.MultiTableView):
exceptions.handle(
self.request, _('Unable to retrieve share types.'))
return []
# Convert dict with extra specs to friendly view
for st in share_types:
st.extra_specs = common_utils.metadata_to_str(
st.extra_specs, 8, 45)
share_types = self.get_filters(share_types)
return share_types
def get_filters(self, share_types):
table = self._tables['share_types']
filters = self.get_server_filter_info(table.request, table)
filter_string = filters['value']
filter_field = filters['field']
if filter_string and filter_field:
filtered_data = []
for st in share_types:
if filter_field == 'name':
if st.name == filter_string:
filtered_data.append(st)
if filter_field == 'extra_specs':
if filter_string in st.extra_specs:
filtered_data.append(st)
return filtered_data
else:
return share_types
class CreateShareTypeView(forms.ModalFormView):
form_class = project_forms.CreateShareType

View File

@ -0,0 +1,4 @@
---
features:
- |
Added filter search by extra spec for share type list.