src/pyams_content/features/alert/zmi/container.py
changeset 527 5dd1aa8bedd9
parent 506 174894a2293d
child 578 a607fdec4d63
--- a/src/pyams_content/features/alert/zmi/container.py	Wed Apr 11 16:44:46 2018 +0200
+++ b/src/pyams_content/features/alert/zmi/container.py	Wed Apr 11 16:46:31 2018 +0200
@@ -31,7 +31,7 @@
 from pyams_i18n.column import I18nAttrColumn
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_skin.page import DefaultPageHeaderAdapter
-from pyams_skin.table import BaseTable, SorterColumn, JsActionColumn, I18nColumn, TrashColumn
+from pyams_skin.table import BaseTable, SorterColumn, I18nColumn, TrashColumn, VisibilitySwitcherColumn
 from pyams_skin.viewlet.menu import MenuItem
 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter
 from pyams_utils.fanstatic import get_resource_path
@@ -60,7 +60,8 @@
 class AlertContainerTable(BaseTable):
     """Alerts container table"""
 
-    id = 'alerts_table'
+    prefix = 'alerts'
+
     hide_header = True
     sortOn = None
 
@@ -75,11 +76,8 @@
             'data-ams-plugin-pyams_content-src': get_resource_path(pyams_content),
             'data-ams-location': absolute_url(IAlertContainer(self.context), self.request),
             'data-ams-tablednd-drag-handle': 'td.sorter',
-            'data-ams-tablednd-drop-target': 'set-alerts-order.json'
-        })
-        attributes.setdefault('tr', {}).update({
-            'id': lambda x, col: 'alert_{0}'.format(x.__name__),
-            'data-ams-delete-target': 'delete-alert.json'
+            'data-ams-tablednd-drop-target': 'set-alerts-order.json',
+            'data-ams-visibility-switcher': 'switch-alert-visibility.json'
         })
         return attributes
 
@@ -118,30 +116,14 @@
 
 
 @adapter_config(name='show-hide', context=(IAlertTarget, IPyAMSLayer, AlertContainerTable), provides=IColumn)
-class AlertContainerShowHideColumn(JsActionColumn):
+class AlertContainerShowHideColumn(VisibilitySwitcherColumn):
     """Alert container visibility switcher column"""
 
-    cssClasses = {'th': 'action',
-                  'td': 'action switcher'}
 
-    icon_class = 'fa fa-fw fa-eye'
-    icon_hint = _("Switch alert visibility")
-
-    url = 'PyAMS_content.alerts.switchVisibility'
-
-    weight = 5
-
-    def get_icon_class(self, item):
-        if item.visible:
-            return self.icon_class
-        else:
-            return 'fa fa-fw fa-eye-slash text-danger'
-
-
-@view_config(name='set-alert-visibility.json', context=IAlertContainer, request_type=IPyAMSLayer,
+@view_config(name='switch-alert-visibility.json', context=IAlertContainer, request_type=IPyAMSLayer,
              permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
-def set_alert_visibility(request):
-    """Set alert visibility"""
+def switch_alert_visibility(request):
+    """Switch alert visibility"""
     container = IAlertContainer(request.context)
     alert = container.get(str(request.params.get('object_name')))
     if alert is None:
@@ -200,31 +182,7 @@
 class AlertContainerTrashColumn(TrashColumn):
     """Alert container trash column"""
 
-
-@view_config(name='delete-alert.json', context=IAlertTarget, request_type=IPyAMSLayer,
-             permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
-def delete_alert(request):
-    """Delete alert"""
-    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 alert name doesn't exist!"))
-            }
-        }
-    del request.context[name]
-    return {'status': 'success'}
+    permission = MANAGE_SITE_ROOT_PERMISSION
 
 
 @pagelet_config(name='alerts.html', context=IAlertTarget, layer=IPyAMSLayer, permission=MANAGE_SITE_ROOT_PERMISSION)