Skip to content
Snippets Groups Projects
Commit 9db57199 authored by jan.bednarik's avatar jan.bednarik
Browse files

uniweb: Captcha in forms

parent 94e2f350
No related branches found
No related tags found
2 merge requests!206Release,!205Uniweb
Pipeline #2849 passed
...@@ -4,4 +4,4 @@ line_length = 88 ...@@ -4,4 +4,4 @@ line_length = 88
multi_line_output = 3 multi_line_output = 3
default_section = "THIRDPARTY" default_section = "THIRDPARTY"
include_trailing_comma = true include_trailing_comma = true
known_third_party = arrow,django,environ,faker,ics,markdown,modelcluster,pirates,pytest,pytz,requests,sentry_sdk,snapshottest,taggit,wagtail,wagtailmetadata known_third_party = arrow,captcha,django,environ,faker,ics,markdown,modelcluster,pirates,pytest,pytz,requests,sentry_sdk,snapshottest,taggit,wagtail,wagtailmetadata
...@@ -52,6 +52,7 @@ INSTALLED_APPS = [ ...@@ -52,6 +52,7 @@ INSTALLED_APPS = [
"regulace_konopi", "regulace_konopi",
"green_deal", "green_deal",
"widget_tweaks", "widget_tweaks",
"captcha",
"wagtail.contrib.forms", "wagtail.contrib.forms",
"wagtail.contrib.redirects", "wagtail.contrib.redirects",
"wagtail.contrib.modeladmin", "wagtail.contrib.modeladmin",
...@@ -232,6 +233,13 @@ MAJAK_ENV = env.str("MAJAK_ENV", default="prod") ...@@ -232,6 +233,13 @@ MAJAK_ENV = env.str("MAJAK_ENV", default="prod")
SETTINGS_EXPORT = ["MAJAK_ENV"] SETTINGS_EXPORT = ["MAJAK_ENV"]
CAPTCHA_BACKGROUND_COLOR = "#fafafa"
CAPTCHA_FOREGROUND_COLOR = "#303132"
CAPTCHA_LETTER_ROTATION = (-20, 20)
CAPTCHA_FONT_SIZE = 30
CAPTCHA_IMAGE_SIZE = (120, 47)
# CUSTOM APPS SETTINGS # CUSTOM APPS SETTINGS
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
DONATE_PORTAL_REDIRECT_URL = env.str("DONATE_PORTAL_REDIRECT_URL", default="") DONATE_PORTAL_REDIRECT_URL = env.str("DONATE_PORTAL_REDIRECT_URL", default="")
......
import captcha.urls
from django.conf import settings from django.conf import settings
from django.conf.urls import include, url from django.conf.urls import include, url
from django.contrib import admin from django.contrib import admin
...@@ -13,6 +14,7 @@ urlpatterns = [ ...@@ -13,6 +14,7 @@ urlpatterns = [
url(r"^admin/", include(wagtailadmin_urls)), url(r"^admin/", include(wagtailadmin_urls)),
url(r"^documents/", include(wagtaildocs_urls)), url(r"^documents/", include(wagtaildocs_urls)),
url(r"^search/$", search_views.search, name="search"), url(r"^search/$", search_views.search, name="search"),
url(r"^captcha/", include(captcha.urls)),
] + pirates_urlpatterns ] + pirates_urlpatterns
......
...@@ -5,6 +5,7 @@ django-extensions ...@@ -5,6 +5,7 @@ django-extensions
django-redis django-redis
django-settings-export django-settings-export
django-widget-tweaks django-widget-tweaks
django-simple-captcha
psycopg2-binary psycopg2-binary
pirates<=0.6 pirates<=0.6
whitenoise whitenoise
......
...@@ -16,12 +16,14 @@ django-environ==0.4.5 # via -r base.in ...@@ -16,12 +16,14 @@ django-environ==0.4.5 # via -r base.in
django-extensions==3.1.1 # via -r base.in django-extensions==3.1.1 # via -r base.in
django-filter==2.4.0 # via wagtail django-filter==2.4.0 # via wagtail
django-modelcluster==5.1 # via wagtail django-modelcluster==5.1 # via wagtail
django-ranged-response==0.2.0 # via django-simple-captcha
django-redis==4.12.1 # via -r base.in django-redis==4.12.1 # via -r base.in
django-settings-export==1.2.1 # via -r base.in django-settings-export==1.2.1 # via -r base.in
django-simple-captcha==0.5.14 # via -r base.in
django-taggit==1.3.0 # via wagtail django-taggit==1.3.0 # via wagtail
django-treebeard==4.5.1 # via wagtail django-treebeard==4.5.1 # via wagtail
django-widget-tweaks==1.4.8 # via -r base.in django-widget-tweaks==1.4.8 # via -r base.in
django==3.1.7 # via django-filter, django-redis, django-settings-export, django-taggit, django-treebeard, djangorestframework, mozilla-django-oidc, wagtail django==3.1.7 # via django-filter, django-ranged-response, django-redis, django-settings-export, django-simple-captcha, django-taggit, django-treebeard, djangorestframework, mozilla-django-oidc, wagtail
djangorestframework==3.12.4 # via wagtail djangorestframework==3.12.4 # via wagtail
draftjs-exporter==2.1.7 # via wagtail draftjs-exporter==2.1.7 # via wagtail
et-xmlfile==1.0.1 # via openpyxl et-xmlfile==1.0.1 # via openpyxl
...@@ -35,7 +37,7 @@ mozilla-django-oidc==1.2.4 # via pirates ...@@ -35,7 +37,7 @@ mozilla-django-oidc==1.2.4 # via pirates
numpy==1.20.2 # via opencv-python numpy==1.20.2 # via opencv-python
opencv-python==4.5.1.48 # via -r base.in opencv-python==4.5.1.48 # via -r base.in
openpyxl==3.0.7 # via tablib openpyxl==3.0.7 # via tablib
pillow==8.1.2 # via wagtail pillow==8.1.2 # via django-simple-captcha, wagtail
pirates==0.5.0 # via -r base.in pirates==0.5.0 # via -r base.in
psycopg2-binary==2.8.6 # via -r base.in psycopg2-binary==2.8.6 # via -r base.in
pycparser==2.20 # via cffi pycparser==2.20 # via cffi
...@@ -45,7 +47,7 @@ pytz==2021.1 # via django, django-modelcluster, l18n ...@@ -45,7 +47,7 @@ pytz==2021.1 # via django, django-modelcluster, l18n
redis==3.5.3 # via django-redis redis==3.5.3 # via django-redis
requests==2.25.1 # via -r base.in, mozilla-django-oidc, wagtail requests==2.25.1 # via -r base.in, mozilla-django-oidc, wagtail
sentry-sdk==1.0.0 # via -r base.in sentry-sdk==1.0.0 # via -r base.in
six==1.15.0 # via html5lib, ics, l18n, mozilla-django-oidc, pyopenssl, python-dateutil six==1.15.0 # via django-simple-captcha, html5lib, ics, l18n, mozilla-django-oidc, pyopenssl, python-dateutil
soupsieve==2.2.1 # via beautifulsoup4 soupsieve==2.2.1 # via beautifulsoup4
sqlparse==0.4.1 # via django sqlparse==0.4.1 # via django
tablib[xls,xlsx]==3.0.0 # via wagtail tablib[xls,xlsx]==3.0.0 # via wagtail
......
from captcha.fields import CaptchaField
from django import forms from django import forms
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db import models from django.db import models
...@@ -489,7 +490,6 @@ class UniwebFormPage(AbstractForm, SubpageMixin, MetadataPageMixin): ...@@ -489,7 +490,6 @@ class UniwebFormPage(AbstractForm, SubpageMixin, MetadataPageMixin):
### PANELS ### PANELS
content_panels = AbstractForm.content_panels + [ content_panels = AbstractForm.content_panels + [
FormSubmissionsPanel(),
StreamFieldPanel("content_before"), StreamFieldPanel("content_before"),
InlinePanel("form_fields", label="formulář"), InlinePanel("form_fields", label="formulář"),
StreamFieldPanel("content_after"), StreamFieldPanel("content_after"),
...@@ -534,3 +534,8 @@ class UniwebFormPage(AbstractForm, SubpageMixin, MetadataPageMixin): ...@@ -534,3 +534,8 @@ class UniwebFormPage(AbstractForm, SubpageMixin, MetadataPageMixin):
class Meta: class Meta:
verbose_name = "Formulářová stránka" verbose_name = "Formulářová stránka"
def get_form_class(self):
form = super().get_form_class()
form.base_fields["captcha"] = CaptchaField(label="opište písmena z obrázku")
return form
...@@ -58,8 +58,13 @@ ...@@ -58,8 +58,13 @@
<label class="form-field__label" for="{{ field.id_for_label }}">{{ field.label }}</label> <label class="form-field__label" for="{{ field.id_for_label }}">{{ field.label }}</label>
</div> </div>
</div> </div>
{% elif field.widget_type == "captchatext" %}
<label class="form-field__label" for="{{ field.id_for_label }}">{{ field.label }}</label>
<div class="form-field__wrapper form-field__wrapper--shadowed w-1/2">
{{ field|add_class:"text-input form-field__control" }}
</div>
{% else %} {% else %}
<label class="form-field__label" for="{{ field.id_for_label }}">{{ field.label }} ({{ field.widget_type }})</label> <label class="form-field__label" for="{{ field.id_for_label }}">{{ field.label }}</label>
<div class="form-field__wrapper form-field__wrapper--shadowed"> <div class="form-field__wrapper form-field__wrapper--shadowed">
{{ field|add_class:"text-input form-field__control" }} {{ field|add_class:"text-input form-field__control" }}
</div> </div>
...@@ -77,7 +82,7 @@ ...@@ -77,7 +82,7 @@
{% endfor %} {% endfor %}
</div> </div>
<button class="btn text-lg mt-6 mb-4 btn--black-100"> <button class="btn text-lg mt-6 mb-4 btn--black-100 btn--hoveractive">
<div class="btn__body ">odeslat</div> <div class="btn__body ">odeslat</div>
</button> </button>
</form> </form>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment