use tables.DeleteAction for DeleteContainer and DeleteObject

* fix bug 953814, hide delete button if table is empty

Change-Id: Iecdbcf4912d4828d5e5174f9acab27e9af95dc61
This commit is contained in:
Andy Chong
2012-03-12 13:47:09 +08:00
parent e206ba6a4c
commit 91b9f1525a

View File

@@ -32,18 +32,20 @@ from horizon import tables
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
class DeleteContainer(tables.Action): class DeleteContainer(tables.DeleteAction):
name = "delete" data_type_singular = _("Container")
verbose_name = _("Delete") data_type_plural = _("Containers")
verbose_name_plural = _("Delete Containers")
classes = ('btn-danger',) def delete(self, request, obj_id):
api.swift_delete_container(request, obj_id)
def handle(self, table, request, object_ids): def handle(self, table, request, object_ids):
# Overriden to show clearer error messages instead of generic message
deleted = [] deleted = []
for obj_id in object_ids: for obj_id in object_ids:
obj = table.get_object_by_id(obj_id) obj = table.get_object_by_id(obj_id)
try: try:
api.swift_delete_container(request, obj_id) self.delete(request, obj_id)
deleted.append(obj) deleted.append(obj)
except ContainerNotEmpty: except ContainerNotEmpty:
LOG.exception('Unable to delete container "%s".' % obj.name) LOG.exception('Unable to delete container "%s".' % obj.name)
@@ -114,28 +116,14 @@ class ContainersTable(tables.DataTable):
row_actions = (ListObjects, UploadObject, DeleteContainer) row_actions = (ListObjects, UploadObject, DeleteContainer)
class DeleteObject(tables.Action): class DeleteObject(tables.DeleteAction):
name = "delete" data_type_singular = _("Object")
verbose_name = _("Delete") data_type_plural = _("Objects")
verbose_name_plural = _("Delete Objects")
classes = ('btn-danger',)
def handle(self, table, request, object_ids): def delete(self, request, obj_id):
deleted = [] obj = self.table.get_object_by_id(obj_id)
for obj_id in object_ids: container_name = obj.container.name
obj = table.get_object_by_id(obj_id) api.swift_delete_object(request, container_name, obj_id)
container_name = obj.container.name
try:
api.swift_delete_object(request, container_name, obj_id)
deleted.append(obj)
except:
exceptions.handle(request, _('Unable to delete object.'))
if deleted:
messages.success(request,
_('Successfully deleted objects: %s')
% ", ".join([obj.name for obj in deleted]))
return shortcuts.redirect('horizon:nova:containers:object_index',
table.kwargs['container_name'])
class CopyObject(tables.LinkAction): class CopyObject(tables.LinkAction):