diff --git a/djangocms_bootstrap4/contrib/bootstrap4_grid/models.py b/djangocms_bootstrap4/contrib/bootstrap4_grid/models.py
index 0d11993..98bcd0d 100644
--- a/djangocms_bootstrap4/contrib/bootstrap4_grid/models.py
+++ b/djangocms_bootstrap4/contrib/bootstrap4_grid/models.py
@@ -2,17 +2,26 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
-from django.utils.translation import ungettext
+
+from django.utils.translation import ngettext
from cms.models import CMSPlugin
from djangocms_bootstrap4.constants import DEVICE_SIZES
from djangocms_bootstrap4.fields import AttributesField, IntegerRangeField, TagTypeField
-from djangocms_bootstrap4.helpers import get_choices_match, get_first_choice, mark_safe_lazy
+from djangocms_bootstrap4.helpers import (
+ get_choices_match,
+ get_first_choice,
+ mark_safe_lazy,
+)
from .constants import (
- GRID_COLUMN_ALIGNMENT_CHOICES, GRID_COLUMN_CHOICES, GRID_CONTAINER_CHOICES, GRID_ROW_HORIZONTAL_ALIGNMENT_CHOICES,
- GRID_ROW_VERTICAL_ALIGNMENT_CHOICES, GRID_SIZE,
+ GRID_COLUMN_ALIGNMENT_CHOICES,
+ GRID_COLUMN_CHOICES,
+ GRID_CONTAINER_CHOICES,
+ GRID_ROW_HORIZONTAL_ALIGNMENT_CHOICES,
+ GRID_ROW_VERTICAL_ALIGNMENT_CHOICES,
+ GRID_SIZE,
)
@@ -21,15 +30,18 @@ class Bootstrap4GridContainer(CMSPlugin):
Layout > Grid: "Container" Plugin
https://getbootstrap.com/docs/4.0/layout/grid/
"""
+
container_type = models.CharField(
- verbose_name=_('Container type'),
+ verbose_name=_("Container type"),
choices=GRID_CONTAINER_CHOICES,
default=get_first_choice(GRID_CONTAINER_CHOICES),
max_length=255,
- help_text=mark_safe_lazy(_(
- 'Defines if the grid should use fixed width (.container
) '
- 'or fluid width (.container-fluid
).'
- )),
+ help_text=mark_safe_lazy(
+ _(
+ "Defines if the grid should use fixed width (.container
) "
+ "or fluid width (.container-fluid
)."
+ )
+ ),
)
tag_type = TagTypeField()
attributes = AttributesField()
@@ -39,7 +51,7 @@ def __str__(self):
def get_short_description(self):
choice = get_choices_match(GRID_CONTAINER_CHOICES, self.container_type)
- return f'({choice})'
+ return f"({choice})"
class Bootstrap4GridRow(CMSPlugin):
@@ -47,30 +59,37 @@ class Bootstrap4GridRow(CMSPlugin):
Layout > Grid: "Row" Plugin
https://getbootstrap.com/docs/4.0/layout/grid/
"""
+
vertical_alignment = models.CharField(
- verbose_name=_('Vertical alignment'),
+ verbose_name=_("Vertical alignment"),
choices=GRID_ROW_VERTICAL_ALIGNMENT_CHOICES,
blank=True,
max_length=255,
- help_text=mark_safe_lazy(_(
- 'Read more in the documentation.')
- .format(link='https://getbootstrap.com/docs/4.0/layout/grid/#vertical-alignment')
+ help_text=mark_safe_lazy(
+ _(
+ 'Read more in the documentation.'
+ ).format(
+ link="https://getbootstrap.com/docs/4.0/layout/grid/#vertical-alignment"
+ )
),
)
horizontal_alignment = models.CharField(
- verbose_name=_('Horizontal alignment'),
+ verbose_name=_("Horizontal alignment"),
choices=GRID_ROW_HORIZONTAL_ALIGNMENT_CHOICES,
blank=True,
max_length=255,
- help_text=mark_safe_lazy(_(
- 'Read more in the documentation.')
- .format(link='https://getbootstrap.com/docs/4.0/layout/grid/#horizontal-alignment')
+ help_text=mark_safe_lazy(
+ _(
+ 'Read more in the documentation.'
+ ).format(
+ link="https://getbootstrap.com/docs/4.0/layout/grid/#horizontal-alignment"
+ )
),
)
gutters = models.BooleanField(
- verbose_name=_('Remove gutters'),
+ verbose_name=_("Remove gutters"),
default=False,
- help_text=_('Removes the marginal gutters from the grid.'),
+ help_text=_("Removes the marginal gutters from the grid."),
)
tag_type = TagTypeField()
attributes = AttributesField()
@@ -80,11 +99,9 @@ def __str__(self):
def get_short_description(self):
column_count = len(self.child_plugin_instances or [])
- column_count_str = ungettext(
- '(1 column)',
- '(%(count)i columns)',
- column_count
- ) % {'count': column_count}
+ column_count_str = ngettext(
+ "(1 column)", "(%(count)i columns)", column_count
+ ) % {"count": column_count}
return column_count_str
@@ -94,15 +111,16 @@ class Bootstrap4GridColumn(CMSPlugin):
Layout > Grid: "Column" Plugin
https://getbootstrap.com/docs/4.0/layout/grid/
"""
+
column_type = models.CharField(
- verbose_name=_('Column type'),
+ verbose_name=_("Column type"),
choices=GRID_COLUMN_CHOICES,
default=GRID_COLUMN_CHOICES[0][0],
blank=True,
max_length=255,
)
column_alignment = models.CharField(
- verbose_name=_('Alignment'),
+ verbose_name=_("Alignment"),
choices=GRID_COLUMN_ALIGNMENT_CHOICES,
blank=True,
max_length=255,
@@ -114,33 +132,35 @@ def __str__(self):
return str(self.pk)
def get_short_description(self):
- text = ''
+ text = ""
classes = self.get_grid_values()
if self.xs_col:
- text += f'(col-{self.xs_col}) '
+ text += f"(col-{self.xs_col}) "
else:
- text += '(auto) '
- if self.column_type != 'col':
- text += f'.{self.column_type} '
+ text += "(auto) "
+ if self.column_type != "col":
+ text += f".{self.column_type} "
if classes:
- text += '.{}'.format(' .'.join(self.get_grid_values()))
+ text += ".{}".format(" .".join(self.get_grid_values()))
return text
def get_grid_values(self):
classes = []
for device in DEVICE_SIZES:
- for element in ('col', 'order', 'offset', 'ml', 'mr'):
- size = getattr(self, f'{device}_{element}')
- if isinstance(size, int) and (element == 'col' or element == 'order' or element == 'offset'):
- if device == 'xs':
- classes.append(f'{element}-{int(size)}')
+ for element in ("col", "order", "offset", "ml", "mr"):
+ size = getattr(self, f"{device}_{element}")
+ if isinstance(size, int) and (
+ element == "col" or element == "order" or element == "offset"
+ ):
+ if device == "xs":
+ classes.append(f"{element}-{int(size)}")
else:
- classes.append(f'{element}-{device}-{int(size)}')
+ classes.append(f"{element}-{device}-{int(size)}")
elif size:
- if device == 'xs':
- classes.append('{}-{}'.format(element, 'auto'))
+ if device == "xs":
+ classes.append("{}-{}".format(element, "auto"))
else:
- classes.append('{}-{}-{}'.format(element, device, 'auto'))
+ classes.append("{}-{}-{}".format(element, device, "auto"))
return classes
@@ -162,26 +182,26 @@ def get_grid_values(self):
for size in DEVICE_SIZES:
# Grid size
Bootstrap4GridColumn.add_to_class(
- f'{size}_col',
+ f"{size}_col",
IntegerRangeFieldPartial(),
)
# Grid ordering
Bootstrap4GridColumn.add_to_class(
- f'{size}_order',
+ f"{size}_order",
IntegerRangeFieldPartial(),
)
# Grid offset
Bootstrap4GridColumn.add_to_class(
- f'{size}_offset',
+ f"{size}_offset",
IntegerRangeFieldPartial(),
)
# Grid margin left (ml)
Bootstrap4GridColumn.add_to_class(
- f'{size}_ml',
+ f"{size}_ml",
BooleanFieldPartial(),
)
# Grid margin right (ml)
Bootstrap4GridColumn.add_to_class(
- f'{size}_mr',
+ f"{size}_mr",
BooleanFieldPartial(),
)
diff --git a/tests/requirements/base.txt b/tests/requirements/base.txt
index 66157f2..68fb1e6 100644
--- a/tests/requirements/base.txt
+++ b/tests/requirements/base.txt
@@ -7,3 +7,4 @@ isort
flake8
pyflakes>=2.1
wheel
+django-filer<3