Table actions improvement

Some tables need filter actions for convenience, some create buttons
need "plus" icons, some delete buttons have to be placed at the end
of list for consistency with the rest of UI tables.
This patch fullfills all these needs. Also, all filter actions are
replaced with the very same action from Horizon.

Change-Id: Ie4efd6f10d2344dcf9cd8ad92460e6cd1ed7332b
This commit is contained in:
Tatiana Ovchinnikova 2016-07-12 10:24:24 +03:00
parent bf0571267b
commit 9c9e0afa9b
5 changed files with 85 additions and 68 deletions

View File

@ -36,6 +36,7 @@ class CreateShareType(tables.LinkAction):
verbose_name = _("Create Share Type")
url = "horizon:admin:shares:create_type"
classes = ("ajax-modal", "btn-create")
icon = "plus"
policy_rules = (("share", "share_extension:types_manage"),)
@ -108,14 +109,6 @@ class UpdateShareType(tables.LinkAction):
return {"project_id": project_id}
class ShareTypesFilterAction(tables.FilterAction):
def filter(self, table, share_types, filter_string):
"""Naive case-insensitive search."""
q = filter_string.lower()
return [st for st in share_types if q in st.name.lower()]
class ShareTypesTable(tables.DataTable):
name = tables.Column("name", verbose_name=_("Name"))
extra_specs = tables.Column("extra_specs", verbose_name=_("Extra specs"), )
@ -132,21 +125,14 @@ class ShareTypesTable(tables.DataTable):
class Meta(object):
name = "share_types"
verbose_name = _("Share Types")
table_actions = (CreateShareType, DeleteShareType,
ShareTypesFilterAction, )
table_actions = (
tables.NameFilterAction,
CreateShareType,
DeleteShareType)
row_actions = (
UpdateShareType, DeleteShareType,
UpdateShareType,
ManageShareTypeAccess,
)
class SharesFilterAction(tables.FilterAction):
def filter(self, table, shares, filter_string):
"""Naive case-insensitive search."""
q = filter_string.lower()
return [share for share in shares
if q in share.name.lower()]
DeleteShareType)
class SharesTable(shares_tables.SharesTable):
@ -173,14 +159,12 @@ class SharesTable(shares_tables.SharesTable):
status_columns = ["status"]
row_class = shares_tables.UpdateRow
table_actions = (
shares_tables.DeleteShare,
tables.NameFilterAction,
ManageShareAction,
SharesFilterAction,
)
shares_tables.DeleteShare)
row_actions = (
shares_tables.DeleteShare,
UnmanageShareAction,
)
shares_tables.DeleteShare)
columns = (
'tenant', 'host', 'name', 'size', 'status', 'visibility',
'share_type', 'protocol', 'share_server',
@ -262,8 +246,11 @@ class SnapshotsTable(tables.DataTable):
verbose_name = _("Snapshots")
status_columns = ["status"]
row_class = snapshot_tables.UpdateRow
table_actions = (DeleteSnapshot, )
row_actions = (DeleteSnapshot, )
table_actions = (
tables.NameFilterAction,
DeleteSnapshot)
row_actions = (
DeleteSnapshot,)
class DeleteSecurityService(tables.DeleteAction):
@ -313,8 +300,11 @@ class SecurityServiceTable(tables.DataTable):
class Meta(object):
name = "security_services"
verbose_name = _("Security Services")
table_actions = (DeleteSecurityService,)
row_actions = (DeleteSecurityService,)
table_actions = (
tables.NameFilterAction,
DeleteSecurityService)
row_actions = (
DeleteSecurityService,)
class UpdateShareServerRow(tables.Row):
@ -346,9 +336,12 @@ class NovaShareNetworkTable(tables.DataTable):
class Meta(object):
name = "share_networks"
verbose_name = _("Share Networks")
table_actions = (share_networks_tables.Delete, )
table_actions = (
tables.NameFilterAction,
share_networks_tables.Delete)
row_class = share_networks_tables.UpdateRow
row_actions = (share_networks_tables.Delete, )
row_actions = (
share_networks_tables.Delete,)
class NeutronShareNetworkTable(tables.DataTable):
@ -373,18 +366,12 @@ class NeutronShareNetworkTable(tables.DataTable):
class Meta(object):
name = "share_networks"
verbose_name = _("Share Networks")
table_actions = (share_networks_tables.Delete, )
table_actions = (
tables.NameFilterAction,
share_networks_tables.Delete)
row_class = share_networks_tables.UpdateRow
row_actions = (share_networks_tables.Delete, )
class SharesServersFilterAction(tables.FilterAction):
def filter(self, table, shares, filter_string):
"""Naive case-insensitive search."""
q = filter_string.lower()
return [share for share in shares
if q in share.name.lower()]
row_actions = (
share_networks_tables.Delete,)
class ShareServerTable(tables.DataTable):
@ -432,9 +419,12 @@ class ShareServerTable(tables.DataTable):
name = "share_servers"
status_columns = ["status"]
verbose_name = _("Share Server")
table_actions = (DeleteShareServer, SharesServersFilterAction)
table_actions = (
tables.NameFilterAction,
DeleteShareServer)
row_class = UpdateShareServerRow
row_actions = (DeleteShareServer, )
row_actions = (
DeleteShareServer,)
class ShareInstancesTable(tables.DataTable):
@ -468,7 +458,8 @@ class ShareInstancesTable(tables.DataTable):
name = "share_instances"
verbose_name = _("Share Instances")
status_columns = ("status", )
table_actions = (shares_tables.SharesFilterAction, )
table_actions = (
tables.NameFilterAction,)
multi_select = False
def get_share_network_link(share_instance):

View File

@ -23,6 +23,7 @@ class Create(tables.LinkAction):
verbose_name = _("Create Security Service")
url = "horizon:project:shares:create_security_service"
classes = ("ajax-modal", "btn-create")
icon = "plus"
policy_rules = (("share", "security_service:create"),)
@ -61,5 +62,10 @@ class SecurityServiceTable(tables.DataTable):
class Meta(object):
name = "security_services"
verbose_name = _("Security Services")
table_actions = (Create, Delete)
row_actions = (Edit, Delete,)
table_actions = (
tables.NameFilterAction,
Create,
Delete)
row_actions = (
Edit,
Delete)

View File

@ -36,6 +36,7 @@ class Create(tables.LinkAction):
verbose_name = _("Create Share Network")
url = "horizon:project:shares:create_share_network"
classes = ("ajax-modal", "btn-create")
icon = "plus"
policy_rules = (("share", "share_network:create"),)
@ -105,9 +106,14 @@ class NovaShareNetworkTable(tables.DataTable):
class Meta(object):
name = "share_networks"
verbose_name = _("Share Networks")
table_actions = (Create, Delete, )
table_actions = (
tables.NameFilterAction,
Create,
Delete)
row_class = UpdateRow
row_actions = (EditShareNetwork, Delete, )
row_actions = (
EditShareNetwork,
Delete)
class NeutronShareNetworkTable(tables.DataTable):
@ -148,7 +154,12 @@ class NeutronShareNetworkTable(tables.DataTable):
class Meta(object):
name = "share_networks"
verbose_name = _("Share Networks")
table_actions = (Create, Delete, )
table_actions = (
tables.NameFilterAction,
Create,
Delete)
# status_columns = ["status"]
row_class = UpdateRow
row_actions = (EditShareNetwork, Delete, )
row_actions = (
EditShareNetwork,
Delete)

View File

@ -68,6 +68,7 @@ class CreateShare(tables.LinkAction):
verbose_name = _("Create Share")
url = "horizon:project:shares:create"
classes = ("ajax-modal", "btn-create")
icon = "plus"
policy_rules = (("share", "share:create"),)
def allowed(self, request, share=None):
@ -211,15 +212,6 @@ class SharesTableBase(tables.DataTable):
return obj.name or obj.id
class SharesFilterAction(tables.FilterAction):
def filter(self, table, shares, filter_string):
"""Naive case-insensitive search."""
q = filter_string.lower()
return [share for share in shares
if q in share.name.lower()]
class ManageRules(tables.LinkAction):
name = "manage_rules"
verbose_name = _("Manage Rules")
@ -233,6 +225,7 @@ class AddRule(tables.LinkAction):
verbose_name = _("Add rule")
url = 'horizon:project:shares:rule_add'
classes = ("ajax-modal", "btn-create")
icon = "plus"
policy_rules = (("share", "share:allow_access"),)
def allowed(self, request, share=None):
@ -284,8 +277,11 @@ class RulesTable(tables.DataTable):
verbose_name = _("Rules")
status_columns = ["status"]
row_class = UpdateRuleRow
table_actions = (DeleteRule, AddRule)
row_actions = (DeleteRule, )
table_actions = (
AddRule,
DeleteRule)
row_actions = (
DeleteRule,)
def get_share_network(share):
@ -313,6 +309,14 @@ class SharesTable(SharesTableBase):
verbose_name = _("Shares")
status_columns = ["status"]
row_class = UpdateRow
table_actions = (CreateShare, DeleteShare, SharesFilterAction)
row_actions = (EditShare, ExtendShare, snapshot_tables.CreateSnapshot,
DeleteShare, ManageRules, EditShareMetadata)
table_actions = (
tables.NameFilterAction,
CreateShare,
DeleteShare)
row_actions = (
EditShare,
ExtendShare,
snapshot_tables.CreateSnapshot,
ManageRules,
EditShareMetadata,
DeleteShare)

View File

@ -178,5 +178,10 @@ class SnapshotsTable(tables.DataTable):
verbose_name = _("Snapshots")
status_columns = ["status"]
row_class = UpdateRow
table_actions = (DeleteSnapshot, )
row_actions = (DeleteSnapshot, CreateShareFromSnapshot, EditSnapshot)
table_actions = (
tables.NameFilterAction,
DeleteSnapshot)
row_actions = (
EditSnapshot,
CreateShareFromSnapshot,
DeleteSnapshot)