Ejemplo n.º 1
0
 def test_get_bootstrap_setting(self):
     self.assertIsNone(get_bootstrap_setting("SETTING_DOES_NOT_EXIST"))
     self.assertEqual(
         "not none",
         get_bootstrap_setting("SETTING_DOES_NOT_EXIST", "not none"))
     # Override a setting
     with self.settings(
             BOOTSTRAP4={"SETTING_DOES_NOT_EXIST": "exists now"}):
         self.assertEqual(get_bootstrap_setting("SETTING_DOES_NOT_EXIST"),
                          "exists now")
Ejemplo n.º 2
0
 def test_settings(self):
     self.assertIsNone(get_bootstrap_setting('SETTING_DOES_NOT_EXIST'))
     self.assertEqual(
         'not none',
         get_bootstrap_setting('SETTING_DOES_NOT_EXIST', 'not none'))
     # Override a setting
     with self.settings(
             BOOTSTRAP4={'SETTING_DOES_NOT_EXIST': 'exists now'}):
         self.assertEqual(get_bootstrap_setting('SETTING_DOES_NOT_EXIST'),
                          'exists now')
Ejemplo n.º 3
0
 def __init__(self, *args, **kwargs):
     self.layout = kwargs.get('layout', '')
     self.form_group_class = kwargs.get('form_group_class', FORM_GROUP_CLASS)
     self.field_class = kwargs.get('field_class', '')
     self.label_class = kwargs.get('label_class', '')
     self.show_help = kwargs.get('show_help', True)
     self.show_label = kwargs.get('show_label', True)
     self.exclude = kwargs.get('exclude', '')
     self.set_required = kwargs.get('set_required', True)
     self.set_disabled = kwargs.get('set_disabled', False)
     self.size = self.parse_size(kwargs.get('size', ''))
     self.horizontal_label_class = kwargs.get('horizontal_label_class', get_bootstrap_setting('horizontal_label_class'))
     self.horizontal_field_class = kwargs.get('horizontal_field_class', get_bootstrap_setting('horizontal_field_class'))
Ejemplo n.º 4
0
def bootstrap_setting(value):
    """
        A simple way to read bootstrap settings in a template.
        Please consider this filter private for now, do not use it in your own
        templates.
        """
    return get_bootstrap_setting(value)
Ejemplo n.º 5
0
def bootstrap_javascript(jquery=None):
    """
    Return HTML for Bootstrap JavaScript.
    Adjust url in settings. If no url is returned, we don't want this
    statement to return any HTML.
    This is intended behavior.
    Default value: ``None``
    This value is configurable, see Settings section
    **Tag name**::
        bootstrap_javascript
    **Parameters**:
        :jquery: Truthy to include jQuery as well as Bootstrap
    **Usage**::
        {% bootstrap_javascript %}
    **Example**::
        {% bootstrap_javascript jquery=1 %}
    """
    javascript = ''
    if jquery is None:
        jquery = get_bootstrap_setting('include_jquery', False)

    if jquery:
        url = bootstrap_jquery_url()
        if url:
            javascript += render_tag('script', attrs={'src': url})
    url = bootstrap_javascript_url()
    if url:
        javascript += render_tag('script', attrs={'src': url})
    return mark_safe(javascript)
Ejemplo n.º 6
0
    def expected_js(self, tag):
        template = (
            '<script src="{url}" integrity="{integrity}" crossorigin="{crossorigin}"></script>'
        )
        setting = get_bootstrap_setting(tag + "_url")

        return template.format(**setting)
Ejemplo n.º 7
0
    def __init__(self, field, *args, **kwargs):
        if not isinstance(field, BoundField):
            raise BootstrapError('Parameter "field" should contain a valid Django BoundField.')
        self.field = field
        super(FieldRenderer, self).__init__(*args, **kwargs)

        self.widget = field.field.widget
        self.is_multi_widget = isinstance(field.field.widget, MultiWidget)
        self.initial_attrs = self.widget.attrs.copy()
        self.field_help = text_value(mark_safe(field.help_text)) if self.show_help and field.help_text else ''
        self.field_errors = [conditional_escape(text_value(error)) for error in field.errors]

        if get_bootstrap_setting('set_placeholder'):
            self.placeholder = field.label
        else:
            self.placeholder = ''

        self.addon_before = kwargs.get('addon_before', self.widget.attrs.pop('addon_before', ''))
        self.addon_after = kwargs.get('addon_after', self.widget.attrs.pop('addon_after', ''))

        error_css_class = kwargs.get('error_css_class', None)
        required_css_class = kwargs.get('required_css_class', None)
        bound_css_class = kwargs.get('bound_css_class', None)
        if error_css_class is not None:
            self.error_css_class = error_css_class
        else:
            self.error_css_class = getattr(
                field.form, 'error_css_class',
                get_bootstrap_setting('error_css_class'))
        if required_css_class is not None:
            self.required_css_class = required_css_class
        else:
            self.required_css_class = getattr(
                field.form, 'required_css_class',
                get_bootstrap_setting('required_css_class'))
        if bound_css_class is not None:
            self.success_css_class = bound_css_class
        else:
            self.success_css_class = getattr(
                field.form, 'bound_css_class',
                get_bootstrap_setting('success_css_class'))

        if self.field.form.empty_permitted:
            self.set_required = False
            self.required_css_class = ''

        self.set_disabled = kwargs.get('set_disabled', False)
Ejemplo n.º 8
0
def is_widget_required_attribute(widget):
    if not get_bootstrap_setting('set_required'):
        return False
    if not widget.is_required:
        return False
    if isinstance(widget, (AdminFileWidget, HiddenInput, FileInput,
                           CheckboxInput, CheckboxSelectMultiple)):
        return False
    return True
Ejemplo n.º 9
0
def render_field_and_label(field,
                           label,
                           field_class='',
                           label_for=None,
                           label_class='',
                           layout='',
                           **kwargs):
    if layout == 'horizontal':
        if not label_class:
            label_class = get_bootstrap_setting('horizontal_label_class')
        if not field_class:
            field_class = get_bootstrap_setting('horizontal_field_class')
        if not label:
            label = mark_safe('&#160;')
        label_class = add_css_class(label_class, 'col-form-label')
    html = field
    if field_class:
        html = '<div class="{klass}">{html}</div>'.format(klass=field_class,
                                                          html=html)
    if label:
        html = render_label(
            label, label_for=label_for, label_class=label_class) + html
    return html
    def expected_css(self, tag):
        template = '<link href="{href}" integrity="{integrity}" crossorigin="{crossorigin}" rel="stylesheet">'

        setting = get_bootstrap_setting(tag + '_url')
        return template.format(**setting)
Ejemplo n.º 11
0
 def test_settings(self):
     self.assertIsNone(get_bootstrap_setting('SETTING_DOES_NOT_EXIST'))
     self.assertEqual('not none', get_bootstrap_setting('SETTING_DOES_NOT_EXIST', 'not none'))
     # Override a setting
     with self.settings(BOOTSTRAP4={'SETTING_DOES_NOT_EXIST': 'exists now'}):
         self.assertEqual(get_bootstrap_setting('SETTING_DOES_NOT_EXIST'), 'exists now')