from django import forms
from django_select2 import forms as select2_forms
from django_select2.forms import HeavySelect2Widget


class Width100(forms.Widget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if 'data-width' not in self.attrs:
            self.attrs['data-width'] = '100%'


class ModelSelect2Widget(Width100, select2_forms.ModelSelect2Widget):

    def label_from_instance(self, obj):
        try:
            name_attr = getattr(obj, 'name')
            return str(name_attr)
        except:
            return super().label_from_instance(obj=obj)


class ModelSelect2MultipleWidget(Width100, select2_forms.ModelSelect2MultipleWidget):
    pass


class Select2MultipleWidget(Width100, select2_forms.Select2MultipleWidget):
    pass


class Select2Widget(Width100, select2_forms.Select2Widget):
    pass
