Package: collective.itvalidators
Table of contentsIntroductionItalian Specific validatorsisCAPisItalianNINGeneral purpose validatorsMinCharsValidatorHow to useDependencyCheckValidatorHow to useFinal noteContribute!CreditsAuthorsChangelog1.0.0 (2012-11-12)0.3.0 (2012-05-02)0.2.1 (2012-02-09)0.2.0 (2012-02-07)0.1.0 (2011-05-03)IntroductionThis product add to Plone some additionalvalidators.Some of theme can be useful only for Italian users or sites targeted on Italy (as many of the default ones
likeisSSNorisUSPhoneNumberare not useful for non-US sites), other are simply additional validators
that everyone can find useful.The idea behind the product is simply collect a set of validators that commonly are putted inside other
products, but in this way not easily reusable.Italian Specific validatorsisCAPVery similar to the nativeisZipCodebut this only accept 5 digits values. Formally isCodice di Avviamento Postale.isItalianNINCheck if a string is a validItalian National Insurance Number(“Codice Fiscale”). The validator only check
the format of the string, not if the string itself is arealand existing code.General purpose validatorsMinCharsValidatorThis validator test if the given value is at least a specific number of characters long. The default
character value is 500.The validator will also ignore any whitespace (space character, carriage return, tab…) so the text:Hello Worldis long like:Hello      Worldand also long like:Hello

     WorldHow to useAn example:from collective.itvalidators.validators import MinCharsValidator
...

TextField('text',
          validators = (MinCharsValidator()),
),
...To customize the number of characters:TextField('text',
          validators = (MinCharsValidator(100)),
),
...You can also threat is a special way HTML text (for example, if it came from TinyMCE) beeing sure that only
content characters (not HTML tags) are counted. Example:...
TextField('text',
          default_output_type = 'text/x-html-safe',
          validators = ('isTidyHtmlWithCleanup', MinCharsValidator(100, strict=True)),
),
...DependencyCheckValidatorThis validator check the value (”wanted value”) contained in a field, but only when another field contains
a “warning value”.
This mean that when theobservedfield isn’t matching the value you are monitor, no validation take place;
when this is true, a second level of validation of the current field take place.You need to configure this validator giving theobservedfield. After that you need to provide bothwarnValueandwantedValue.Example:Check that when an observed field contains the value “Other…”, this field contains the value “Foo”.This first example seems not very useful but know that both configuration parameters can be a specific
value, or a boolean value.When using boolean values:WhenwarnValueisFalsemean that you want to monitor when theobservedfield is empty.WhenwarnValueisTruemean that you want to monitor when theobservedfield is not empty.WhenwantedValueisFalsemean that validation will pass if the field if empty.WhenwantedValueisTruemean that validation will pass if the field not empty (see below).Another (better) example:Check that when an observed field contains the value “Other…”, this field containssomething.How to useThe first example above:from collective.itvalidators.validators import DependencyCheckValidator
...

StringField('field1',),
StringField('field2',
            validators = (DependencyCheckValidator('field1', warnValue='Other...', wantedValue='Foo')),
),
...The second example above:...
StringField('field1',),
StringField('field2',
            validators = (DependencyCheckValidator('field1', warnValue='Other...', wantedValue=True)),
),
...Final noteNormally Archetypes framework doesn’t run validation for non-required empty fields. This happens adding as first validator
a default sufficient “isEmptyNoError”.You probably need to play with Products.validation APIs to usewantedValueTrue:YourSchema['field2'].validators.insertRequired(
                DependencyCheckValidator('field1', warnValue='Other...', wantedValue=True)
)This will add in position 0 a required validator. In this way the validation runs normally.Contribute!You are welcome to add to this product your additional validation (also some unit-tests for every new validator
are welcome)! Contact us atsviluppoplone@redturtle.itYou can also contribute providing new translation for validation messages.CreditsDeveloped with the support of:Azienda USL FerraraS. Anna Hospital, FerraraRegione Emilia RomagnaAll of them supports thePloneGov initiative.AuthorsThis product was developed by RedTurtle Technology team.Changelog1.0.0 (2012-11-12)fix interfaces implements method for Plone 4 [fdelia]Fixed tests for Plone 4.2 [keul]0.3.0 (2012-05-02)added a specific support for DataGridField empty values usingwantedValue.
Pleasenotethat this has been tested with DataGridField 1.6
[keul]0.2.1 (2012-02-09)fixed error when fields provide a custom i18n Message string.
Overriding the default ones was not possible [keul]0.2.0 (2012-02-07)new validator:DependencyCheckValidator[keul]fixed translations [keul]0.1.0 (2011-05-03)Initial release