horizon/openstack_dashboard/dashboards/admin/metadata_defs/tables.py
Akihiro Motoki cd7c1b5110 Address RemovedInDjango40Warning (2)
django.utils.translation.ugettext(), ugettext_lazy(), ugettext_noop(),
ungettext(), and ungettext_lazy() are deprecated in favor of the
functions that they’re aliases for: django.utils.translation.gettext(),
gettext_lazy(), gettext_noop(), ngettext(), and ngettext_lazy().

https://docs.djangoproject.com/en/4.0/releases/3.0/#id3

Change-Id: I77878f84e9d10cf6a136dada81eabf4e18676250
2022-02-04 16:22:07 +09:00

152 lines
4.9 KiB
Python

# (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from django.template import defaultfilters as filters
from django.utils.translation import gettext_lazy as _
from django.utils.translation import ngettext_lazy
from horizon import forms
from horizon import tables
from openstack_dashboard.api import glance
from openstack_dashboard.dashboards.admin.metadata_defs \
import constants
class ImportNamespace(tables.LinkAction):
name = "import"
verbose_name = _("Import Namespace")
url = constants.METADATA_CREATE_URL
classes = ("ajax-modal",)
icon = "plus"
policy_rules = (("image", "add_metadef_namespace"),)
class EditNamespace(tables.LinkAction):
name = 'update'
verbose_name = _('Edit Namespace')
url = constants.METADATA_UPDATE_URL
classes = ('ajax-modal',)
class DeleteNamespace(tables.DeleteAction):
@staticmethod
def action_present(count):
return ngettext_lazy(
"Delete Namespace",
"Delete Namespaces",
count
)
@staticmethod
def action_past(count):
return ngettext_lazy(
"Deleted Namespace",
"Deleted Namespaces",
count
)
policy_rules = (("image", "modify_metadef_namespace"),)
def allowed(self, request, namespace=None):
# Protected namespaces can not be deleted.
if namespace and namespace.protected:
return False
# Return True to allow table-level bulk delete action to appear.
return True
def delete(self, request, obj_id):
glance.metadefs_namespace_delete(request, obj_id)
class ManageResourceTypeAssociations(tables.LinkAction):
name = "manage_resource_types"
verbose_name = _("Update Associations")
url = constants.METADATA_MANAGE_RESOURCES_URL
classes = ("ajax-modal",)
icon = "pencil"
policy_rules = (("image", "list_metadef_resource_types"),
("image", "add_metadef_resource_type_association"))
def allowed(self, request, namespace=None):
# Protected namespace can not be updated
if namespace and namespace.protected:
return False
# Return True to allow table-level bulk delete action to appear.
return True
class AdminMetadataFilterAction(tables.FilterAction):
filter_type = "server"
filter_choices = (('resource_types', _("Resource Types ="), True),)
class UpdateRow(tables.Row):
ajax = True
def get_data(self, request, namespace_name):
return glance.metadefs_namespace_get(request,
namespace_name,
wrap=True)
class AdminNamespacesTable(tables.DataTable):
display_name = tables.Column(
"display_name",
link=constants.METADATA_DETAIL_URL,
verbose_name=_("Name"),
form_field=forms.CharField(max_length=80))
description = tables.Column(
lambda obj: getattr(obj, 'description', None),
verbose_name=_('Description'),
form_field=forms.CharField(widget=forms.Textarea(), required=False),
truncate=200)
resource_type_names = tables.Column(
lambda obj: getattr(obj, 'resource_type_names', []),
verbose_name=_("Resource Types"),
wrap_list=True,
filters=(filters.unordered_list,))
public = tables.Column(
"public",
verbose_name=_("Public"),
empty_value=False,
form_field=forms.BooleanField(required=False),
filters=(filters.yesno, filters.capfirst))
protected = tables.Column(
"protected",
verbose_name=_("Protected"),
empty_value=False,
form_field=forms.BooleanField(required=False),
filters=(filters.yesno, filters.capfirst))
def get_object_id(self, datum):
return datum.namespace
def get_object_display(self, datum):
if hasattr(datum, 'display_name'):
return datum.display_name
return None
class Meta(object):
name = "namespaces"
verbose_name = _("Namespaces")
row_class = UpdateRow
table_actions = (AdminMetadataFilterAction,
ImportNamespace,
DeleteNamespace,)
row_actions = (EditNamespace,
ManageResourceTypeAssociations,
DeleteNamespace,)
pagination_param = "namespace_marker"