Use action_present/past methods in BatchAction
action_present/past methods were introduced in BatchAction to allow translators to control word orders and plural forms. This patch replaces the remaining old attribute version of action_present/past with the method version. Change-Id: I9f1cc8ff862471f33a5cb40f9e210c5222b7fb94 Partial-Bug: #1307476
This commit is contained in:
parent
8c25a205c9
commit
969ff4828b
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
from django.template.defaultfilters import title # noqa
|
from django.template.defaultfilters import title # noqa
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.utils.translation import ungettext_lazy
|
||||||
|
|
||||||
from horizon import tables
|
from horizon import tables
|
||||||
from horizon.utils import filters
|
from horizon.utils import filters
|
||||||
@ -31,13 +32,25 @@ class AdminEditInstance(project_tables.EditInstance):
|
|||||||
|
|
||||||
class MigrateInstance(policy.PolicyTargetMixin, tables.BatchAction):
|
class MigrateInstance(policy.PolicyTargetMixin, tables.BatchAction):
|
||||||
name = "migrate"
|
name = "migrate"
|
||||||
action_present = _("Migrate")
|
|
||||||
action_past = _("Scheduled migration (pending confirmation) of")
|
|
||||||
data_type_singular = _("Instance")
|
|
||||||
data_type_plural = _("Instances")
|
|
||||||
classes = ("btn-migrate", "btn-danger")
|
classes = ("btn-migrate", "btn-danger")
|
||||||
policy_rules = (("compute", "compute_extension:admin_actions:migrate"),)
|
policy_rules = (("compute", "compute_extension:admin_actions:migrate"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Migrate Instance",
|
||||||
|
u"Migrate Instances",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled migration (pending confirmation) of Instance",
|
||||||
|
u"Scheduled migration (pending confirmation) of Instances",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
def allowed(self, request, instance):
|
def allowed(self, request, instance):
|
||||||
return ((instance.status in project_tables.ACTIVE_STATES
|
return ((instance.status in project_tables.ACTIVE_STATES
|
||||||
or instance.status == 'SHUTOFF')
|
or instance.status == 'SHUTOFF')
|
||||||
|
@ -17,6 +17,7 @@ from django.core.urlresolvers import reverse
|
|||||||
from django.template import defaultfilters as filters
|
from django.template import defaultfilters as filters
|
||||||
from django.utils import http
|
from django.utils import http
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.utils.translation import ungettext_lazy
|
||||||
|
|
||||||
from horizon import exceptions
|
from horizon import exceptions
|
||||||
from horizon import tables
|
from horizon import tables
|
||||||
@ -72,12 +73,24 @@ class AddMonitorLink(tables.LinkAction):
|
|||||||
|
|
||||||
class DeleteVipLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
class DeleteVipLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
||||||
name = "deletevip"
|
name = "deletevip"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("VIP")
|
|
||||||
data_type_plural = _("VIPs")
|
|
||||||
policy_rules = (("network", "delete_vip"),)
|
policy_rules = (("network", "delete_vip"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete VIP",
|
||||||
|
u"Delete VIPs",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of VIP",
|
||||||
|
u"Scheduled deletion of VIPs",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
def allowed(self, request, datum=None):
|
def allowed(self, request, datum=None):
|
||||||
if datum and not datum.vip_id:
|
if datum and not datum.vip_id:
|
||||||
return False
|
return False
|
||||||
@ -86,12 +99,24 @@ class DeleteVipLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
|||||||
|
|
||||||
class DeletePoolLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
class DeletePoolLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
||||||
name = "deletepool"
|
name = "deletepool"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("Pool")
|
|
||||||
data_type_plural = _("Pools")
|
|
||||||
policy_rules = (("network", "delete_pool"),)
|
policy_rules = (("network", "delete_pool"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete Pool",
|
||||||
|
u"Delete Pools",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of Pool",
|
||||||
|
u"Scheduled deletion of Pools",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
def allowed(self, request, datum=None):
|
def allowed(self, request, datum=None):
|
||||||
if datum and datum.vip_id:
|
if datum and datum.vip_id:
|
||||||
return False
|
return False
|
||||||
@ -101,21 +126,45 @@ class DeletePoolLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
|||||||
class DeleteMonitorLink(policy.PolicyTargetMixin,
|
class DeleteMonitorLink(policy.PolicyTargetMixin,
|
||||||
tables.DeleteAction):
|
tables.DeleteAction):
|
||||||
name = "deletemonitor"
|
name = "deletemonitor"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("Monitor")
|
|
||||||
data_type_plural = _("Monitors")
|
|
||||||
policy_rules = (("network", "delete_health_monitor"),)
|
policy_rules = (("network", "delete_health_monitor"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete Monitor",
|
||||||
|
u"Delete Monitors",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of Monitor",
|
||||||
|
u"Scheduled deletion of Monitors",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DeleteMemberLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
class DeleteMemberLink(policy.PolicyTargetMixin, tables.DeleteAction):
|
||||||
name = "deletemember"
|
name = "deletemember"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("Member")
|
|
||||||
data_type_plural = _("Members")
|
|
||||||
policy_rules = (("network", "delete_member"),)
|
policy_rules = (("network", "delete_member"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete Member",
|
||||||
|
u"Delete Members",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of Member",
|
||||||
|
u"Scheduled deletion of Members",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UpdatePoolLink(policy.PolicyTargetMixin, tables.LinkAction):
|
class UpdatePoolLink(policy.PolicyTargetMixin, tables.LinkAction):
|
||||||
name = "updatepool"
|
name = "updatepool"
|
||||||
|
@ -379,13 +379,26 @@ class VolumesTable(VolumesTableBase):
|
|||||||
|
|
||||||
class DetachVolume(tables.BatchAction):
|
class DetachVolume(tables.BatchAction):
|
||||||
name = "detach"
|
name = "detach"
|
||||||
action_present = _("Detach")
|
|
||||||
action_past = _("Detaching") # This action is asynchronous.
|
|
||||||
data_type_singular = _("Volume")
|
|
||||||
data_type_plural = _("Volumes")
|
|
||||||
classes = ('btn-danger', 'btn-detach')
|
classes = ('btn-danger', 'btn-detach')
|
||||||
policy_rules = (("compute", "compute:detach_volume"),)
|
policy_rules = (("compute", "compute:detach_volume"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Detach Volume",
|
||||||
|
u"Detach Volumes",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
# This action is asynchronous.
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Detaching Volume",
|
||||||
|
u"Detaching Volumes",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
def action(self, request, obj_id):
|
def action(self, request, obj_id):
|
||||||
attachment = self.table.get_object_by_id(obj_id)
|
attachment = self.table.get_object_by_id(obj_id)
|
||||||
api.nova.instance_volume_detach(request,
|
api.nova.instance_volume_detach(request,
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.template.defaultfilters import title # noqa
|
from django.template.defaultfilters import title # noqa
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django.utils.translation import ungettext_lazy
|
||||||
|
|
||||||
from horizon import tables
|
from horizon import tables
|
||||||
from horizon.utils import filters
|
from horizon.utils import filters
|
||||||
@ -64,12 +65,24 @@ class AddIPSecSiteConnectionLink(tables.LinkAction):
|
|||||||
|
|
||||||
class DeleteVPNServiceLink(tables.DeleteAction):
|
class DeleteVPNServiceLink(tables.DeleteAction):
|
||||||
name = "deletevpnservice"
|
name = "deletevpnservice"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("VPN Service")
|
|
||||||
data_type_plural = _("VPN Services")
|
|
||||||
policy_rules = (("network", "delete_vpnservice"),)
|
policy_rules = (("network", "delete_vpnservice"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete VPN Service",
|
||||||
|
u"Delete VPN Services",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of VPN Service",
|
||||||
|
u"Scheduled deletion of VPN Services",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
def allowed(self, request, datum=None):
|
def allowed(self, request, datum=None):
|
||||||
if datum and datum.ipsecsiteconns:
|
if datum and datum.ipsecsiteconns:
|
||||||
return False
|
return False
|
||||||
@ -78,12 +91,24 @@ class DeleteVPNServiceLink(tables.DeleteAction):
|
|||||||
|
|
||||||
class DeleteIKEPolicyLink(tables.DeleteAction):
|
class DeleteIKEPolicyLink(tables.DeleteAction):
|
||||||
name = "deleteikepolicy"
|
name = "deleteikepolicy"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("IKE Policy")
|
|
||||||
data_type_plural = _("IKE Policies")
|
|
||||||
policy_rules = (("network", "delete_ikepolicy"),)
|
policy_rules = (("network", "delete_ikepolicy"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete IKE Policy",
|
||||||
|
u"Delete IKE Policies",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of IKE Policy",
|
||||||
|
u"Scheduled deletion of IKE Policies",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
def allowed(self, request, datum=None):
|
def allowed(self, request, datum=None):
|
||||||
if datum and datum.ipsecsiteconns:
|
if datum and datum.ipsecsiteconns:
|
||||||
return False
|
return False
|
||||||
@ -92,12 +117,24 @@ class DeleteIKEPolicyLink(tables.DeleteAction):
|
|||||||
|
|
||||||
class DeleteIPSecPolicyLink(tables.DeleteAction):
|
class DeleteIPSecPolicyLink(tables.DeleteAction):
|
||||||
name = "deleteipsecpolicy"
|
name = "deleteipsecpolicy"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("IPSec Policy")
|
|
||||||
data_type_plural = _("IPSec Policies")
|
|
||||||
policy_rules = (("network", "delete_ipsecpolicy"),)
|
policy_rules = (("network", "delete_ipsecpolicy"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete IPSec Policy",
|
||||||
|
u"Delete IPSec Policies",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of IPSec Policy",
|
||||||
|
u"Scheduled deletion of IPSec Policies",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
def allowed(self, request, datum=None):
|
def allowed(self, request, datum=None):
|
||||||
if datum and datum.ipsecsiteconns:
|
if datum and datum.ipsecsiteconns:
|
||||||
return False
|
return False
|
||||||
@ -106,12 +143,24 @@ class DeleteIPSecPolicyLink(tables.DeleteAction):
|
|||||||
|
|
||||||
class DeleteIPSecSiteConnectionLink(tables.DeleteAction):
|
class DeleteIPSecSiteConnectionLink(tables.DeleteAction):
|
||||||
name = "deleteipsecsiteconnection"
|
name = "deleteipsecsiteconnection"
|
||||||
action_present = _("Delete")
|
|
||||||
action_past = _("Scheduled deletion of %(data_type)s")
|
|
||||||
data_type_singular = _("IPSec Site Connection")
|
|
||||||
data_type_plural = _("IPSec Site Connections")
|
|
||||||
policy_rules = (("network", "delete_ipsec_site_connection"),)
|
policy_rules = (("network", "delete_ipsec_site_connection"),)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_present(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Delete IPSec Site Connection",
|
||||||
|
u"Delete IPSec Site Connections",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def action_past(count):
|
||||||
|
return ungettext_lazy(
|
||||||
|
u"Scheduled deletion of IPSec Site Connection",
|
||||||
|
u"Scheduled deletion of IPSec Site Connections",
|
||||||
|
count
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UpdateVPNServiceLink(tables.LinkAction):
|
class UpdateVPNServiceLink(tables.LinkAction):
|
||||||
name = "update_vpnservice"
|
name = "update_vpnservice"
|
||||||
|
Loading…
Reference in New Issue
Block a user