--- a/src/pyams_content/shared/common/zmi/types.py Wed Jun 06 13:32:14 2018 +0200
+++ b/src/pyams_content/shared/common/zmi/types.py Fri Jun 08 10:33:23 2018 +0200
@@ -33,7 +33,7 @@
# import packages
from pyams_content.shared.common.types import DataType, SubType
-from pyams_form.form import AJAXAddForm, AJAXEditForm
+from pyams_form.form import AJAXAddForm, ajax_config
from pyams_form.security import ProtectedFormObjectMixin
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.container import delete_container_element
@@ -239,6 +239,7 @@
@pagelet_config(name='add-data-type.html', context=ITypedSharedTool, layer=IPyAMSLayer,
permission=MANAGE_TOOL_PERMISSION)
+@ajax_config(name='add-data-type.json', context=ITypedSharedTool, layer=IPyAMSLayer, base=AJAXAddForm)
class DataTypeAddForm(AdminDialogAddForm):
"""Data type add form"""
@@ -249,7 +250,6 @@
fields = field.Fields(IDataType).omit('__parent__', '__name__')
- ajax_handler = 'add-data-type.json'
edit_permission = MANAGE_TOOL_PERMISSION
def create(self, data):
@@ -260,7 +260,7 @@
ITypedDataManager(self.context)[name] = object
def nextURL(self):
- return absolute_url(self.context, self.request, 'admin#data-types.html')
+ return '#data-types.html'
@subscriber(IDataExtractedEvent, form_selector=DataTypeAddForm)
@@ -273,16 +273,8 @@
event.form.widgets.errors += (Invalid(_("Specified type name is already used!")),)
-@view_config(name='add-data-type.json', context=ITypedSharedTool, request_type=IPyAMSLayer,
- permission=MANAGE_TOOL_PERMISSION, renderer='json', xhr=True)
-class DataTypeAJAXAddForm(AJAXAddForm, DataTypeAddForm):
- """Data type add form, JSON renderer"""
-
- def nextURL(self):
- return '#data-types.html'
-
-
@pagelet_config(name='properties.html', context=IDataType, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+@ajax_config(name='properties.json', context=IDataType, layer=IPyAMSLayer)
class DataTypeEditForm(AdminDialogEditForm):
"""Data type edit form"""
@@ -295,7 +287,6 @@
fields = field.Fields(IDataType).omit('__parent__', '__name__')
- ajax_handler = 'properties.json'
edit_permission = MANAGE_TOOL_PERMISSION
def updateWidgets(self, prefix=None):
@@ -304,12 +295,6 @@
self.widgets['name'].mode = DISPLAY_MODE
-@view_config(name='properties.json', context=IDataType, request_type=IPyAMSLayer,
- permission=MANAGE_TOOL_PERMISSION, renderer='json', xhr=True)
-class DataTypeAJAXEditForm(AJAXEditForm, DataTypeEditForm):
- """Data type edit form, JSON renderer"""
-
-
#
# Subtypes views
#
@@ -460,6 +445,7 @@
@pagelet_config(name='add-data-subtype.html', context=IDataType, layer=IPyAMSLayer,
permission=MANAGE_TOOL_PERMISSION)
+@ajax_config(name='add-data-subtype.json', context=IDataType, layer=IPyAMSLayer, base=AJAXAddForm)
class DataSubtypeAddForm(AdminDialogAddForm):
"""Data subtype add form"""
@@ -470,7 +456,6 @@
fields = field.Fields(ISubType).omit('__parent__', '__name__')
- ajax_handler = 'add-data-subtype.json'
edit_permission = MANAGE_TOOL_PERMISSION
def create(self, data):
@@ -483,6 +468,15 @@
def nextURL(self):
return absolute_url(self.context, self.request, 'admin#data-types.html')
+ def get_ajax_output(self, changes):
+ return {
+ 'status': 'success',
+ 'message': self.request.localizer.translate(_("Subtype was correctly added.")),
+ 'events': [
+ get_json_table_refresh_event(self.context, self.request, DatatypeSubtypesTable)
+ ]
+ }
+
@subscriber(IDataExtractedEvent, form_selector=DataSubtypeAddForm)
def handle_subtype_add_form_data_extraction(event):
@@ -494,22 +488,8 @@
event.form.widgets.errors += (Invalid(_("Specified subtype name is already used!")),)
-@view_config(name='add-data-subtype.json', context=IDataType, request_type=IPyAMSLayer,
- permission=MANAGE_TOOL_PERMISSION, renderer='json', xhr=True)
-class DataSubtypeAJAXAddForm(AJAXAddForm, DataSubtypeAddForm):
- """Data subtype add form, JSON renderer"""
-
- def get_ajax_output(self, changes):
- return {
- 'status': 'success',
- 'message': self.request.localizer.translate(_("Subtype was correctly added.")),
- 'events': [
- get_json_table_refresh_event(self.context, self.request, DatatypeSubtypesTable)
- ]
- }
-
-
@pagelet_config(name='properties.html', context=ISubType, layer=IPyAMSLayer, permission=MANAGE_TOOL_PERMISSION)
+@ajax_config(name='properties.json', context=ISubType, layer=IPyAMSLayer)
class DataSubtypeEditForm(AdminDialogEditForm):
"""Data subtype edit form"""
@@ -522,7 +502,6 @@
fields = field.Fields(ISubType).omit('__parent__', '__name__')
- ajax_handler = 'properties.json'
edit_permission = MANAGE_TOOL_PERMISSION
def updateWidgets(self, prefix=None):
@@ -530,12 +509,6 @@
if 'name' in self.widgets:
self.widgets['name'].mode = DISPLAY_MODE
-
-@view_config(name='properties.json', context=ISubType, request_type=IPyAMSLayer,
- permission=MANAGE_TOOL_PERMISSION, renderer='json', xhr=True)
-class DataSubtypeAJAXEditForm(AJAXEditForm, DataSubtypeEditForm):
- """Data subtype edit form, JSON renderer"""
-
def get_ajax_output(self, changes):
if 'label' in changes.get(IBaseDataType, ()):
target = get_parent(self.context, IDataType)
@@ -547,4 +520,4 @@
]
}
else:
- return super(DataSubtypeAJAXEditForm, self).get_ajax_output(changes)
+ return super(self.__class__, self).get_ajax_output(changes)