Skip to content

Commit

Permalink
Merge pull request #447 from dyve/remove_dbs3_set_required_set_disabled
Browse files Browse the repository at this point in the history
Remove code that was only used for Django <= 1.8 (fixes #445 and #446)
  • Loading branch information
dyve committed Aug 30, 2018
2 parents 99e3d6a + b5dd887 commit 4b50be9
Show file tree
Hide file tree
Showing 10 changed files with 20 additions and 127 deletions.
7 changes: 5 additions & 2 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ History
-------

Development
+++++++++++++++++++
+++++++++++

* Remove setting `base_url`, support `crossorigin` and `integrity` in urls (#443)
* Support `crossorigin` and `integrity` in urls (#443)
* Switch to explicit Travis tests (#444)
* Fix PyPI classifiers
* Remove obsolete code for Django <=8 1.8 (#446)
* Remove obsolete settings `set_required` and `set_disabled` (#445)
* Remove setting `base_url` (#443)

10.0.1 (2018-05-02)
+++++++++++++++++++
Expand Down
8 changes: 0 additions & 8 deletions bootstrap3/bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,6 @@
from django import VERSION as DJANGO_VERSION
from django.conf import settings

# Do we support set_required and set_disabled?
# See GitHub issues 337 and 345
# TODO: Get rid of this after support for Django 1.8 LTS ends
DBS3_SET_REQUIRED_SET_DISABLED = DJANGO_VERSION[0] < 2 and DJANGO_VERSION[1] < 10

# Default settings
BOOTSTRAP3_DEFAULTS = {
"css_url": {
Expand Down Expand Up @@ -41,9 +36,6 @@
},
}

if DBS3_SET_REQUIRED_SET_DISABLED:
BOOTSTRAP3_DEFAULTS.update({"set_required": True, "set_disabled": False})

# Start with a copy of default settings
BOOTSTRAP3 = BOOTSTRAP3_DEFAULTS.copy()

Expand Down
3 changes: 0 additions & 3 deletions bootstrap3/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
get_form_renderer,
get_field_renderer,
get_formset_renderer,
DBS3_SET_REQUIRED_SET_DISABLED,
)
from .components import render_icon
from .exceptions import BootstrapError
Expand Down Expand Up @@ -190,8 +189,6 @@ def is_widget_required_attribute(widget):
"""
Is this widget required?
"""
if DBS3_SET_REQUIRED_SET_DISABLED and not get_bootstrap_setting("set_required"):
return False
if not widget.is_required:
return False
if isinstance(widget, WIDGETS_NO_REQUIRED):
Expand Down
13 changes: 0 additions & 13 deletions bootstrap3/legacy.py

This file was deleted.

42 changes: 1 addition & 41 deletions bootstrap3/renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
from django.utils.html import conditional_escape, escape, strip_tags
from django.utils.safestring import mark_safe

from .bootstrap import get_bootstrap_setting, DBS3_SET_REQUIRED_SET_DISABLED
from .bootstrap import get_bootstrap_setting
from .exceptions import BootstrapError
from .forms import (
render_form,
Expand Down Expand Up @@ -63,10 +63,6 @@ def __init__(self, *args, **kwargs):
self.show_label = kwargs.get("show_label", True)
self.exclude = kwargs.get("exclude", "")

# Only relevant if DBS3_SET_REQUIRED_SET_DISABLED
self.set_required = kwargs.get("set_required", True)
self.set_disabled = kwargs.get("set_disabled", False)

self.set_placeholder = kwargs.get("set_placeholder", True)
self.size = self.parse_size(kwargs.get("size", ""))
self.horizontal_label_class = kwargs.get(
Expand Down Expand Up @@ -135,8 +131,6 @@ def render_forms(self):
show_label=self.show_label,
show_help=self.show_help,
exclude=self.exclude,
set_required=self.set_required, # Only relevant if DBS3_SET_REQUIRED_SET_DISABLED
set_disabled=self.set_disabled, # Only relevant if DBS3_SET_REQUIRED_SET_DISABLED
set_placeholder=self.set_placeholder,
size=self.size,
horizontal_label_class=self.horizontal_label_class,
Expand Down Expand Up @@ -177,11 +171,6 @@ def __init__(self, form, *args, **kwargs):
raise BootstrapError('Parameter "form" should contain a valid Django Form.')
self.form = form
super(FormRenderer, self).__init__(*args, **kwargs)

# Handle form.empty_permitted
if DBS3_SET_REQUIRED_SET_DISABLED and self.form.empty_permitted:
self.set_required = False

self.error_types = kwargs.get("error_types", "non_field_errors")
self.error_css_class = kwargs.get("error_css_class", None)
self.required_css_class = kwargs.get("required_css_class", None)
Expand All @@ -200,8 +189,6 @@ def render_fields(self):
show_label=self.show_label,
show_help=self.show_help,
exclude=self.exclude,
set_required=self.set_required, # Only relevant if DBS3_SET_REQUIRED_SET_DISABLED
set_disabled=self.set_disabled, # Only relevant if DBS3_SET_REQUIRED_SET_DISABLED
set_placeholder=self.set_placeholder,
size=self.size,
horizontal_label_class=self.horizontal_label_class,
Expand Down Expand Up @@ -342,12 +329,6 @@ def __init__(self, field, *args, **kwargs):
if self.field.form.empty_permitted:
self.required_css_class = ""

# Special case to support Django 1.8 required / disabled
if DBS3_SET_REQUIRED_SET_DISABLED:
if self.field.form.empty_permitted:
self.set_required = False
self.set_disabled = kwargs.get("set_disabled", False)

def restore_widget_attrs(self):
self.widget.attrs = self.initial_attrs.copy()

Expand Down Expand Up @@ -382,24 +363,6 @@ def add_help_attrs(self, widget=None):
"title", escape(strip_tags(self.field_help))
)

def add_required_attrs(self, widget=None):
"""
Only relevant if DBS3_SET_REQUIRED_SET_DISABLED
"""
if widget is None:
widget = self.widget
if self.set_required and is_widget_required_attribute(widget):
widget.attrs["required"] = "required"

def add_disabled_attrs(self, widget=None):
"""
Only relevant if DBS3_SET_REQUIRED_SET_DISABLED
"""
if widget is None:
widget = self.widget
if self.set_disabled:
widget.attrs["disabled"] = "disabled"

def add_widget_attrs(self):
if self.is_multi_widget:
widgets = self.widget.widgets
Expand All @@ -409,9 +372,6 @@ def add_widget_attrs(self):
self.add_class_attrs(widget)
self.add_placeholder_attrs(widget)
self.add_help_attrs(widget)
if DBS3_SET_REQUIRED_SET_DISABLED:
self.add_required_attrs(widget)
self.add_disabled_attrs(widget)

def list_to_class(self, html, klass):
classes = add_css_class(klass, self.get_size_class())
Expand Down
13 changes: 0 additions & 13 deletions bootstrap3/templatetags/bootstrap3.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,19 +434,6 @@ def bootstrap_field(*args, **kwargs):
exclude
A list of field names that should not be rendered
set_required
When set to ``True`` and the field is required then the ``required`` attribute is set on the
rendered field. This only works up to Django 1.8. Higher Django versions handle ``required``
natively.
:default: ``True``
set_disabled
When set to ``True`` then the ``disabled`` attribute is set on the rendered field. This only
works up to Django 1.8. Higher Django versions handle ``disabled`` natively.
:default: ``False``
size
Controls the size of the rendered ``div.form-group`` through the use of CSS classes.
Expand Down
48 changes: 13 additions & 35 deletions bootstrap3/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from django.template import engines
from django.test import TestCase

from .bootstrap import DBS3_SET_REQUIRED_SET_DISABLED, get_bootstrap_setting
from .bootstrap import get_bootstrap_setting
from .exceptions import BootstrapError
from .text import text_value, text_concat
from .utils import add_css_class, render_tag, url_to_attrs_dict
Expand Down Expand Up @@ -478,24 +478,11 @@ def test_password(self):
self.assertIn('placeholder="Password"', res)

def test_required_field(self):
if DBS3_SET_REQUIRED_SET_DISABLED:
required_field = render_form_field("subject")
self.assertIn("required", required_field)
self.assertIn("bootstrap3-req", required_field)
not_required_field = render_form_field("message")
self.assertNotIn("required", not_required_field)
# Required field with required=0
form_field = "form.subject"
rendered = render_template_with_form(
"{% bootstrap_field " + form_field + " set_required=0 %}"
)
self.assertNotIn("required", rendered)
else:
required_css_class = "bootstrap3-req"
required_field = render_form_field("subject")
self.assertIn(required_css_class, required_field)
not_required_field = render_form_field("message")
self.assertNotIn(required_css_class, not_required_field)
required_css_class = "bootstrap3-req"
required_field = render_form_field("subject")
self.assertIn(required_css_class, required_field)
not_required_field = render_form_field("message")
self.assertNotIn(required_css_class, not_required_field)
# Required settings in field
form_field = "form.subject"
rendered = render_template_with_form(
Expand All @@ -510,22 +497,13 @@ def test_empty_permitted(self):
If a form has empty_permitted, no fields should get the CSS class for required.
Django <= 1.8, also check `required` attribute.
"""
if DBS3_SET_REQUIRED_SET_DISABLED:
required_css_class = "bootstrap3-req"
form = TestForm()
res = render_form_field("subject", {"form": form})
self.assertIn(required_css_class, res)
form.empty_permitted = True
res = render_form_field("subject", {"form": form})
self.assertNotIn(required_css_class, res)
else:
required_css_class = "bootstrap3-req"
form = TestForm()
res = render_form_field("subject", {"form": form})
self.assertIn(required_css_class, res)
form.empty_permitted = True
res = render_form_field("subject", {"form": form})
self.assertNotIn(required_css_class, res)
required_css_class = "bootstrap3-req"
form = TestForm()
res = render_form_field("subject", {"form": form})
self.assertIn(required_css_class, res)
form.empty_permitted = True
res = render_form_field("subject", {"form": form})
self.assertNotIn(required_css_class, res)

def test_input_group(self):
res = render_template_with_form(
Expand Down
6 changes: 1 addition & 5 deletions bootstrap3/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,7 @@
from django.template.loader import get_template
from django.utils.encoding import force_str, force_text
from django.utils.safestring import mark_safe

try:
from django.utils.html import format_html
except ImportError:
from .legacy import format_html_pre_18 as format_html
from django.utils.html import format_html

from .text import text_value

Expand Down
1 change: 0 additions & 1 deletion demo/demo/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@

# Settings for django-bootstrap3
BOOTSTRAP3 = {
"set_required": False, # For Django <= 1.8 only
"error_css_class": "bootstrap3-error",
"required_css_class": "bootstrap3-required",
"javascript_in_head": True,
Expand Down
6 changes: 0 additions & 6 deletions docs/settings.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,6 @@ The ``BOOTSTRAP3`` dict variable contains these settings and defaults:
# Field class to use in horizontal forms
"horizontal_field_class": "col-md-9",
# Set HTML required attribute on required fields, for Django <= 1.8 only
"set_required": True,
# Set HTML disabled attribute on disabled fields, for Django <= 1.8 only
"set_disabled": False,
# Set placeholder attributes to label if no placeholder is provided.
# This also considers the "label" option of {% bootstrap_field %} tags.
"set_placeholder": True,
Expand Down

0 comments on commit 4b50be9

Please sign in to comment.