from django import forms from django.forms.utils import ErrorList from django.utils.html import escape, format_html from django.utils.safestring import mark_safe class FormErrorList(ErrorList): template_name = "shared/error_list.html" class FormInput(forms.TextInput): def __init__(self, attrs=None): default_attrs = {"class": "form-input", "autocomplete": "off"} if attrs: default_attrs.update(attrs) super().__init__(default_attrs) class FormNumberInput(forms.NumberInput): def __init__(self, attrs=None): default_attrs = {"class": "form-input"} if attrs: default_attrs.update(attrs) super().__init__(default_attrs) class FormSelect(forms.Select): def __init__(self, attrs=None): default_attrs = {"class": "form-select"} if attrs: default_attrs.update(attrs) super().__init__(default_attrs) class FormTextarea(forms.Textarea): def __init__(self, attrs=None): default_attrs = {"class": "form-input"} if attrs: default_attrs.update(attrs) super().__init__(default_attrs) class FormCheckbox(forms.CheckboxInput): def __init__(self, attrs=None): super().__init__(attrs) self.label = "Label" def render(self, name, value, attrs=None, renderer=None): checkbox_html = super().render(name, value, attrs, renderer) input_id = attrs.get("id") if attrs else None return format_html( '