Metadata-Version: 2.1
Name: pyramid-captcha
Version: 1.0.0
Summary: Pyramid Captcha
Home-page: https://gitlab.com/geo-bl-ch/pyramid-captcha
Author: Karsten Deininger
Author-email: karsten.deininger@bl.ch
License: UNKNOWN
Keywords: web pyramid captcha
Platform: UNKNOWN
Classifier: License :: OSI Approved :: BSD License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Framework :: Pyramid
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Dist: captcha
Requires-Dist: pyramid

Pyramid Captcha
===============

This Python package provides a captcha implementation for use with the
`Pyramid Web Framework <https://docs.pylonsproject.org/projects/pyramid/en/latest/>`__.
It is based on the `captcha <https://pypi.org/project/captcha/>`__ library and uses
Pyramid sessions for captcha validation. Please refer to the
`documentation <https://geo-bl-ch.gitlab.io/pyramid-captcha>`__ for further information.

.. note:: Development builds of this package can be found at https://test.pypi.org/project/pyramid-captcha/.

Usage
-----

To generate a captcha, you have to import the class :code:`Captcha`.

.. code-block:: python

    from pyramid_captcha import Captcha

The simplest solution is to use this class directly in your
view definition.

.. code-block:: python

    config.add_route('captcha_generate', '/captcha')
    config.add_view(
        Captcha,
        attr='generate',
        route_name='captcha_generate',
        request_method='GET'
    )

In this case, the route :code:`/captcha` will return a captcha image
with the default length of 6 characters. If you want to adjust the
captcha properties, you have to wrap it into a view callable, for
example to change the number of characters.

.. code-block:: python

    def generate(request):
        return Captcha(request, length=4).generate()

The generated captcha value is stored in the current session. It
can be checked against a submitted form value using the
:code:`validate()` method.

.. code-block:: python

    try:
        Captcha(request).validate()
    except CaptchaError as e:
        raise HTTPForbidden(e)

Demo
----

You can check out the code and run a little demo by calling
:code:`make serve`.

Changelog
=========

1.0.0
-----

https://gitlab.com/geo-bl-ch/pyramid-captcha/-/milestones/1

- Add parameter for value validation
- Configurable captcha length
- Initial version


