答案似乎是没有的:z3c.form.group.Group.extractData
callsz3c.form.form.BaseForm.extractData
,每组/外地一次,这一呼吁已经包括不间断的验证。
您不登记自己的handler,也可超越extractData:
from plone.directives import form, dexterity
from z3c.form.interfaces import ActionExecutionError,WidgetActionExecutionError
# ...
class EditForm(dexterity.EditForm):
grok.context(IMyEvent)
def extractData(self, setErrors=True):
data, errors = super(EditForm, self).extractData(setErrors)
if not None in(data[ start ], data[ end ]):
if data[ end ] < data[ start ]:
raise WidgetActionExecutionError( end , Invalid(_(u"End date should not lie before the start date.")))
if data[ end ] - data[ start ] > datetime.timedelta(days=7):
raise WidgetActionExecutionError( end , Invalid(_(u"Duration of convention should be shorter than seven (7) days.")))
return data, errors
请注意,这一类别源自减产。 EditForm, 包括Dexterity的违约处理器,而不是形式。 SchemaForm。
<代码>WidgetActionExecutionError并不可靠地运作。 在一些领域,它产生了一个关键错误。