Metadata-Version: 2.1
Name: WTFormsValidation
Version: 0.1.0
Summary: A python library for generating client side validation functions from WTForms for various validator libraries.
Home-page: https://github.com/Aresius423/WTFormsValidation
Author: János Márkus
Author-email: aresius423@gmail.com
License: UNKNOWN
Description: # WTFormsValidator
        A python library for generating client side validation functions from [WTForms](https://wtforms.readthedocs.io/) for various validator libraries.
        
        Developed and tested with Python 3.8 and WTForms 2.3.1
        Compatible with Python 3.6 and Python 3.7
        
        ## Table of Contents
        
        * [Supported validators](#supported-validators)
        * [Setup](#setup)
        * [Running the sample application](#running-the-sample-application)
        * [Usage](#usage)
            * [Integrating with YairEO](#integrating-with-yaireo)
            * [Integrating with ParsleyJS](#integrating-with-parsleyjs)
            * [Integrating with Bouncer.js](#integrating-with-bouncerjs)
            * [Implementing custom behaviour](#implementing-custom-behaviour)
        
        ## Supported validators
        
        Here you can see which libraries are currently supported or planned to be added, and which WTForms validators are supported by them.  
        Validators marked with an R are supported via regexes. Using multiple regex-backed validators concurrently will disable all but the last one.
        
        | WTForms validator | [YairEO](https://github.com/yairEO/validator) | [ParsleyJS](https://parsleyjs.org/doc/examples.html)  | [Bouncer.js](https://github.com/cferdinandi/bouncer) | [just-validate](https://github.com/horprogs/Just-validate) | [Pristine](https://github.com/sha256/Pristine) | [jQuery validation](https://github.com/jquery-validation/jquery-validation) |
        |-------------------|---------|-----------|-------------|---------------|----------|-------------------|
        | DataRequired      |  ✔️      |  ✔️        | ✔️           |    TODO       | TODO     | TODO              |
        | Email             |✔️\|R¹    | ✔️\|R¹     | ✔️\|R¹       |               |          |                   |
        | EqualTo           | ✔️       |  ✔️        | ❌          |               |          |                   |
        | InputRequired     | ✔️²      |  ✔️²       | ✔️²          |               |          |                   |
        | IPAddress         | R       | R         | R           |               |          |                   |
        | Length            | ✔️       |  ✔️        | ✔️           |               |          |                   |
        | MacAddress        | R       | R         | R           |               |          |                   |
        | NumberRange       | ✔️       |  ✔️        | ✔️           |               |          |                   |
        | Optional          | ✔️³      |  ✔️        | ✔️           |               |          |                   |
        | Regexp            | ✔️       | ✔️         | ✔️           |               |          |                   |
        | URL               | ✔️\|R¹   | ✔️\|R¹     | ✔️\|R¹       |               |          |                   |
        | UUID              | R       | R         | R           |               |          |                   |
        | AnyOf             | R       | R         | R           |               |          |                   |
        | NoneOf            | R       | R         | R           |               |          |                   |
        | Custom validators | ❌      | ❌        | ❌          |               |          |                   |
        | Custom errors     | ❌⁴     | ✔️         | ✔️           |               |          |                   | 
        
        ¹ These libraries have built-in support for e-mail and URL validation, but you can choose to use the WTFormsValidation's regex validators instead. Defaults to built-in, unless that requires WTFormsValidation to change the field's type (in the case of YairEO and Bouncer.js)  
        ² Same behaviour as DataRequired  
        ³ Due to a bug in YairEO, only fields marked as required are validated, so currently this should have no effect  
        ⁴ With YairEO currently you can only override the default messages
        
        ## Setup
        
        Install it with pip, in your preferred virtual environment:
        
        ```pip install WTFormsValidation```
        
        ## Running the sample application
        
        * Create a virtualenv ```virtualenv -p python3.8 venv```
        * Activate it ```. venv/bin/activate```
        * Install the sample's requirements ```pip install -r sample/requirements.txt```
        * Run ```python -m sample.sample_app```
        * Use the navbar to select which validator's demo you wish to examine.
        
        ## Usage
        
        Adding the validator library's boilerplate code should be done according to their documentation. Integrate WTFormsValidator as described below.
        
        ### Integrating with YairEO
        
        Using the default settings for the tagger class:
        ```
        from WTFormsValidation import yairify
        ...
        render_template('your_template.html', form=yairify(form))
        ```
        
        or by instantiating the tagger class yourself:
        ```
        from WTFormsValidation.tagging.yaireo import YairEOtagger
        yaireo_tagger = YairEOtagger(email_builtin=True, url_builtin=True)  # defaults negated
        ...
        render_template('your_template.html', form=yaireo_tagger.extend(form))
        ```
        
        ### Integrating with ParsleyJS
        
        Using the default settings for the tagger class:
        ```
        from WTFormsValidation import parslify
        ...
        render_template('your_template.html', form=parslify(form))
        ```
        
        or by instantiating the tagger class yourself:
        ```
        from WTFormsValidation.tagging.parsley import ParsleyTagger
        parsley_tagger = ParsleyTagger(email_builtin=False, url_builtin=False)  # defaults negated
        ...
        render_template('your_template.html', form=parsley_tagger.extend(form))
        ```
        
        ### Integrating with Bouncer.js
        
        Using the default settings for the tagger class:
        ```
        from WTFormsValidation import bouncify
        ...
        render_template('your_template.html', form=bouncify(form))
        ```
        
        or by instantiating the tagger class yourself:
        ```
        from WTFormsValidation.tagging.bouncer import BouncerTagger
        bouncer_tagger = BouncerTagger(email_builtin=True, url_builtin=True)  # defaults negated
        ...
        render_template('your_template.html', form=bouncer_tagger.extend(form))
        ```
        
        ## Implementing custom behaviour
        
        You can inherit from the default tagger classes (YairEOtagger, ParsleyTagger, BouncerTagger) and override any handler functions to suit your use case.
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
