zostera/django-bootstrap4

Customization of message-to-alert mapping

Opened this issue · 2 comments

In bootstrap4/templatetags/bootstrap4.py, there's a function bootstrap_message_classes which figures out what classes to assign to a Bootstrap Alert generated from a Django message. Right now, it makes the obvious mappings, except for two:

  • message_constants.DEBUG is mapped to alert-warning, and
  • messages without a proper level set get alert-danger.

Personally, I'd like DEBUG mapped to alert-secondary (gray background) and the default to be alert-primary (darker blue background) because I don't want things that aren't warnings or errors to look like them. Others might want to use alert-light or alert-dark. But there's no obvious way to change this. Monkeypatching the function might not work because @register.filter would still register the old one. Maybe I could alter MESSAGE_LEVEL_CLASSES, but is that the right way?

I've gotten this to work in my settings.py, but I have no idea how fragile it is:

from bootstrap4.templatetags import bootstrap4
from django.contrib.messages import constants
bootstrap4.MESSAGE_LEVEL_CLASSES[constants.DEBUG] = 'alert alert-secondary'
bootstrap4.MESSAGE_LEVEL_CLASSES[99] = 'alert alert-primary'

The 99 is the value I use to test the default case. Needless to say, this doesn't really change the default styling, and one would need to find all the messages that didn't use constants and set values for them in the dict.

This really needs to be something we can set in settings.BOOTSTRAP4.

dyve commented

Makes sense to be able to set this. I'll also check the django-bootstrap5 version of this issue and see what I can come up with.