| Name | prune-lib JSON | 
            
| Version | 
                  2.1.1
                   
                  JSON | 
            
 | download  | 
            
| home_page | None  | 
            
| Summary | Internal library for prune.sh | 
            | upload_time | 2025-10-16 09:39:30 | 
            | maintainer | None | 
            
            | docs_url | None | 
            | author | None | 
            
            | requires_python | >=3.13 | 
            
            
            | license | None | 
            | keywords | 
                
                    captcha
                
                     django
                
                     code-quality
                 | 
            | VCS | 
                
                    | 
                
            
            | bugtrack_url | 
                
                 | 
             
            
            | requirements | 
                
                  No requirements were recorded.
                
             | 
            
| Travis-CI | 
                
                   No Travis.
                
             | 
            | coveralls test coverage | 
                
                   No coveralls.
                
             | 
        
        
            
            # prune_lib
prune_lib est une bibliothèque Python regroupant des fonctions utilitaires réutilisables.  
L’objectif est de faciliter le développement de projets en centralisant des outils communs.
Le projet inclut aussi prune_captcha, un module dédié à l’ajout d’un CAPTCHA personnalisé dans les formulaires de contact.
## Projet UV
### Installation
Lancez la commande suivante dans le terminal :
```bash
uv add prune_lib
```
### Mise à jour de la bilbiothèque
N’hésitez pas à exécuter régulièrement uv sync --upgrade, car la bibliothèque évolue avec le temps et nos pratiques !
## Projet Poetry
### Installation
Lancez la commande suivante :
```bash
poetry add prune_lib
```
### Mise à jour de la bibliothèque
N’hésitez pas à exécuter régulièrement poetry update, car la bibliothèque évolue avec le temps et nos pratiques !
## Objectifs
-   Réutiliser facilement des fonctions communes.
-   Fournir une alternative simple à reCAPTCHA.
-   Ne dépendre d’aucun service externe.
## Intégration du captcha
### Configuration
Dans `settings.py`, définis le chemin des images utilisées pour le puzzle :
```python
PUZZLE_IMAGE_STATIC_PATH = "website/static/website/images/puzzles/"
```
Important : Tu dois importer les fichiers statiques (css, js) présents dans "prune_captcha/static/".
```html
<header>
    <link
        rel="stylesheet"
        href="{% static 'prune_captcha/css/captcha.css' %}"
    />
    <script defer src="{% static 'prune_captcha/js/captcha.js' %}"></script>
</header>
```
### Utilisation
-   Requête GET (affichage du formulaire)
    -   Utilise create_and_get_captcha pour générer les données du captcha :
        ```python
        from prune_captcha.utils import create_and_get_captcha
        ```
        ```python
        puzzle = create_and_get_captcha(request)
        ```
    -   Passe les données dans le contexte sous la variable puzzle :
        ```python
        return render(
            request,
            "website/pages/contact/page.html",
            {"form": form, "puzzle": puzzle},
        )
        ```
    -   Inclus le composant dans ton template :
        ```
        {% include "prune_captcha/captcha.html" %}
        ```
-   Requête POST (soumission du formulaire)
    -   Utilise verify_captcha pour valider le captcha :
        ```python
        from prune_captcha.utils import verify_captcha
        ```
        ```python
        response = verify_captcha(request)
        ```
    -   True si le captcha est correct, sinon False.
    -   Redirige en cas de captcha incorrect.
            
         
        Raw data
        
            {
    "_id": null,
    "home_page": null,
    "name": "prune-lib",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.13",
    "maintainer_email": null,
    "keywords": "captcha, django, code-quality",
    "author": null,
    "author_email": "Arnout <bastien@prune.sh>",
    "download_url": "https://files.pythonhosted.org/packages/93/b3/b36dcf41512ba2f56968eb42b4a6b5667b24757d332edfc4a68018d242bb/prune_lib-2.1.1.tar.gz",
    "platform": null,
    "description": "# prune_lib\n\nprune_lib est une biblioth\u00e8que Python regroupant des fonctions utilitaires r\u00e9utilisables.  \nL\u2019objectif est de faciliter le d\u00e9veloppement de projets en centralisant des outils communs.\n\nLe projet inclut aussi prune_captcha, un module d\u00e9di\u00e9 \u00e0 l\u2019ajout d\u2019un CAPTCHA personnalis\u00e9 dans les formulaires de contact.\n\n## Projet UV\n\n### Installation\n\nLancez la commande suivante dans le terminal :\n\n```bash\nuv add prune_lib\n```\n\n### Mise \u00e0 jour de la bilbioth\u00e8que\n\nN\u2019h\u00e9sitez pas \u00e0 ex\u00e9cuter r\u00e9guli\u00e8rement uv sync --upgrade, car la biblioth\u00e8que \u00e9volue avec le temps et nos pratiques !\n\n## Projet Poetry\n\n### Installation\n\nLancez la commande suivante :\n\n```bash\npoetry add prune_lib\n```\n\n### Mise \u00e0 jour de la biblioth\u00e8que\n\nN\u2019h\u00e9sitez pas \u00e0 ex\u00e9cuter r\u00e9guli\u00e8rement poetry update, car la biblioth\u00e8que \u00e9volue avec le temps et nos pratiques !\n\n## Objectifs\n\n-   R\u00e9utiliser facilement des fonctions communes.\n-   Fournir une alternative simple \u00e0 reCAPTCHA.\n-   Ne d\u00e9pendre d\u2019aucun service externe.\n\n## Int\u00e9gration du captcha\n\n### Configuration\n\nDans `settings.py`, d\u00e9finis le chemin des images utilis\u00e9es pour le puzzle :\n\n```python\nPUZZLE_IMAGE_STATIC_PATH = \"website/static/website/images/puzzles/\"\n```\n\nImportant : Tu dois importer les fichiers statiques (css, js) pr\u00e9sents dans \"prune_captcha/static/\".\n\n```html\n<header>\n    <link\n        rel=\"stylesheet\"\n        href=\"{% static 'prune_captcha/css/captcha.css' %}\"\n    />\n    <script defer src=\"{% static 'prune_captcha/js/captcha.js' %}\"></script>\n</header>\n```\n\n### Utilisation\n\n-   Requ\u00eate GET (affichage du formulaire)\n\n    -   Utilise create_and_get_captcha pour g\u00e9n\u00e9rer les donn\u00e9es du captcha :\n\n        ```python\n        from prune_captcha.utils import create_and_get_captcha\n        ```\n\n        ```python\n        puzzle = create_and_get_captcha(request)\n        ```\n\n    -   Passe les donn\u00e9es dans le contexte sous la variable puzzle :\n\n        ```python\n        return render(\n            request,\n            \"website/pages/contact/page.html\",\n            {\"form\": form, \"puzzle\": puzzle},\n        )\n        ```\n\n    -   Inclus le composant dans ton template :\n\n        ```\n        {% include \"prune_captcha/captcha.html\" %}\n        ```\n\n-   Requ\u00eate POST (soumission du formulaire)\n\n    -   Utilise verify_captcha pour valider le captcha :\n\n        ```python\n        from prune_captcha.utils import verify_captcha\n        ```\n\n        ```python\n        response = verify_captcha(request)\n        ```\n\n    -   True si le captcha est correct, sinon False.\n\n    -   Redirige en cas de captcha incorrect.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Internal library for prune.sh",
    "version": "2.1.1",
    "project_urls": {
        "Made_by": "https://prune.sh/"
    },
    "split_keywords": [
        "captcha",
        " django",
        " code-quality"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bb1a754b5f6415fa211178aec8b6a5af340a506579c4e5fce052537ae6acdc16",
                "md5": "b38593a8bc11d8ce2352bd87983d4169",
                "sha256": "2bf3bc6ca99352242d057af2b7b160e6317c2ebdb9c2f394dd38c8e7329e0e13"
            },
            "downloads": -1,
            "filename": "prune_lib-2.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b38593a8bc11d8ce2352bd87983d4169",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.13",
            "size": 27873,
            "upload_time": "2025-10-16T09:39:29",
            "upload_time_iso_8601": "2025-10-16T09:39:29.389435Z",
            "url": "https://files.pythonhosted.org/packages/bb/1a/754b5f6415fa211178aec8b6a5af340a506579c4e5fce052537ae6acdc16/prune_lib-2.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "93b3b36dcf41512ba2f56968eb42b4a6b5667b24757d332edfc4a68018d242bb",
                "md5": "e22bd78b43f3395f11d96fa1428ab495",
                "sha256": "1f0c06ec108a3adf69d87b7720063ce55e7aba906f5c510b7d9b648a85d81ecd"
            },
            "downloads": -1,
            "filename": "prune_lib-2.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "e22bd78b43f3395f11d96fa1428ab495",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.13",
            "size": 20392,
            "upload_time": "2025-10-16T09:39:30",
            "upload_time_iso_8601": "2025-10-16T09:39:30.611206Z",
            "url": "https://files.pythonhosted.org/packages/93/b3/b36dcf41512ba2f56968eb42b4a6b5667b24757d332edfc4a68018d242bb/prune_lib-2.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-16 09:39:30",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "prune-lib"
}