# HG changeset patch # User Thierry Florac # Date 1523370160 -7200 # Node ID bc5b1fece177404c5cef3b9549b1d48e6a1a294b # Parent 9c763bcf5463fe671d71adc3b43cd5ef89fad79e Updated table attributes and JSON events diff -r 9c763bcf5463 -r bc5b1fece177 src/pyams_catalog/zmi/catalog.py --- a/src/pyams_catalog/zmi/catalog.py Tue Apr 10 16:20:36 2018 +0200 +++ b/src/pyams_catalog/zmi/catalog.py Tue Apr 10 16:22:40 2018 +0200 @@ -19,13 +19,14 @@ from hypatia.interfaces import ICatalog, IIndexStatistics, IIndexEnumeration from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager from pyams_skin.layer import IPyAMSLayer -from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION, MANAGE_SYSTEM_PERMISSION +from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION, MANAGE_SYSTEM_PERMISSION, ICacheKeyValue from pyams_zmi.layer import IAdminLayer from z3c.table.interfaces import IColumn, IValues # import packages from pyams_catalog.index import InterfaceSupportIndexMixin from pyams_pagelet.pagelet import pagelet_config +from pyams_skin.container import delete_container_element from pyams_skin.table import BaseTable, I18nColumn, TrashColumn, TableViewlet from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter from pyams_utils.text import text_to_html @@ -57,7 +58,8 @@ class CatalogIndexesTable(BaseTable): """Catalog indexes table""" - id = 'CatalogIndexes' + prefix = 'CatalogIndexes' + title = _("Catalog indexes") cssClasses = {'table': 'table table-bordered table-striped table-hover table-tight datatable'} sortOn = None @@ -65,17 +67,17 @@ @property def data_attributes(self): attributes = super(CatalogIndexesTable, self).data_attributes - table_attrs = {'data-ams-location': absolute_url(self.context, self.request), - 'data-ams-delete-target': 'delete-index.json', - 'data-ams-datatable-global-filter': 'false', - 'data-ams-datatable-info': 'false', - 'data-ams-datatable-sdom': "t<'dt-row dt-bottom-row'<'text-right'p>>", - 'data-ams-datatable-display-length': '20', - 'data-ams-datatable-pagination-type': 'bootstrap_prevnext'} - if 'table' in attributes: - attributes['table'].update(table_attrs) - else: - attributes['table'] = table_attrs + attributes.setdefault('table', {}).update({ + 'data-ams-location': absolute_url(self.context, self.request), + 'data-ams-datatable-global-filter': 'false', + 'data-ams-datatable-info': 'false', + 'data-ams-datatable-sdom': "t<'dt-row dt-bottom-row'<'text-right'p>>", + 'data-ams-datatable-display-length': '20', + 'data-ams-datatable-pagination-type': 'bootstrap_prevnext' + }) + attributes.setdefault('tr', {}).update({ + 'id': lambda x, col: '{0}::{1}'.format(self.prefix, ICacheKeyValue(x)) + }) return attributes @@ -217,19 +219,8 @@ table_class = CatalogIndexesTable -@view_config(name='delete-index.json', context=ICatalog, request_type=IPyAMSLayer, +@view_config(name='delete-element.json', context=ICatalog, request_type=IPyAMSLayer, permission=MANAGE_SYSTEM_PERMISSION, renderer='json', xhr=True) def delete_catalog_index(request): """Delete index from catalog""" - translate = request.localizer.translate - name = request.params.get('object_name') - if not name: - return {'status': 'message', - 'messagebox': {'status': 'error', - 'content': translate(_("No provided object_name argument!"))}} - if name not in request.context: - return {'status': 'message', - 'messagebox': {'status': 'error', - 'content': translate(_("Given index doesn't exist!"))}} - del request.context[name] - return {'status': 'success'} + return delete_container_element(request)