--- 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'}