-i https://py.mdrn.pl/simple/
# django
-Django==2.2.4
+Django==2.2.5
fnpdjango==0.4
#django-pipeline==1.6.13
django-admin-ordering==0.10.0
django-machina==1.0.2
+# A version compatible with Django 2.2, with long help text and editable max_length.
+-e git+https://github.com/rczajka/django-forms-builder@1e57b980ef5778895512218fbea015ed428dc89a#egg=django-forms-builder
+
+
oauthlib>=3.0.1,<3.1
# contact
else:
# Create readonly fields from the body JSON.
attachments = list(instance.attachment_set.all())
- body_keys = body.keys() + [a.tag for a in attachments]
+ body_keys = list(body.keys()) + [a.tag for a in attachments]
# Find the original form.
try:
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
from django import forms
+from django.utils.html import conditional_escape
+from django.utils.safestring import mark_safe
from .widgets import HeaderWidget
def __init__(self, required=False, widget=None, *args, **kwargs):
if widget is None:
widget = HeaderWidget
- super(HeaderField, self).__init__(required=required, widget=widget, *args, **kwargs)
+ super(HeaderField, self).__init__(required=False, widget=widget, *args, **kwargs)
+ self.label = mark_safe('<b>' + conditional_escape(self.label) + '</b>')
+
+
+class SeparatorField(HeaderField):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.label = ''
'site_domain': getattr(self, 'site_domain', site.domain),
'contact': contact,
}
- context = RequestContext(request)
mail_managers_subject = render_to_string([
'contact/%s/mail_managers_subject.txt' % self.form_tag,
'contact/mail_managers_subject.txt',
- ], dictionary, context).strip()
+ ], dictionary, request).strip()
mail_managers_body = render_to_string([
'contact/%s/mail_managers_body.txt' % self.form_tag,
'contact/mail_managers_body.txt',
- ], dictionary, context)
+ ], dictionary, request)
mail_managers(mail_managers_subject, mail_managers_body, fail_silently=True)
try:
mail_subject = render_to_string([
'contact/%s/mail_subject.txt' % self.form_tag,
'contact/mail_subject.txt',
- ], dictionary, context).strip()
+ ], dictionary, request).strip()
if self.result_page:
mail_body = render_to_string(
'contact/%s/results_email.txt' % contact.form_tag,
{
'contact': contact,
'results': self.results(contact),
- }, context)
+ }, request)
else:
mail_body = render_to_string([
'contact/%s/mail_body.txt' % self.form_tag,
'contact/mail_body.txt',
- ], dictionary, context)
+ ], dictionary, request)
send_mail(mail_subject, mail_body, 'no-reply@%s' % site.domain, [contact.contact], fail_silently=True)
return contact
if type(value) in (tuple, list, dict):
value = yaml.safe_dump(value, allow_unicode=True, default_flow_style=False)
if for_html:
- value = smart_text(value).replace(" ", unichr(160))
+ value = smart_text(value).replace(" ", chr(160))
return value
class Meta:
formsets = {
prefix: formset_class(request.POST, request.FILES, prefix=prefix)
for prefix, formset_class in formset_classes.items()}
- if form.is_valid() and all(formset.is_valid() for formset in formsets.itervalues()):
+ if form.is_valid() and all(formset.is_valid() for formset in formsets.values()):
contact = form.save(request, formsets.values())
if form.result_page:
return redirect('contact_results', contact.id, contact.digest())
class CoJaCzytamForm(ContactForm):
- form_tag = 'cojaczytam'
+ form_tag = 'cojaczytam2019'
form_title = "#cojaczytam?"
admin_list = ['opiekun_nazwisko', 'contact', 'nazwa_kampanii']
# ends_on = (2018, 11, 16)
opiekun_nazwisko = forms.CharField(label='Imię i nazwisko Opiekuna/ki', max_length=128)
contact = forms.EmailField(label='Adres e-mail Opiekuna/ki', max_length=128)
opiekun_tel = forms.CharField(label='Numer telefonu Opiekuna/ki', max_length=32)
- nazwa_dkk = forms.CharField(label='Nazwa szkoły/biblioteki publicznej', max_length=128)
- adres_dkk = forms.CharField(label='Adres szkoły/biblioteki publicznej', max_length=128)
+ hadres = HeaderField(label=mark_safe('<b>Placówka</b>'))
+ nazwa_dkk = forms.CharField(label='Nazwa placówki', max_length=128)
+ adres1_dkk = forms.CharField(label='Ulica i numer', max_length=128)
+ adres2_dkk = forms.CharField(label='Miejscowość', max_length=128)
+ adres3_dkk = forms.CharField(label='Kod pocztowy', max_length=128)
+
+ hkampania = HeaderField(label=mark_safe('<b>Kampania</b>'))
nazwa_kampanii = forms.CharField(label='Nazwa kampanii', max_length=255)
wiek = forms.ChoiceField(label='Grupa wiekowa', choices=(
- ('9-14', 'uczniowie kl. IV-VIII szkół podstawowych w wieku 9-14 lat,'),
- ('15-19', 'uczniowie gimnazjum oraz wszystkich typów szkół ponadpodstawowych w wieku 15-19.'),
+ ('9-14', 'uczestnicy w wieku 9-14 lat,'),
+ ('15-19', 'uczestnicy w wieku 15-19.'),
), widget=forms.RadioSelect)
- uczestnik1_header = HeaderField(label='Dane\xa0Uczestników (3 do 5)')
+ uczestnik1_header = HeaderField(label=mark_safe('<b>Dane\xa0Uczestników (3\xa0do\xa05)</b>'))
uczestnik1_imie = forms.CharField(label='Imię', max_length=128)
uczestnik1_nazwisko = forms.CharField(label='Nazwisko', max_length=128)
uczestnik1_email = forms.EmailField(label='Adres e-mail', max_length=128)
uczestnik5_nazwisko = forms.CharField(label='Nazwisko', max_length=128, required=False)
uczestnik5_email = forms.EmailField(label='Adres e-mail', max_length=128, required=False)
- ankieta_header = HeaderField(label='')
- opis_kampanii = forms.CharField(
- label='Krótki opis realizacji oraz przebiegu kampanii', max_length=255, widget=forms.Textarea)
- co_sie_udalo = forms.CharField(label='Co udało Wam się zrealizować?', max_length=1024, widget=forms.Textarea)
- co_sie_nie_udalo = forms.CharField(
- label='Czy jest coś, co chcieliście zrealizować, a się nie udało? Jeśli tak, to dlaczego?', max_length=1024,
+ ankieta_header = HeaderField(label=mark_safe('<b>Efekty</b>'))
+ opis_kampanii = forms.CharField(help_text='maks. 250 znaków',
+ label='Krótki opis realizacji oraz przebiegu kampanii', max_length=250, widget=forms.Textarea)
+ co_sie_udalo = forms.CharField(help_text='maks. 1000 znaków',label='Co udało Wam się zrealizować?', max_length=1000, widget=forms.Textarea)
+ co_sie_nie_udalo = forms.CharField(help_text='maks. 1000 znaków',
+ label='Czy jest coś, co chcieliście zrealizować, a się nie udało? Jeśli tak, to dlaczego?', max_length=1000,
widget=forms.Textarea)
- wnioski = forms.CharField(
- label='Jakie wnioski na przyszłość wyciągnęliście z tego, czego się nie udało zrealizować?', max_length=1024,
+ wnioski = forms.CharField(help_text='maks. 1000 znaków',
+ label='Jakie wnioski na przyszłość wyciągnęliście z tego, czego się nie udało zrealizować?', max_length=1000,
widget=forms.Textarea)
- zasieg = forms.CharField(
+ zasieg = forms.CharField(help_text='maks. 1000 znaków',
label='Do ilu odbiorców udało Wam się dotrzeć z Waszą kompanią? Podaj liczbę, może być szacunkowa.',
- max_length=1024, widget=forms.Textarea)
- grupy_odbiorcow = forms.CharField(
+ max_length=1000, widget=forms.Textarea)
+ grupy_odbiorcow = forms.CharField(help_text='maks. 1000 znaków',
label='Do jakich grup odbiorców dotarliście (np. uczniowie, nauczyciele, rodzice, seniorzy, inni)?',
- max_length=1024, widget=forms.Textarea)
+ max_length=1000, widget=forms.Textarea)
plik = forms.FileField(
label='Plik .zip ze stworzonymi materiałami (np. zdjęcia, dokumenty tekstowe)')
- materialy = forms.CharField(
- label='Adresy stworzonych materiałów online (jeśli dotyczy)', max_length=1024, widget=forms.Textarea,
- required=False)
+ materialy = forms.CharField(help_text='maks. 1000 znaków',
+ label='Adresy stworzonych materiałów online', max_length=1000, widget=forms.Textarea)
- agree_header = HeaderField(label='Oświadczenia')
+ agree_header = HeaderField(label=mark_safe('<b>Oświadczenia</b>'))
agree_terms = forms.BooleanField(
label='Regulamin',
help_text=mark_safe_lazy(
- 'Znam i akceptuję <a href="/media/chunks/attachment/Regulamin_konkursu_cojaczytam_edycja_2018.pdf">'
+ 'Znam i akceptuję <a href="/media/chunks/attachment/Regulamin_konkursu_cojaczytam_edycja_2019.pdf">'
'Regulamin Konkursu</a>.'),
)
agree_data = forms.BooleanField(
'isbn',
'paypal',
'push',
+ 'club.apps.ClubConfig',
]
INSTALLED_APPS_CONTRIB = [
'getpaid',
'getpaid.backends.payu',
'django_extensions',
- 'club.apps.ClubConfig',
+ 'forms_builder.forms',
'debug_toolbar',
'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
},
}
+
+
+FORMS_BUILDER_USE_SITES = False
+FORMS_BUILDER_EDITABLE_FIELD_MAX_LENGTH = True
+FORMS_BUILDER_EDITABLE_SLUGS = True
+FORMS_BUILDER_EXTRA_FIELDS = [
+ (100, 'contact.fields.HeaderField', 'Header'),
+ (101, 'contact.fields.SeparatorField', 'Separator'),
+]
+FORMS_BUILDER_HELPTEXT_MAX_LENGTH = 2048
+FORMS_BUILDER_REQUIRED_CSS_CLASS = 'required'
--- /dev/null
+{% extends form.base_template|default:"base/base.html" %}
+{% load forms_builder_tags %}
+
+{% block title %}{{ form.title }}{% endblock %}
+
+{% block body %}
+ {% render_built_form form %}
+{% endblock %}
--- /dev/null
+{% extends form.base_template|default:"base/base.html" %}
+{% load forms_builder_tags %}
+
+{% block title %}{{ form.title }}{% endblock %}
+
+{% block body %}
+ <h1>{{ form.title }}</h1>
+ <p>{{ form.response }}</p>
+{% endblock %}
--- /dev/null
+{% load honeypot %}
+
+<h1>{{ form.title }}</h1>
+
+ <div class="form-info">
+ {{ form.intro|safe }}
+ </div>
+
+ {{ form_for_form.media }}
+ <form method="POST" action="{{ form.get_absolute_url }}" {% if form_for_form.is_multipart %}enctype="multipart/form-data"{% endif %} class="submit-form">
+ {% csrf_token %}
+ {% render_honeypot_field %}
+ <table>
+ {{ form_for_form.as_table }}
+ <tr><td></td><td><button>{{ form.button_text }}</button></td></tr>
+ </table>
+ </form>
+
url(r'^ankieta/', include('polls.urls')),
url(r'^biblioteki/', include('libraries.urls')),
url(r'^newsletter/', include('newsletter.urls')),
+ url(r'^formularz-new/', include('forms_builder.forms.urls')),
url(r'^formularz/', include('contact.urls')),
url(r'^isbn/', include('isbn.urls')),