Merge "filter search by extra spec for share type list"
This commit is contained in:
@@ -81,6 +81,14 @@ class UpdateShareType(tables.LinkAction):
|
|||||||
return {"project_id": project_id}
|
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):
|
class ShareTypesTable(tables.DataTable):
|
||||||
name = tables.WrappingColumn("name", verbose_name=_("Name"))
|
name = tables.WrappingColumn("name", verbose_name=_("Name"))
|
||||||
description = tables.WrappingColumn(
|
description = tables.WrappingColumn(
|
||||||
@@ -101,7 +109,7 @@ class ShareTypesTable(tables.DataTable):
|
|||||||
name = "share_types"
|
name = "share_types"
|
||||||
verbose_name = _("Share Types")
|
verbose_name = _("Share Types")
|
||||||
table_actions = (
|
table_actions = (
|
||||||
tables.NameFilterAction,
|
ShareTypesFilterAction,
|
||||||
CreateShareType,
|
CreateShareType,
|
||||||
DeleteShareType,
|
DeleteShareType,
|
||||||
)
|
)
|
||||||
|
@@ -45,12 +45,34 @@ class ShareTypesView(tables.MultiTableView):
|
|||||||
exceptions.handle(
|
exceptions.handle(
|
||||||
self.request, _('Unable to retrieve share types.'))
|
self.request, _('Unable to retrieve share types.'))
|
||||||
return []
|
return []
|
||||||
|
|
||||||
# Convert dict with extra specs to friendly view
|
# Convert dict with extra specs to friendly view
|
||||||
for st in share_types:
|
for st in share_types:
|
||||||
st.extra_specs = common_utils.metadata_to_str(
|
st.extra_specs = common_utils.metadata_to_str(
|
||||||
st.extra_specs, 8, 45)
|
st.extra_specs, 8, 45)
|
||||||
|
share_types = self.get_filters(share_types)
|
||||||
return 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):
|
class CreateShareTypeView(forms.ModalFormView):
|
||||||
form_class = project_forms.CreateShareType
|
form_class = project_forms.CreateShareType
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Added filter search by extra spec for share type list.
|
Reference in New Issue
Block a user