django-select2/django_select2/fields.py
AppleGrew (applegrew) 30082bb8ed Initial commit
2012-07-24 01:44:55 +05:30

47 lines
1.6 KiB
Python

from django import forms
from .widgets import Select2Widget, Select2MultipleWidget, HeavySelect2Widget, HeavySelect2MultipleWidget
class Select2ChoiceField(forms.ChoiceField):
widget = Select2Widget
class Select2MultipleChoiceField(forms.ChoiceField):
widget = Select2MultipleWidget
class HeavySelect2FieldBase(forms.Field):
def __init__(self, **kwargs):
data_view = kwargs.pop('data_view', None)
kargs = {}
if data_view is not None:
kargs['widget'] = self.widget(data_view=data_view)
elif kwargs.get('widget', None) is None:
raise ValueError('data_view is required else you need to provide your own widget instance.')
kargs.update(kwargs)
super(HeavySelect2FieldBase, self).__init__(**kargs)
class HeavySelect2ChoiceField(HeavySelect2FieldBase):
widget = HeavySelect2Widget
class HeavySelect2MultipleChoiceField(HeavySelect2FieldBase):
widget = HeavySelect2MultipleWidget
class ModelSelect2Field(HeavySelect2ChoiceField):
def __init__(self, **kwargs):
self.queryset = kwargs.pop('queryset', None)
if self.queryset is None:
raise ValueError('queryset is required.')
self.max_results = kwargs.pop('max_results', None)
self.search_fields = kwargs.pop('search_fields', None)
if not self.search_fields:
raise ValueError('search_fields is required.')
kargs = {}
kargs['data_view'] = "django_select2_central_json"
kargs.update(kwargs)
super(ModelSelect2Field, self).__init__(**kargs)
def security_check(self, request):
raise NotImplemented