Skip to content
Snippets Groups Projects
Commit cb78306d authored by Bryan BRANCOTTE's avatar Bryan BRANCOTTE
Browse files

Refactoring CharFieldDataList to extract DataList ability in an abstract...

Refactoring CharFieldDataList to extract DataList ability in an abstract class, adding IntegerFieldDataList
parent db3cee88
No related branches found
No related tags found
No related merge requests found
......@@ -17,20 +17,35 @@ from .models import *
from .ws import pdb_entry_exists
class CharFieldDataList(forms.CharField):
def __init__(self, data_class=None, data_attr=None, *args, **kwargs):
class FieldDataList(forms.CharField):
class Meta:
abstract = True
def __init__(self, data_class=None, data_attr=None, data_list=None, *args, **kwargs):
self.data_class = data_class
self.data_attr = data_attr
self.data_list = data_list
super().__init__(*args, **kwargs)
def widget_attrs(self, widget):
attrs = super().widget_attrs(widget)
if self.data_class is not None and self.data_attr is not None and not widget.is_hidden:
# The HTML element is datalist, not data_list.
attrs['datalist'] = self.data_class.objects.values_list(self.data_attr, flat=True).order_by(Upper(self.data_attr)).distinct()
attrs['datalist'] = self.data_class.objects.values_list(self.data_attr, flat=True).order_by(
Upper(self.data_attr)).distinct()
if self.data_list is not None and len(self.data_list) > 0:
attrs['datalist'] = self.data_list
return attrs
class CharFieldDataList(FieldDataList, forms.CharField):
pass
class IntegerFieldDataList(FieldDataList, forms.IntegerField):
pass
class BoostrapSelectMultiple(forms.SelectMultiple):
def __init__(self, allSelectedText, nonSelectedText, SelectedText, attrs=None, *args, **kwargs):
if attrs is not None:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment