Hi, I took a great email from Gary Wilson to get me started on the status structure.
Some of the core design decisions were finalised by Jacob, Malcolm (please scream if I have misunderstood or don't remember things correctly) and me at DjangoCon. Honza Král E-Mail: [EMAIL PROTECTED] ICQ#: 107471613 Phone: +420 606 678585 * The ValidationError class has moved from forms.utils to django.core.exceptions now that it is used for more than just forms. ErrorList has been kept in forms.utils validators ========== not yet implemented - talking about plans here * New validators (replacements for many, but not all of the old validators) have been put in ``django.core.validators`` * the new validator is a function like: def validate_something( value, all_values={}, instance=None ): if i_dont_like( value ): raise ValidationError( 'I dont like %r' % value, error_code=validators.SOME_CODE ) the error_code can be used later in Forms to look up custom error messages. django.db.models.Model class ============================ * validate_unique has been moved here from ModelForm * clean and validate methods were added, the idea is that any __validation__ should never alter the data, that's why the top-level function that can result in data change is clean() and not validate() * clean() calls clean() on individual fields and then calls validate(), ValidationError with message_dict containing the errors is raised when errors occur * validate() calls validate_unique() and is a hook to add custom instance-wide validation (just raise ValidationError from it) * no validate_FIELD or clean_FIELD hooks on models * validate is run even if some errors occur on the fields' clean() methods Model fields (django.db.models.fields) ====================================== * clean and validate methods were added, see Model for function Form Fields (django.forms.fields) ================================= * form fields haven't been changed yet, I will probably try and do the same thinng the old patch did: * The to_python() method remains and a validate() method have been added. Fields have had their clean() methods split into to_python() and validate() methods. * clean() now calls to_python() then validate(). django.forms.forms.BaseForm class ================================= * no changes here either, so far. Will probably also try and do: * Form gets a new validate() method, which is meant to replace clean(), and full_clean() now looks for validate_<field> methods, which are meant to replace clean_<field> methods. full_clean() also uses the Form.validate() instead of Form.clean() to set the cleaned_data. - The validate_<field> methods are passed the Field.clean()'ed value (yea for fixing #3896). django.forms.models.BaseModelForm class ======================================= * save_instance has been split into two functions: * make_instance(form, instance, fields=None, exclude=None) which return unsaved instance with populated fields * save_maked_instance(form, instance, fields=None, commit=True, fail_message='saved') which saves the populated instance (and it's m2m data) save_instance remains and calls the two new functions * in it's clean() method constructs the instance with make_instance, then runs validation on it * the validate_unique method has been moved to Model * the form's save() method only calls save_maked_instance django.forms.models.BaseModelFormset class =========================================== * calls form.save() in save_new and save_existing known Issues ========================= * InlineFormSet.save_as_new is broken unknown Issues ========================== * I am fairly sure there are many since I only wrote minimal tests I would appreciate any feedback on this, especially on: should we change the current Form validation? - split to_python and validate, etc.. how big an effort should we make to get all the validation to one place - the validators (ie remove the logic from FormFields and just have them call the validators where possible) testing - anybody willing to write tests and/or have a piece of code that I broke, please contact me --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-developers?hl=en -~----------~----~----~----~------~----~------~--~---