diff --git a/manila_ui/dashboards/admin/share_types/tables.py b/manila_ui/dashboards/admin/share_types/tables.py index 3041da84..8aa603cb 100644 --- a/manila_ui/dashboards/admin/share_types/tables.py +++ b/manila_ui/dashboards/admin/share_types/tables.py @@ -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, ) diff --git a/manila_ui/dashboards/admin/share_types/views.py b/manila_ui/dashboards/admin/share_types/views.py index 6bbb01c1..5ec5c767 100644 --- a/manila_ui/dashboards/admin/share_types/views.py +++ b/manila_ui/dashboards/admin/share_types/views.py @@ -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 diff --git a/releasenotes/notes/filter-share-type-by-extra-spec-2.43-39710ce64f8be239.yaml b/releasenotes/notes/filter-share-type-by-extra-spec-2.43-39710ce64f8be239.yaml new file mode 100644 index 00000000..470af504 --- /dev/null +++ b/releasenotes/notes/filter-share-type-by-extra-spec-2.43-39710ce64f8be239.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Added filter search by extra spec for share type list.