> No, my suggestion does not break any existing code because it only
> adds a new method to EditFormBase which gets called from
> handle_edit_action instead of the function. This new method then calls
> the applyChanges function. So you are able to overwrite the new method
> in a subclass to normalize before applying.
OK, I understand now.
> A method called "validate" should only tell valid or not (and why) but
> it should not change the data.
Currently when defining action you can use 'validator', which is in fact
called by 'validate' function
def edit(self, **data):
As Fred Drake said:
"The validator is responsible for populating `data` with the valid
values. That's definitely covered in the docs somewhere. "
There was some discussion about that in zope3-users list:
So I think you're right about the name (which in fact is 'validator', I
misspelled this a bit)
but I think that current state is even worse because 'validator' is not
for validation in fact
but for populating with 'valid' data.
The real problem is where we can do validations (if it is not possible
to use invariants)
and where we can modify data just like in your case. I think that
function like 'validator',
maybe called 'prepare_data' or something, that would get 'data'
dictionary filled with values
would be really helpful.
Also few simple changes to ease validation and setting errors for
widgets would be helpful.
I've seen that Grok will bring some changes to formlib, but I don't know
exactly what will
be different. AFAIR applyChanges will be changed to different name.
Zope3-dev mailing list