Source code for openstack_dashboard.dashboards.admin.metadata_defs.tables

#    (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 ugettext_lazy as _
from django.utils.translation import ungettext_lazy

from horizon import forms
from horizon import tables

from openstack_dashboard.api import glance
from openstack_dashboard.dashboards.admin.metadata_defs \
    import constants


[docs]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"),)
[docs]class EditNamespace(tables.LinkAction): name = 'update' verbose_name = _('Edit Namespace') url = constants.METADATA_UPDATE_URL classes = ('ajax-modal',)
[docs]class DeleteNamespace(tables.DeleteAction): @staticmethod
[docs] def action_present(count): return ungettext_lazy( u"Delete Namespace", u"Delete Namespaces", count )
@staticmethod
[docs] def action_past(count): return ungettext_lazy( u"Deleted Namespace", u"Deleted Namespaces", count )
policy_rules = (("image", "delete_metadef_namespace"),)
[docs] 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
[docs] def delete(self, request, obj_id): glance.metadefs_namespace_delete(request, obj_id)
[docs]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"))
[docs] 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
[docs]class AdminMetadataFilterAction(tables.FilterAction): filter_type = "server" filter_choices = (('resource_types', _("Resource Types ="), True),)
[docs]class UpdateRow(tables.Row): ajax = True
[docs] def get_data(self, request, namespace_name): return glance.metadefs_namespace_get(request, namespace_name, wrap=True)
[docs]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))
[docs] def get_object_id(self, datum): return datum.namespace
[docs] def get_object_display(self, datum): if hasattr(datum, 'display_name'): return datum.display_name return None
[docs] 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"

Project Source