diff options
Diffstat (limited to 'openstack_dashboard/dashboards/admin/projects/tables.py')
-rw-r--r-- | openstack_dashboard/dashboards/admin/projects/tables.py | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/openstack_dashboard/dashboards/admin/projects/tables.py b/openstack_dashboard/dashboards/admin/projects/tables.py deleted file mode 100644 index b6f76e71..00000000 --- a/openstack_dashboard/dashboards/admin/projects/tables.py +++ /dev/null @@ -1,168 +0,0 @@ -import logging - -from django.core.urlresolvers import reverse -from django.utils.http import urlencode -from django.utils.translation import ugettext_lazy as _ - -from horizon import exceptions -from horizon import tables - -from openstack_dashboard import api - -from openstack_dashboard.dashboards.admin.users.tables import UsersTable - - -LOG = logging.getLogger(__name__) - - -class ViewMembersLink(tables.LinkAction): - name = "users" - verbose_name = _("Modify Users") - url = "horizon:admin:projects:update" - classes = ("ajax-modal", "btn-edit") - - def get_link_url(self, project): - step = 'update_members' - base_url = reverse(self.url, args=[project.id]) - param = urlencode({"step": step}) - return "?".join([base_url, param]) - - -class UsageLink(tables.LinkAction): - name = "usage" - verbose_name = _("View Usage") - url = "horizon:admin:projects:usage" - classes = ("btn-stats",) - - -class CreateProject(tables.LinkAction): - name = "create" - verbose_name = _("Create Project") - url = "horizon:admin:projects:create" - classes = ("btn-launch", "ajax-modal",) - - def allowed(self, request, project): - return api.keystone.keystone_can_edit_project() - - -class UpdateProject(tables.LinkAction): - name = "update" - verbose_name = _("Edit Project") - url = "horizon:admin:projects:update" - classes = ("ajax-modal", "btn-edit") - - def allowed(self, request, project): - return api.keystone.keystone_can_edit_project() - - -class ModifyQuotas(tables.LinkAction): - name = "quotas" - verbose_name = "Modify Quotas" - url = "horizon:admin:projects:update" - classes = ("ajax-modal", "btn-edit") - - def get_link_url(self, project): - step = 'update_quotas' - base_url = reverse(self.url, args=[project.id]) - param = urlencode({"step": step}) - return "?".join([base_url, param]) - - -class DeleteTenantsAction(tables.DeleteAction): - data_type_singular = _("Project") - data_type_plural = _("Projects") - - def allowed(self, request, project): - return api.keystone.keystone_can_edit_project() - - def delete(self, request, obj_id): - api.keystone.tenant_delete(request, obj_id) - - -class TenantFilterAction(tables.FilterAction): - def filter(self, table, tenants, filter_string): - """ Really naive case-insensitive search. """ - # FIXME(gabriel): This should be smarter. Written for demo purposes. - q = filter_string.lower() - - def comp(tenant): - if q in tenant.name.lower(): - return True - return False - - return filter(comp, tenants) - - -class TenantsTable(tables.DataTable): - name = tables.Column('name', verbose_name=_('Name')) - description = tables.Column(lambda obj: getattr(obj, 'description', None), - verbose_name=_('Description')) - id = tables.Column('id', verbose_name=_('Project ID')) - enabled = tables.Column('enabled', verbose_name=_('Enabled'), status=True) - - class Meta: - name = "tenants" - verbose_name = _("Projects") - row_actions = (ViewMembersLink, UpdateProject, UsageLink, - ModifyQuotas, DeleteTenantsAction) - table_actions = (TenantFilterAction, CreateProject, - DeleteTenantsAction) - pagination_param = "tenant_marker" - - -class RemoveUserAction(tables.BatchAction): - name = "remove_user" - action_present = _("Remove") - action_past = _("Removed") - data_type_singular = _("User") - data_type_plural = _("Users") - classes = ('btn-danger',) - - def action(self, request, user_id): - tenant_id = self.table.kwargs['tenant_id'] - api.keystone.remove_tenant_user(request, tenant_id, user_id) - - -class ProjectUserRolesColumn(tables.Column): - def get_raw_data(self, user): - request = self.table.request - try: - roles = api.keystone.roles_for_user(request, - user.id, - self.table.kwargs["tenant_id"]) - except: - roles = [] - exceptions.handle(request, - _("Unable to retrieve role information.")) - return ", ".join([role.name for role in roles]) - - -class TenantUsersTable(UsersTable): - roles = ProjectUserRolesColumn("roles", verbose_name=_("Roles")) - - class Meta: - name = "tenant_users" - verbose_name = _("Users For Project") - table_actions = (RemoveUserAction,) - row_actions = (RemoveUserAction,) - columns = ("name", "email", "id", "roles", "enabled") - - -class AddUserAction(tables.LinkAction): - name = "add_user" - verbose_name = _("Add To Project") - url = "horizon:admin:projects:add_user" - classes = ('ajax-modal',) - - def get_link_url(self, user): - tenant_id = self.table.kwargs['tenant_id'] - return reverse(self.url, args=(tenant_id, user.id)) - - -class AddUsersTable(UsersTable): - class Meta: - name = "add_users" - verbose_name = _("Add New Users") - table_actions = () - row_actions = (AddUserAction,) - columns = ("name", "email", "id", "enabled") |