%global _empty_manifest_terminate_build 0 Name: python-django-rest-captcha Version: 0.3.0 Release: 1 Summary: Lightweight version of django-simple-captcha for work with django-rest-framework License: MIT URL: https://pypi.org/project/django-rest-captcha/ Source0: https://mirrors.nju.edu.cn/pypi/web/packages/92/16/66b2220909647f4d95a4b41888aca63d2a1644296cbea8e7976d2f373ecf/django_rest_captcha-0.3.0.tar.gz BuildArch: noarch Requires: python3-djangorestframework Requires: python3-django Requires: python3-Pillow %description # Django rest captcha Lightweight version of `django-simple-captcha` for work with `django-rest-framework`. ## Features - Speed: use `cache` instead of database - Safety: union methods for generate key and image. (You can't generate many images for one key) - Easy: only one rest api (for generate, refresh image). ## Usage Add `RestCaptchaSerializer` to your protected request validator: ``` from rest_captcha serializer import RestCaptchaSerializer class HumanOnlyDataSerializer(RestCaptchaSerializer): pass ``` This code add to your serializer two required fields (captcha_key, captcha_value) For provide this fields client(js code) should generate key: ``` > curl -X POST http:localhost:8000/api/captcha/ | python -m json.tool { 'image_type': 'image/png', 'image_decode': 'base64', 'captcha_key': 'de67e7f3-72d9-42d8-9677-ea381610363d', 'captcha_value': '... image encoded in base64' } ``` `captcha_value` - is base64 encoded PNG image, client should decode and show this image to human for validation and send letters from captcha to protected api. If human have mistake - client should re generate your image. **Note:** See also [trottling](https://www.django-rest-framework.org/api-guide/throttling/) for protect public api ## Install ``` > pip install django-rest-captcha ``` ### Add to your settings.py Add to installed apps: ``` INSTALLED_APPS = ( ... 'rest_captcha', ) ``` Set rest_captcha settings (if you want), see defaults: ``` REST_CAPTCHA = { 'CAPTCHA_CACHE': 'default', 'CAPTCHA_TIMEOUT': 300, # 5 minutes 'CAPTCHA_LENGTH': 4, 'CAPTCHA_FONT_SIZE': 22, 'CAPTCHA_IMAGE_SIZE': (90, 40), 'CAPTCHA_LETTER_ROTATION': (-35, 35), 'CAPTCHA_FOREGROUND_COLOR': '#001100', 'CAPTCHA_BACKGROUND_COLOR': '#ffffff', 'CAPTCHA_FONT_PATH': FONT_PATH, 'CAPTCHA_CACHE_KEY': 'rest_captcha_{key}.{version}', 'FILTER_FUNCTION': 'rest_captcha.captcha.filter_default', 'NOISE_FUNCTION': 'rest_captcha.captcha.noise_default' } ``` We recommend using redis or local memory as cache with set parameter, with bigger value of MAX_ENTRIES: ``` CACHES={ 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'rest-captcha', 'MAX_ENTRIES': 10000, } } ``` ### Add hooks to your app router (urls.py): ``` urlpatterns = [ ... url(r'api/captcha/', include('rest_captcha.urls')), ] ``` %package -n python3-django-rest-captcha Summary: Lightweight version of django-simple-captcha for work with django-rest-framework Provides: python-django-rest-captcha BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-rest-captcha # Django rest captcha Lightweight version of `django-simple-captcha` for work with `django-rest-framework`. ## Features - Speed: use `cache` instead of database - Safety: union methods for generate key and image. (You can't generate many images for one key) - Easy: only one rest api (for generate, refresh image). ## Usage Add `RestCaptchaSerializer` to your protected request validator: ``` from rest_captcha serializer import RestCaptchaSerializer class HumanOnlyDataSerializer(RestCaptchaSerializer): pass ``` This code add to your serializer two required fields (captcha_key, captcha_value) For provide this fields client(js code) should generate key: ``` > curl -X POST http:localhost:8000/api/captcha/ | python -m json.tool { 'image_type': 'image/png', 'image_decode': 'base64', 'captcha_key': 'de67e7f3-72d9-42d8-9677-ea381610363d', 'captcha_value': '... image encoded in base64' } ``` `captcha_value` - is base64 encoded PNG image, client should decode and show this image to human for validation and send letters from captcha to protected api. If human have mistake - client should re generate your image. **Note:** See also [trottling](https://www.django-rest-framework.org/api-guide/throttling/) for protect public api ## Install ``` > pip install django-rest-captcha ``` ### Add to your settings.py Add to installed apps: ``` INSTALLED_APPS = ( ... 'rest_captcha', ) ``` Set rest_captcha settings (if you want), see defaults: ``` REST_CAPTCHA = { 'CAPTCHA_CACHE': 'default', 'CAPTCHA_TIMEOUT': 300, # 5 minutes 'CAPTCHA_LENGTH': 4, 'CAPTCHA_FONT_SIZE': 22, 'CAPTCHA_IMAGE_SIZE': (90, 40), 'CAPTCHA_LETTER_ROTATION': (-35, 35), 'CAPTCHA_FOREGROUND_COLOR': '#001100', 'CAPTCHA_BACKGROUND_COLOR': '#ffffff', 'CAPTCHA_FONT_PATH': FONT_PATH, 'CAPTCHA_CACHE_KEY': 'rest_captcha_{key}.{version}', 'FILTER_FUNCTION': 'rest_captcha.captcha.filter_default', 'NOISE_FUNCTION': 'rest_captcha.captcha.noise_default' } ``` We recommend using redis or local memory as cache with set parameter, with bigger value of MAX_ENTRIES: ``` CACHES={ 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'rest-captcha', 'MAX_ENTRIES': 10000, } } ``` ### Add hooks to your app router (urls.py): ``` urlpatterns = [ ... url(r'api/captcha/', include('rest_captcha.urls')), ] ``` %package help Summary: Development documents and examples for django-rest-captcha Provides: python3-django-rest-captcha-doc %description help # Django rest captcha Lightweight version of `django-simple-captcha` for work with `django-rest-framework`. ## Features - Speed: use `cache` instead of database - Safety: union methods for generate key and image. (You can't generate many images for one key) - Easy: only one rest api (for generate, refresh image). ## Usage Add `RestCaptchaSerializer` to your protected request validator: ``` from rest_captcha serializer import RestCaptchaSerializer class HumanOnlyDataSerializer(RestCaptchaSerializer): pass ``` This code add to your serializer two required fields (captcha_key, captcha_value) For provide this fields client(js code) should generate key: ``` > curl -X POST http:localhost:8000/api/captcha/ | python -m json.tool { 'image_type': 'image/png', 'image_decode': 'base64', 'captcha_key': 'de67e7f3-72d9-42d8-9677-ea381610363d', 'captcha_value': '... image encoded in base64' } ``` `captcha_value` - is base64 encoded PNG image, client should decode and show this image to human for validation and send letters from captcha to protected api. If human have mistake - client should re generate your image. **Note:** See also [trottling](https://www.django-rest-framework.org/api-guide/throttling/) for protect public api ## Install ``` > pip install django-rest-captcha ``` ### Add to your settings.py Add to installed apps: ``` INSTALLED_APPS = ( ... 'rest_captcha', ) ``` Set rest_captcha settings (if you want), see defaults: ``` REST_CAPTCHA = { 'CAPTCHA_CACHE': 'default', 'CAPTCHA_TIMEOUT': 300, # 5 minutes 'CAPTCHA_LENGTH': 4, 'CAPTCHA_FONT_SIZE': 22, 'CAPTCHA_IMAGE_SIZE': (90, 40), 'CAPTCHA_LETTER_ROTATION': (-35, 35), 'CAPTCHA_FOREGROUND_COLOR': '#001100', 'CAPTCHA_BACKGROUND_COLOR': '#ffffff', 'CAPTCHA_FONT_PATH': FONT_PATH, 'CAPTCHA_CACHE_KEY': 'rest_captcha_{key}.{version}', 'FILTER_FUNCTION': 'rest_captcha.captcha.filter_default', 'NOISE_FUNCTION': 'rest_captcha.captcha.noise_default' } ``` We recommend using redis or local memory as cache with set parameter, with bigger value of MAX_ENTRIES: ``` CACHES={ 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'rest-captcha', 'MAX_ENTRIES': 10000, } } ``` ### Add hooks to your app router (urls.py): ``` urlpatterns = [ ... url(r'api/captcha/', include('rest_captcha.urls')), ] ``` %prep %autosetup -n django-rest-captcha-0.3.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-django-rest-captcha -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 0.3.0-1 - Package Spec generated