summaryrefslogtreecommitdiff
path: root/openstack_dashboard/dashboards/admin/projects/tables.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstack_dashboard/dashboards/admin/projects/tables.py')
-rw-r--r--openstack_dashboard/dashboards/admin/projects/tables.py168
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")