Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-crispy-bootstrap3 for
openSUSE:Factory checked in at 2024-01-15 22:17:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-crispy-bootstrap3 (Old)
and /work/SRC/openSUSE:Factory/.python-crispy-bootstrap3.new.21961 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-crispy-bootstrap3"
Mon Jan 15 22:17:49 2024 rev:2 rq:1138700 version:2024.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-crispy-bootstrap3/python-crispy-bootstrap3.changes
2023-07-25 11:50:42.533313938 +0200
+++
/work/SRC/openSUSE:Factory/.python-crispy-bootstrap3.new.21961/python-crispy-bootstrap3.changes
2024-01-15 22:19:13.638840268 +0100
@@ -1,0 +2,9 @@
+Sun Jan 14 17:47:59 UTC 2024 - Dirk Müller <[email protected]>
+
+- update to 2024.1:
+ * Updated supported versions:
+ + Django 3.2, 4.2 and 5.0.
+ + Python 3.8+.
+ * Fixed form-control class issue with checkboxes.
+
+-------------------------------------------------------------------
Old:
----
crispy-bootstrap3-2022.1.tar.gz
New:
----
crispy-bootstrap3-2024.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-crispy-bootstrap3.spec ++++++
--- /var/tmp/diff_new_pack.ivL3ZE/_old 2024-01-15 22:19:14.786882459 +0100
+++ /var/tmp/diff_new_pack.ivL3ZE/_new 2024-01-15 22:19:14.786882459 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-crispy-bootstrap3
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,16 +17,17 @@
Name: python-crispy-bootstrap3
-Version: 2022.1
+Version: 2024.1
Release: 0
Summary: Bootstrap3 template pack for django-crispy-forms
License: MIT
URL: https://github.com/django-crispy-forms/crispy-bootstrap3
Source:
https://files.pythonhosted.org/packages/source/c/crispy-bootstrap3/crispy-bootstrap3-%{version}.tar.gz
-BuildRequires: python-rpm-macros
+BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module pip}
-BuildRequires: %{python_module wheel}
BuildRequires: %{python_module setuptools >= 61.0}
+BuildRequires: %{python_module wheel}
+BuildRequires: python-rpm-macros
# SECTION test requirements
BuildRequires: %{python_module Django >= 3.2}
BuildRequires: %{python_module django-crispy-forms >= 1.14.0}
++++++ crispy-bootstrap3-2022.1.tar.gz -> crispy-bootstrap3-2024.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crispy-bootstrap3-2022.1/CHANGELOG.md
new/crispy-bootstrap3-2024.1/CHANGELOG.md
--- old/crispy-bootstrap3-2022.1/CHANGELOG.md 2022-12-29 17:59:22.000000000
+0100
+++ new/crispy-bootstrap3-2024.1/CHANGELOG.md 2024-01-13 10:04:34.000000000
+0100
@@ -1,5 +1,12 @@
# CHANGELOG FOR CRISPY-BOOTSTRAP3
+## 2024.1
+
+* Updated supported versions:
+ * Django 3.2, 4.2 and 5.0.
+ * Python 3.8+.
+* Fixed form-control class issue with checkboxes.
+
## 2022.1
* Initial release to move the template pack from core crispy-forms to a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crispy-bootstrap3-2022.1/PKG-INFO
new/crispy-bootstrap3-2024.1/PKG-INFO
--- old/crispy-bootstrap3-2022.1/PKG-INFO 2022-12-29 17:59:38.053930000
+0100
+++ new/crispy-bootstrap3-2024.1/PKG-INFO 2024-01-13 10:04:46.421947000
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: crispy-bootstrap3
-Version: 2022.1
+Version: 2024.1
Summary: Bootstrap3 template pack for django-crispy-forms
Author: David Smith
License: MIT
@@ -26,6 +26,8 @@
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
+Requires-Dist: django-crispy-forms>=1.14.0
+Requires-Dist: django>=3.2
# crispy-bootstrap3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/crispy_bootstrap3/__init__.py
new/crispy-bootstrap3-2024.1/crispy_bootstrap3/__init__.py
--- old/crispy-bootstrap3-2022.1/crispy_bootstrap3/__init__.py 2022-12-29
17:59:22.000000000 +0100
+++ new/crispy-bootstrap3-2024.1/crispy_bootstrap3/__init__.py 2024-01-13
10:04:34.000000000 +0100
@@ -1 +1 @@
-__version__ = "2022.1"
+__version__ = "2024.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/crispy_bootstrap3/templates/bootstrap3/field.html
new/crispy-bootstrap3-2024.1/crispy_bootstrap3/templates/bootstrap3/field.html
---
old/crispy-bootstrap3-2022.1/crispy_bootstrap3/templates/bootstrap3/field.html
2022-12-29 17:59:22.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/crispy_bootstrap3/templates/bootstrap3/field.html
2024-01-13 10:04:34.000000000 +0100
@@ -25,11 +25,15 @@
{% endif %}
{% if not field|is_checkboxselectmultiple and not field|is_radioselect
%}
- {% if field|is_checkbox and form_show_labels %}
- <label for="{{ field.id_for_label }}" class="{% if
field.field.required %} requiredField{% endif %}">
+ {% if field|is_checkbox %}
+ {% if form_show_labels %}
+ <label for="{{ field.id_for_label }}" class="{% if
field.field.required %} requiredField{% endif %}">
+ {% crispy_field field %}
+ {{ field.label }}{% if field.field.required %}<span
class="asteriskField">*</span>{% endif %}
+ </label>
+ {% else %}
{% crispy_field field %}
- {{ field.label }}{% if field.field.required %}<span
class="asteriskField">*</span>{% endif %}
- </label>
+ {% endif %}
{% include 'bootstrap3/layout/help_text_and_errors.html' %}
{% else %}
<div class="controls {{ field_class }}">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/crispy_bootstrap3.egg-info/PKG-INFO
new/crispy-bootstrap3-2024.1/crispy_bootstrap3.egg-info/PKG-INFO
--- old/crispy-bootstrap3-2022.1/crispy_bootstrap3.egg-info/PKG-INFO
2022-12-29 17:59:38.000000000 +0100
+++ new/crispy-bootstrap3-2024.1/crispy_bootstrap3.egg-info/PKG-INFO
2024-01-13 10:04:46.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: crispy-bootstrap3
-Version: 2022.1
+Version: 2024.1
Summary: Bootstrap3 template pack for django-crispy-forms
Author: David Smith
License: MIT
@@ -26,6 +26,8 @@
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
+Requires-Dist: django-crispy-forms>=1.14.0
+Requires-Dist: django>=3.2
# crispy-bootstrap3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/crispy_bootstrap3.egg-info/SOURCES.txt
new/crispy-bootstrap3-2024.1/crispy_bootstrap3.egg-info/SOURCES.txt
--- old/crispy-bootstrap3-2022.1/crispy_bootstrap3.egg-info/SOURCES.txt
2022-12-29 17:59:38.000000000 +0100
+++ new/crispy-bootstrap3-2024.1/crispy_bootstrap3.egg-info/SOURCES.txt
2024-01-13 10:04:46.000000000 +0100
@@ -64,22 +64,29 @@
tests/utils.py
tests/results/utils_test.html
tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false.html
+tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false_gte50.html
tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true.html
+tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true_gte50.html
tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_false.html
+tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_false_gte50.html
tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_false_lte40.html
tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_true.html
+tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_true_gte50.html
tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_true_lte40.html
tests/results/bootstrap3/test_layout/test_layout_composition.html
+tests/results/bootstrap3/test_layout/test_layout_composition_gte50.html
tests/results/bootstrap3/test_layout/test_multiple_checkboxes.html
tests/results/bootstrap3/test_layout/test_multiple_fields.html
tests/results/bootstrap3/test_layout/test_radio.html
tests/results/bootstrap3/test_layout/test_radio_attrs.html
tests/results/bootstrap3/test_layout/test_second_layout_multifield_column_buttonholder_submit_div.html
+tests/results/bootstrap3/test_layout/test_second_layout_multifield_column_buttonholder_submit_div_gte50.html
tests/results/bootstrap3/test_layout_objects/bootstrap_modal_no_kwargs.html
tests/results/bootstrap3/test_layout_objects/bootstrap_modal_with_kwargs.html
tests/results/bootstrap3/test_layout_objects/test_FormActions.html
tests/results/bootstrap3/test_layout_objects/test_field_with_buttons.html
tests/results/bootstrap3/test_layout_objects/test_prepended_appended_text.html
+tests/results/bootstrap3/test_layout_objects/test_prepended_appended_text_gte50.html
tests/templates/crispy_render_template.html
tests/templates/custom_field_template.html
tests/templates/custom_form_template.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crispy-bootstrap3-2022.1/tests/forms.py
new/crispy-bootstrap3-2024.1/tests/forms.py
--- old/crispy-bootstrap3-2022.1/tests/forms.py 2022-12-29 17:59:22.000000000
+0100
+++ new/crispy-bootstrap3-2024.1/tests/forms.py 2024-01-13 10:04:34.000000000
+0100
@@ -82,6 +82,12 @@
)
+class SimpleCheckboxSampleForm(forms.Form):
+ is_company = forms.CharField(
+ label="company", required=False, widget=forms.CheckboxInput()
+ )
+
+
class SelectSampleForm(forms.Form):
select = forms.ChoiceField(
choices=((1, "Option one"), (2, "Option two"), (3, "Option three")),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false_gte50.html
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false_gte50.html
---
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false_gte50.html
1970-01-01 01:00:00.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false_gte50.html
2024-01-13 10:04:34.000000000 +0100
@@ -0,0 +1,45 @@
+<form method="post">
+ <div id="div_id_email" class="form-group">
+ <label for="id_email" class=" control-label requiredField"> email<span
class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group"><input type="text" name="email"
value="invalidemail" maxlength="30"
+ aria-describedby="id_email_helptext" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_email" />
+ <span class="input-group-addon">whatever</span></div>
+ <div id="hint_id_email" class="help-block">Insert your email</div>
+ </div>
+ </div>
+ <div id="div_id_first_name" class="form-group">
+ <label for="id_first_name" class=" control-label requiredField"> first
name<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group">
+ <span class="input-group-addon">blabla</span>
+ <input type="text" name="first_name" value="first_name_too_long"
maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control"
required id="id_first_name" />
+ </div>
+ </div>
+ </div>
+ <div id="div_id_last_name" class="form-group">
+ <label for="id_last_name" class=" control-label requiredField"> last
name<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group">
+ <span class="input-group-addon">foo</span>
+ <input type="text" name="last_name" value="last_name_too_long"
maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control"
required id="id_last_name" />
+ <span class="input-group-addon">bar</span>
+ </div>
+ </div>
+ </div>
+ <div id="div_id_password1" class="form-group">
+ <label for="id_password1" class=" control-label requiredField">
password<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group"><input type="password" name="password1"
maxlength="30" class="textInput textinput form-control" required
id="id_password1" /> <span class="input-group-addon">whatever</span></div>
+ </div>
+ </div>
+ <div id="div_id_password2" class="form-group">
+ <label for="id_password2" class=" control-label requiredField">
re-enter password<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group"><span
class="input-group-addon">blabla</span> <input type="password" name="password2"
maxlength="30" class="textInput textinput form-control" required
id="id_password2" /></div>
+ </div>
+ </div>
+</form>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true_gte50.html
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true_gte50.html
---
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true_gte50.html
1970-01-01 01:00:00.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true_gte50.html
2024-01-13 10:04:34.000000000 +0100
@@ -0,0 +1,49 @@
+<form method="post">
+ <div id="div_id_email" class="form-group has-error">
+ <label for="id_email" class=" control-label requiredField"> email<span
class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group"><input type="text" name="email"
value="invalidemail" maxlength="30"
+ aria-describedby="id_email_helptext" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_email" />
+ <span class="input-group-addon">whatever</span></div>
+ <span id="error_1_id_email" class="help-block"><strong>Enter a
valid email address.</strong></span>
+ <div id="hint_id_email" class="help-block">Insert your email</div>
+ </div>
+ </div>
+ <div id="div_id_first_name" class="form-group has-error">
+ <label for="id_first_name" class=" control-label requiredField"> first
name<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group">
+ <span class="input-group-addon">blabla</span>
+ <input type="text" name="first_name"
value="first_name_too_long" maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control"
required id="id_first_name" />
+ </div>
+
+ <span id="error_1_id_first_name" class="help-block"><strong>Ensure
this value has at most 5 characters (it has 19).</strong></span>
+ </div>
+ </div>
+ <div id="div_id_last_name" class="form-group has-error">
+ <label for="id_last_name" class=" control-label requiredField"> last
name<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group">
+ <span class="input-group-addon">foo</span>
+ <input type="text" name="last_name" value="last_name_too_long"
maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control"
required id="id_last_name" />
+ <span class="input-group-addon">bar</span>
+ </div>
+ <span id="error_1_id_last_name" class="help-block"><strong>Ensure
this value has at most 5 characters (it has 18).</strong></span>
+ </div>
+ </div>
+ <div id="div_id_password1" class="form-group">
+ <label for="id_password1" class=" control-label requiredField">
password<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group"><input type="password" name="password1"
maxlength="30" class="textInput textinput form-control" required
id="id_password1" /> <span class="input-group-addon">whatever</span></div>
+ </div>
+ </div>
+ <div id="div_id_password2" class="form-group">
+ <label for="id_password2" class=" control-label requiredField">
re-enter password<span class="asteriskField">*</span> </label>
+ <div class=" controls">
+ <div class="input-group"><span
class="input-group-addon">blabla</span> <input type="password" name="password2"
maxlength="30" class="textInput textinput form-control" required
id="id_password2" /></div>
+ </div>
+ </div>
+</form>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_false_gte50.html
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_false_gte50.html
---
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_false_gte50.html
1970-01-01 01:00:00.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_false_gte50.html
2024-01-13 10:04:34.000000000 +0100
@@ -0,0 +1,40 @@
+<form method="post">
+ <div class="form-group">
+ <div id="div_id_is_company" class="checkbox"> <label
for="id_is_company" class=""> <input type="checkbox"
+ name="is_company" class="checkboxinput"
id="id_is_company"> company </label> </div>
+ </div>
+ <div id="div_id_email" class="form-group"> <label for="id_email"
class="control-label requiredField"> email<span
+ class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="email" maxlength="30"
+ aria-describedby="id_email_helptext" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_email">
+ <div id="hint_id_email" class="help-block">Insert your email</div>
+ </div>
+ </div>
+ <div id="div_id_password1" class="form-group"> <label for="id_password1"
class="control-label requiredField">
+ password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password1"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password1"> </div>
+ </div>
+ <div id="div_id_password2" class="form-group"> <label for="id_password2"
class="control-label requiredField">
+ re-enter password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password2"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password2"> </div>
+ </div>
+ <div id="div_id_first_name" class="form-group"> <label for="id_first_name"
class="control-label requiredField">
+ first name<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="first_name"
maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_first_name"> </div>
+ </div>
+ <div id="div_id_last_name" class="form-group"> <label for="id_last_name"
class="control-label requiredField"> last
+ name<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="last_name"
maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_last_name"> </div>
+ </div>
+ <div id="div_id_datetime_field" class="form-group">
+ <label class="control-label requiredField"> date time<span
class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="datetime_field_0"
class="dateinput" required aria-invalid="true"
+ id="id_datetime_field_0"><input type="text"
name="datetime_field_1" class="timeinput" required aria-invalid="true"
+ id="id_datetime_field_1"> </div>
+ </div>
+</form>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_true_gte50.html
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_true_gte50.html
---
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_true_gte50.html
1970-01-01 01:00:00.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_form_helper/test_form_show_errors_non_field_errors_true_gte50.html
2024-01-13 10:04:34.000000000 +0100
@@ -0,0 +1,49 @@
+<form method="post">
+ <div class="alert alert-block alert-danger">
+ <ul>
+ <li>Passwords dont match</li>
+ </ul>
+ </div>
+ <div class="form-group">
+ <div id="div_id_is_company" class="checkbox"> <label
for="id_is_company" class=""> <input type="checkbox"
+ name="is_company" class="checkboxinput"
id="id_is_company"> company </label> </div>
+ </div>
+ <div id="div_id_email" class="form-group has-error"> <label for="id_email"
class="control-label requiredField">
+ email<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="email" maxlength="30"
+ aria-describedby="id_email_helptext" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_email"> <span id="error_1_id_email"
+ class="help-block"><strong>This field is
required.</strong></span>
+ <div id="hint_id_email" class="help-block">Insert your email</div>
+ </div>
+ </div>
+ <div id="div_id_password1" class="form-group"> <label for="id_password1"
class="control-label requiredField">
+ password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password1"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password1"> </div>
+ </div>
+ <div id="div_id_password2" class="form-group"> <label for="id_password2"
class="control-label requiredField">
+ re-enter password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password2"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password2"> </div>
+ </div>
+ <div id="div_id_first_name" class="form-group has-error"> <label
for="id_first_name"
+ class="control-label requiredField"> first name<span
class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="first_name"
maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_first_name"> <span
+ id="error_1_id_first_name" class="help-block"><strong>This
field is required.</strong></span> </div>
+ </div>
+ <div id="div_id_last_name" class="form-group has-error"> <label
for="id_last_name"
+ class="control-label requiredField"> last name<span
class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="last_name"
maxlength="5" aria-invalid="true"
+ class="textinput textInput inputtext form-control" required
id="id_last_name"> <span
+ id="error_1_id_last_name" class="help-block"><strong>This
field is required.</strong></span> </div>
+ </div>
+ <div id="div_id_datetime_field" class="form-group has-error">
+ <label class="control-label requiredField"> date time<span
class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="datetime_field_0"
class="dateinput" required aria-invalid="true"
+ id="id_datetime_field_0"><input type="text"
name="datetime_field_1" class="timeinput" required aria-invalid="true"
+ id="id_datetime_field_1"> <span id="error_1_id_datetime_field"
class="help-block"><strong>This field is
+ required.</strong></span> </div>
+ </div>
+</form>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_layout/test_layout_composition_gte50.html
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_layout/test_layout_composition_gte50.html
---
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_layout/test_layout_composition_gte50.html
1970-01-01 01:00:00.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_layout/test_layout_composition_gte50.html
2024-01-13 10:04:34.000000000 +0100
@@ -0,0 +1,35 @@
+<form method="post">
+ <div id="multifield_info" class="ctrlHolder">
+ <div class="alert alert-danger" role="alert"> </div>
+ <p class="blockLabel">Some company data</p>
+ <div class="multiField">
+ <div class="checkbox"> <label for="id_is_company"
class="blockLabel"> <input type="checkbox"
+ name="is_company" class="checkboxinput"
id="id_is_company"> company </label> </div>
+ <div class="form-group "> <label class="control-label"
for="id_email" class="blockLabel"> email </label>
+ <input type="text" name="email" maxlength="30"
class="textinput textInput" required
+ aria-describedby="id_email_helptext"
+ id="id_email"> <span id="help_id_email"
class="help-block">Insert your email</span> </div>
+ </div>
+ </div>
+ <div id="column_name" class="formColumn columns">
+ <div id="div_id_first_name" class="form-group"> <label
for="id_first_name" class="control-label requiredField">
+ first name<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="first_name"
maxlength="5"
+ class="textinput textInput form-control" required
id="id_first_name"> </div>
+ </div>
+ </div>
+ <div class="buttonHolder"> <input type="submit" name="Save" value="Save"
class="btn btn-primary button white"
+ id="submit-id-save" /></div>
+ <div id="custom-div" class="customdivs">
+ <div id="div_id_password1" class="form-group"> <label
for="id_password1" class="control-label requiredField">
+ password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password1"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password1"> </div>
+ </div>
+ <div id="div_id_password2" class="form-group"> <label
for="id_password2" class="control-label requiredField">
+ re-enter password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password2"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password2"> </div>
+ </div>
+ </div>
+</form>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_layout/test_second_layout_multifield_column_buttonholder_submit_div_gte50.html
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_layout/test_second_layout_multifield_column_buttonholder_submit_div_gte50.html
---
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_layout/test_second_layout_multifield_column_buttonholder_submit_div_gte50.html
1970-01-01 01:00:00.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_layout/test_second_layout_multifield_column_buttonholder_submit_div_gte50.html
2024-01-13 10:04:34.000000000 +0100
@@ -0,0 +1,41 @@
+<form method="post">
+ <div id="multifield_info" class="ctrlHolder" multifield-test="123"
title="multifield_title">
+ <div class="alert alert-danger" role="alert"> </div>
+ <p class="blockLabel">Some company data</p>
+ <div class="multiField">
+ <div class="checkbox"> <label for="id_is_company"
class="blockLabel"> <input type="checkbox"
+ name="is_company" class="checkboxinput"
id="id_is_company"> company </label> </div>
+ <div class="form-group "> <label class="control-label"
for="id_email" class="blockLabel"> email </label>
+ <input type="text" name="email" maxlength="30"
class="textinput textInput" required
+ aria-describedby="id_email_helptext"
+ id="id_email"> <span id="help_id_email"
class="help-block">Insert your email</span> </div>
+ </div>
+ </div>
+ <div id="column_name" class="formColumn columns">
+ <div id="div_id_first_name" class="form-group"> <label
for="id_first_name" class="control-label requiredField">
+ first name<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="first_name"
maxlength="5"
+ class="textinput textInput form-control" required
id="id_first_name"> </div>
+ </div>
+ <div id="div_id_last_name" class="form-group"> <label
for="id_last_name" class="control-label requiredField">
+ last name<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="text" name="last_name"
maxlength="5"
+ class="textinput textInput form-control" required
id="id_last_name"> </div>
+ </div>
+ </div>
+ <div class="buttonHolder"> <input type="submit" name="save-the-world"
value="Save"
+ class="btn btn-primary button white" id="submit-id-save-the-world"
data-id="test" data-name="test" /><input
+ type="submit" name="store" value="Store results" class="btn
btn-primary" id="submit-id-store" /></div>
+ <div id="custom-div" class="customdivs" test-markup="123">
+ <div id="div_id_password1" class="form-group"> <label
for="id_password1" class="control-label requiredField">
+ password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password1"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password1"> </div>
+ </div>
+ <div id="div_id_password2" class="form-group"> <label
for="id_password2" class="control-label requiredField">
+ re-enter password<span class="asteriskField">*</span> </label>
+ <div class="controls "> <input type="password" name="password2"
maxlength="30"
+ class="textInput textinput form-control" required
id="id_password2"> </div>
+ </div>
+ </div>
+</form>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_layout_objects/test_prepended_appended_text_gte50.html
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_layout_objects/test_prepended_appended_text_gte50.html
---
old/crispy-bootstrap3-2022.1/tests/results/bootstrap3/test_layout_objects/test_prepended_appended_text_gte50.html
1970-01-01 01:00:00.000000000 +0100
+++
new/crispy-bootstrap3-2024.1/tests/results/bootstrap3/test_layout_objects/test_prepended_appended_text_gte50.html
2024-01-13 10:04:34.000000000 +0100
@@ -0,0 +1,37 @@
+<form method="post">
+ <div id="div_id_email" class="form-group">
+ <label for="id_email" class="control-label requiredField">
+ email
+ <span class="asteriskField">*</span>
+ </label>
+ <div class="controls ">
+ <div class="input-group">
+ <span class="input-group-addon active">@</span>
+ <input type="text" name="email" maxlength="30"
class="textinput textInput form-control custom-size-class"
+ required id="id_email"
aria-describedby="id_email_helptext">
+ <span class="input-group-addon active">gmail.com</span>
+ </div>
+ <div id="hint_id_email" class="help-block">Insert your email</div>
+ </div>
+ </div>
+ <div id="div_id_password1" class="form-group">
+ <label for="id_password1" class="control-label requiredField">
+ password<span class="asteriskField">*</span> </label>
+ <div class="controls ">
+ <div class="input-group">
+ <input type="password" name="password1" maxlength="30"
class="textInput textinput form-control input-lg" required id="id_password1">
+ <span class="input-lg input-group-addon">#</span>
+ </div>
+ </div>
+ </div>
+ <div id="div_id_password2" class="form-group">
+ <label for="id_password2" class="control-label requiredField">
+ re-enter password<span class="asteriskField">*</span> </label>
+ <div class="controls ">
+ <div class="input-group">
+ <span class="input-sm input-group-addon">$</span>
+ <input type="password" name="password2" maxlength="30"
class="input-sm textInput textinput form-control" required id="id_password2">
+ </div>
+ </div>
+ </div>
+</form>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crispy-bootstrap3-2022.1/tests/test_form_helper.py
new/crispy-bootstrap3-2024.1/tests/test_form_helper.py
--- old/crispy-bootstrap3-2022.1/tests/test_form_helper.py 2022-12-29
17:59:22.000000000 +0100
+++ new/crispy-bootstrap3-2024.1/tests/test_form_helper.py 2024-01-13
10:04:34.000000000 +0100
@@ -139,6 +139,13 @@
"bootstrap3/test_form_helper/"
"test_form_show_errors_non_field_errors_true_lte40.html"
)
+ elif django.VERSION >= (5, 0):
+ # Added 'aria-describedby' for fields with help_text
+ # https://docs.djangoproject.com/en/5.0/releases/5.0/#forms
+ expected = parse_expected(
+ "bootstrap3/test_form_helper/"
+ "test_form_show_errors_non_field_errors_true_gte50.html"
+ )
else:
expected = parse_expected(
"bootstrap3/test_form_helper/"
@@ -155,6 +162,13 @@
"bootstrap3/test_form_helper/"
"test_form_show_errors_non_field_errors_false_lte40.html"
)
+ elif django.VERSION >= (5, 0):
+ # Added 'aria-describedby' for fields with help_text
+ # https://docs.djangoproject.com/en/5.0/releases/5.0/#forms
+ expected = parse_expected(
+ "bootstrap3/test_form_helper/"
+ "test_form_show_errors_non_field_errors_false_gte50.html"
+ )
else:
expected = parse_expected(
"bootstrap3/test_form_helper/"
@@ -528,14 +542,31 @@
form.is_valid()
form.helper.form_show_errors = True
- assert parse_form(form) == parse_expected(
- "bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true.html"
- )
+ if django.VERSION >= (5, 0):
+ # Added 'aria-describedby' for fields with help_text
+ # https://docs.djangoproject.com/en/5.0/releases/5.0/#forms
+ expected = parse_expected(
+
"bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true_gte50.html"
+ )
+ else:
+ expected = parse_expected(
+
"bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_true.html"
+ )
+ assert parse_form(form) == expected
form.helper.form_show_errors = False
- assert parse_form(form) == parse_expected(
- "bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false.html"
- )
+ if django.VERSION >= (5, 0):
+ # Added 'aria-describedby' for fields with help_text
+ # https://docs.djangoproject.com/en/5.0/releases/5.0/#forms
+ expected = parse_expected(
+ "bootstrap3/test_form_helper/"
+ "bootstrap_form_show_errors_bs3_false_gte50.html"
+ )
+ else:
+ expected = parse_expected(
+
"bootstrap3/test_form_helper/bootstrap_form_show_errors_bs3_false.html"
+ )
+ assert parse_form(form) == expected
def test_error_text_inline(settings):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crispy-bootstrap3-2022.1/tests/test_layout.py
new/crispy-bootstrap3-2024.1/tests/test_layout.py
--- old/crispy-bootstrap3-2022.1/tests/test_layout.py 2022-12-29
17:59:22.000000000 +0100
+++ new/crispy-bootstrap3-2024.1/tests/test_layout.py 2024-01-13
10:04:34.000000000 +0100
@@ -1,3 +1,4 @@
+import django
import pytest
from crispy_forms import __version__
from crispy_forms.bootstrap import Field, InlineCheckboxes
@@ -34,6 +35,7 @@
SampleForm4,
SampleForm5,
SampleForm6,
+ SimpleCheckboxSampleForm,
)
from .test_settings import TEMPLATE_DIRS
from .utils import contains_partial, parse_expected, parse_form
@@ -462,9 +464,15 @@
html = template.render(c)
# Bootstrap 4 does not contain a multifield template
- assert parse_html(html) == parse_expected(
- "bootstrap3/test_layout/test_layout_composition.html"
- )
+ if django.VERSION >= (5, 0):
+ # Added 'aria-describedby' for fields with help_text
+ # https://docs.djangoproject.com/en/5.0/releases/5.0/#forms
+ expected = parse_expected(
+ "bootstrap3/test_layout/test_layout_composition_gte50.html"
+ )
+ else:
+ expected =
parse_expected("bootstrap3/test_layout/test_layout_composition.html")
+ assert parse_html(html) == expected
@override_settings(CRISPY_CLASS_CONVERTERS=CONVERTERS)
@@ -516,10 +524,19 @@
html = template.render(c)
# Bootstrap 4 does not contain a multifield template
- assert parse_html(html) == parse_expected(
- "bootstrap3/test_layout/"
- "test_second_layout_multifield_column_buttonholder_submit_div.html"
- )
+ if django.VERSION >= (5, 0):
+ # Added 'aria-describedby' for fields with help_text
+ # https://docs.djangoproject.com/en/5.0/releases/5.0/#forms
+ expected = parse_expected(
+ "bootstrap3/test_layout/"
+
"test_second_layout_multifield_column_buttonholder_submit_div_gte50.html"
+ )
+ else:
+ expected = parse_expected(
+ "bootstrap3/test_layout/"
+ "test_second_layout_multifield_column_buttonholder_submit_div.html"
+ )
+ assert parse_html(html) == expected
@override_settings(
@@ -570,6 +587,19 @@
)
+def test_no_label_checkboxes_bs3():
+ form = SimpleCheckboxSampleForm()
+ form.helper = FormHelper()
+ # no form-control class when labels are rendered
+ html = render_crispy_form(form)
+ assert html.count("form-control") == 0
+ form.helper.form_show_labels = False
+ # no labels or form-control class when labels are hidden
+ html = render_crispy_form(form)
+ assert html.count("<label ") == 0
+ assert html.count("form-control") == 0
+
+
@pytest.mark.skipif(__version__[0] == "1", reason="#1262 fixed required
attributes.")
def test_radio_bs3():
form = SampleForm5()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/crispy-bootstrap3-2022.1/tests/test_layout_objects.py
new/crispy-bootstrap3-2024.1/tests/test_layout_objects.py
--- old/crispy-bootstrap3-2022.1/tests/test_layout_objects.py 2022-12-29
17:59:22.000000000 +0100
+++ new/crispy-bootstrap3-2024.1/tests/test_layout_objects.py 2024-01-13
10:04:34.000000000 +0100
@@ -1,3 +1,4 @@
+import django
import pytest
from crispy_forms import __version__
from crispy_forms.bootstrap import (
@@ -162,7 +163,6 @@
class TestBootstrapLayoutObjects:
def test_custom_django_widget(self):
-
# Make sure an inherited RadioSelect gets rendered as it
form = SampleFormCustomWidgets()
assert isinstance(form.fields["inline_radios"].widget,
CustomRadioSelect)
@@ -191,9 +191,17 @@
AppendedText("password1", "#", css_class="input-lg"),
PrependedText("password2", "$", css_class="input-sm"),
)
- assert parse_form(test_form) == parse_expected(
- "bootstrap3/test_layout_objects/test_prepended_appended_text.html"
- )
+ if django.VERSION >= (5, 0):
+ # Added 'aria-describedby' for fields with help_text
+ # https://docs.djangoproject.com/en/5.0/releases/5.0/#forms
+ expected = parse_expected(
+
"bootstrap3/test_layout_objects/test_prepended_appended_text_gte50.html"
+ )
+ else:
+ expected = parse_expected(
+
"bootstrap3/test_layout_objects/test_prepended_appended_text.html"
+ )
+ assert parse_form(test_form) == expected
def test_inline_radios(self):
test_form = CheckboxesSampleForm()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crispy-bootstrap3-2022.1/tox.ini
new/crispy-bootstrap3-2024.1/tox.ini
--- old/crispy-bootstrap3-2022.1/tox.ini 2022-12-29 17:59:22.000000000
+0100
+++ new/crispy-bootstrap3-2024.1/tox.ini 2024-01-13 10:04:34.000000000
+0100
@@ -1,16 +1,17 @@
[tox]
envlist =
- {py37,py38,py39,py310}-django{32}-crispy{1,-latest},
- {py38,py39,py310}-django{40,41,-latest}-crispy{1,-latest},
- {py311}-django{41,-latest}-crispy{1,-latest},
+ {py38,py39,py310}-django32-crispy1,
+ {py38,py39,py310}-django42-crispy{1,2,-latest},
+ {py311}-django{42,50}-crispy{2,-latest},
lint
[testenv]
deps =
- django32: django>=3.2,<3.3
- django40: django>=4.0a,<4.1
- django41: django>=4.1a,<4.2
+ django32: django>=3.2,<4
+ django42: django>=4.2,<5
+ django50: django>=5.0,<5.1
crispy1: django-crispy-forms<=2.0
+ crispy2: django-crispy-forms>=2.0,<3
crispy-latest:
https://github.com/django-crispy-forms/django-crispy-forms/archive/main.tar.gz
-rrequirements/testing.txt
commands = python -W error::DeprecationWarning -W
error::PendingDeprecationWarning -m pytest {posargs}