13
13
from django.template import defaultfilters
14
14
from django.utils.translation import ugettext_lazy as _
15
from django.utils.translation import ungettext_lazy
16
17
from horizon import messages
17
18
from horizon import tables
19
20
from openstack_dashboard import api
21
from openstack_dashboard import policy
38
40
return api.keystone.keystone_can_edit_user()
41
class EditUserLink(tables.LinkAction):
43
class EditUserLink(policy.PolicyTargetMixin, tables.LinkAction):
43
45
verbose_name = _("Edit")
44
46
url = "horizon:identity:users:update"
47
49
policy_rules = (("identity", "identity:update_user"),
48
50
("identity", "identity:list_projects"),)
50
def get_policy_target(self, request, user):
51
return {"user_id": user.id}
51
policy_target_attrs = (("user_id", "id"),)
53
53
def allowed(self, request, user):
54
54
return api.keystone.keystone_can_edit_user()
57
class ToggleEnabled(tables.BatchAction):
57
class ToggleEnabled(policy.PolicyTargetMixin, tables.BatchAction):
59
action_present = (_("Enable"), _("Disable"))
60
action_past = (_("Enabled"), _("Disabled"))
61
data_type_singular = _("User")
62
data_type_plural = _("Users")
61
def action_present(count):
76
def action_past(count):
63
89
classes = ("btn-toggle",)
64
90
policy_rules = (("identity", "identity:update_user"),)
66
def get_policy_target(self, request, user=None):
68
return {"user_id": user.id}
91
policy_target_attrs = (("user_id", "id"),)
71
93
def allowed(self, request, user=None):
72
94
if not api.keystone.keystone_can_edit_user():
103
125
class DeleteUsersAction(tables.DeleteAction):
104
data_type_singular = _("User")
105
data_type_plural = _("Users")
127
def action_present(count):
128
return ungettext_lazy(
135
def action_past(count):
136
return ungettext_lazy(
106
141
policy_rules = (("identity", "identity:delete_user"),)
108
143
def allowed(self, request, datum):