src/pyams_content/root/zmi/sites.py
changeset 527 5dd1aa8bedd9
parent 503 264f9b53a714
child 577 b7ded033d298
--- a/src/pyams_content/root/zmi/sites.py	Wed Apr 11 16:44:46 2018 +0200
+++ b/src/pyams_content/root/zmi/sites.py	Wed Apr 11 16:46:31 2018 +0200
@@ -35,7 +35,7 @@
 # import packages
 from pyams_content.skin import pyams_content
 from pyams_pagelet.pagelet import pagelet_config
-from pyams_skin.container import ContainerView
+from pyams_skin.container import ContainerView, delete_container_element
 from pyams_skin.page import DefaultPageHeaderAdapter
 from pyams_skin.table import BaseTable, TrashColumn, ActionColumn, I18nColumn
 from pyams_skin.viewlet.menu import MenuItem
@@ -46,6 +46,7 @@
 from pyams_viewlet.manager import viewletmanager_config
 from pyams_viewlet.viewlet import viewlet_config
 from pyams_zmi.view import AdminView
+from pyramid.exceptions import NotFound
 from pyramid.view import view_config
 from z3c.table.column import GetAttrColumn
 from zope.interface import implementer
@@ -73,7 +74,7 @@
 class SiteTreeTable(BaseTable):
     """Site tree table"""
 
-    id = 'site_tree_table'
+    prefix = 'site_tree'
     title = _("Blogs and shared sites")
 
     sortOn = None
@@ -85,8 +86,7 @@
         attributes.setdefault('table', {}).update({
             'data-ams-plugins': 'pyams_content',
             'data-ams-plugin-pyams_content-src': get_resource_path(pyams_content),
-            'data-ams-location': absolute_url(self.context, self.request),
-            'data-ams-delete-target': 'delete-shared-site.json'
+            'data-ams-location': absolute_url(self.context, self.request)
         })
         attributes.setdefault('tr', {}).update({
             'id': lambda x, col: '{0}::{1}'.format(self.id, intids.queryId(x)),
@@ -155,6 +155,15 @@
         return super(SiteTreeTrashColumn, self).has_permission(item) and item.is_deletable()
 
 
+@view_config(name='delete-shared-site.json', context=ISiteRoot, request_type=IPyAMSLayer,
+             permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
+def delete_shared_site(request):
+    """Delete shared site from site manager"""
+    if not request.context.is_deletable():
+        raise NotFound()
+    return delete_container_element(request, ignore_permission=True)
+
+
 @adapter_config(context=(ISiteRoot, IAdminLayer, SiteTreeTable), provides=IValues)
 class SiteTreValuesAdapter(ContextRequestViewAdapter):
     """Site tree values adapter"""
@@ -181,29 +190,3 @@
     """Site tree view header adapter"""
 
     icon_class = 'fa fa-fw fa-sitemap'
-
-
-@view_config(name='delete-shared-site.json', context=ISiteRoot, request_type=IPyAMSLayer,
-             permission=MANAGE_SITE_ROOT_PERMISSION, renderer='json', xhr=True)
-def delete_shared_site(request):
-    """Delete shared site from site manager"""
-    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 site name doesn't exist!"))
-            }
-        }
-    del request.context[name]
-    return {'status': 'success'}