Doc updates

This commit is contained in:
AppleGrew (applegrew) 2012-09-05 12:16:48 +05:30
parent ca9ac2fb3e
commit 8ba04e5e4a
13 changed files with 219 additions and 36 deletions

View file

@ -52,8 +52,8 @@ class AutoViewFieldMixin(object):
:param request: The Ajax request object.
:type request: :py:class:`django.http.HttpRequest`
:param args: The ``*args`` passed to :py:meth:`django.views.generic.View.dispatch`.
:param kwargs: The ``**kwargs`` passed to :py:meth:`django.views.generic.View.dispatch`.
:param args: The ``*args`` passed to :py:meth:`django.views.generic.base.View.dispatch`.
:param kwargs: The ``**kwargs`` passed to :py:meth:`django.views.generic.base.View.dispatch`.
:return: A boolean value, signalling if check passed or failed.
:rtype: :py:obj:`bool`
@ -390,7 +390,7 @@ class HeavySelect2FieldBaseMixin(object):
Class constructor.
:param data_view: A :py:class:`~.views.Select2View` sub-class which can respond to this widget's Ajax queries.
:type data_view: :py:class:`django.views.generic.View` or None
:type data_view: :py:class:`django.views.generic.base.View` or None
:param widget: A widget instance.
:type widget: :py:class:`django.forms.widgets.Widget` or None

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -102,8 +102,8 @@
<span class="sd"> :param request: The Ajax request object.</span>
<span class="sd"> :type request: :py:class:`django.http.HttpRequest`</span>
<span class="sd"> :param args: The ``*args`` passed to :py:meth:`django.views.generic.View.dispatch`.</span>
<span class="sd"> :param kwargs: The ``**kwargs`` passed to :py:meth:`django.views.generic.View.dispatch`.</span>
<span class="sd"> :param args: The ``*args`` passed to :py:meth:`django.views.generic.base.View.dispatch`.</span>
<span class="sd"> :param kwargs: The ``**kwargs`` passed to :py:meth:`django.views.generic.base.View.dispatch`.</span>
<span class="sd"> :return: A boolean value, signalling if check passed or failed.</span>
<span class="sd"> :rtype: :py:obj:`bool`</span>
@ -116,10 +116,13 @@
<div class="viewcode-block" id="AutoViewFieldMixin.get_results"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoViewFieldMixin.get_results">[docs]</a> <span class="k">def</span> <span class="nf">get_results</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">term</span><span class="p">,</span> <span class="n">page</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
<span class="s">&quot;See :py:meth:`.views.Select2View.get_results`.&quot;</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span>
</div></div>
<span class="kn">import</span> <span class="nn">copy</span>
<span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">forms</span>
<span class="kn">from</span> <span class="nn">django.core</span> <span class="kn">import</span> <span class="n">validators</span>
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ValidationError</span>
<span class="kn">from</span> <span class="nn">django.forms.models</span> <span class="kn">import</span> <span class="n">ModelChoiceIterator</span>
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">Q</span>
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">ugettext_lazy</span> <span class="k">as</span> <span class="n">_</span>
@ -139,6 +142,7 @@
<span class="sd"> Drop-in Select2 replacement for :py:class:`forms.ChoiceField`.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">Select2Widget</span>
</div>
<div class="viewcode-block" id="Select2MultipleChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.Select2MultipleChoiceField">[docs]</a><span class="k">class</span> <span class="nc">Select2MultipleChoiceField</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">MultipleChoiceField</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -146,6 +150,7 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">Select2MultipleWidget</span>
<span class="c">### Model fields related mixins ###</span>
</div>
<div class="viewcode-block" id="ModelResultJsonMixin"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ModelResultJsonMixin">[docs]</a><span class="k">class</span> <span class="nc">ModelResultJsonMixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
@ -284,6 +289,7 @@
<span class="n">res</span> <span class="o">=</span> <span class="p">[</span> <span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_field_name</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">label_from_instance</span><span class="p">(</span><span class="n">obj</span><span class="p">),</span> <span class="p">)</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">res</span> <span class="p">]</span>
<span class="k">return</span> <span class="p">(</span><span class="n">NO_ERR_RESP</span><span class="p">,</span> <span class="n">has_more</span><span class="p">,</span> <span class="n">res</span><span class="p">,</span> <span class="p">)</span>
</div></div>
<div class="viewcode-block" id="UnhideableQuerysetType"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.UnhideableQuerysetType">[docs]</a><span class="k">class</span> <span class="nc">UnhideableQuerysetType</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -312,6 +318,7 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">queryset</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="s">&#39;_subclass_queryset&#39;</span><span class="p">):</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;queryset&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="s">&#39;_subclass_queryset&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="nb">type</span><span class="o">.</span><span class="n">__call__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="ChoiceMixin"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ChoiceMixin">[docs]</a><span class="k">class</span> <span class="nc">ChoiceMixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -321,6 +328,7 @@
<span class="k">def</span> <span class="nf">_get_choices</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">&#39;_choices&#39;</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_choices</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="k">def</span> <span class="nf">_set_choices</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="c"># Setting choices also sets the choices on the widget.</span>
@ -329,6 +337,12 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_choices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">choices</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_choices</span><span class="p">,</span> <span class="n">_set_choices</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__deepcopy__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">memo</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">ChoiceMixin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__deepcopy__</span><span class="p">(</span><span class="n">memo</span><span class="p">)</span>
<span class="n">result</span><span class="o">.</span><span class="n">_choices</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_choices</span><span class="p">,</span> <span class="n">memo</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
</div>
<div class="viewcode-block" id="QuerysetChoiceMixin"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.QuerysetChoiceMixin">[docs]</a><span class="k">class</span> <span class="nc">QuerysetChoiceMixin</span><span class="p">(</span><span class="n">ChoiceMixin</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -352,6 +366,7 @@
<span class="k">return</span> <span class="n">ModelChoiceIterator</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="n">choices</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_choices</span><span class="p">,</span> <span class="n">ChoiceMixin</span><span class="o">.</span><span class="n">_set_choices</span><span class="p">)</span>
</div>
<span class="k">class</span> <span class="nc">ModelChoiceFieldMixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
@ -376,14 +391,17 @@
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">&#39;_queryset&#39;</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_queryset</span>
<span class="c">### Slightly altered versions of the Django counterparts with the same name in forms module. ###</span>
<span class="k">class</span> <span class="nc">ModelChoiceField</span><span class="p">(</span><span class="n">ModelChoiceFieldMixin</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">ModelChoiceField</span><span class="p">):</span>
<span class="n">queryset</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">ModelChoiceFieldMixin</span><span class="o">.</span><span class="n">_get_queryset</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">ModelChoiceField</span><span class="o">.</span><span class="n">_set_queryset</span><span class="p">)</span>
<span class="k">class</span> <span class="nc">ModelMultipleChoiceField</span><span class="p">(</span><span class="n">ModelChoiceFieldMixin</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">ModelMultipleChoiceField</span><span class="p">):</span>
<span class="n">queryset</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">ModelChoiceFieldMixin</span><span class="o">.</span><span class="n">_get_queryset</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">ModelMultipleChoiceField</span><span class="o">.</span><span class="n">_set_queryset</span><span class="p">)</span>
<span class="c">### Light Fileds specialized for Models ###</span>
<div class="viewcode-block" id="ModelSelect2Field"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ModelSelect2Field">[docs]</a><span class="k">class</span> <span class="nc">ModelSelect2Field</span><span class="p">(</span><span class="n">ModelChoiceField</span><span class="p">)</span> <span class="p">:</span>
@ -393,6 +411,7 @@
<span class="sd"> Select2 replacement for :py:class:`forms.ModelChoiceField`.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">Select2Widget</span>
</div>
<div class="viewcode-block" id="ModelSelect2MultipleField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ModelSelect2MultipleField">[docs]</a><span class="k">class</span> <span class="nc">ModelSelect2MultipleField</span><span class="p">(</span><span class="n">ModelMultipleChoiceField</span><span class="p">)</span> <span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -402,18 +421,26 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">Select2MultipleWidget</span>
<span class="c">### Heavy fields ###</span>
</div>
<div class="viewcode-block" id="HeavySelect2FieldBase"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2FieldBase">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2FieldBase</span><span class="p">(</span><span class="n">ChoiceMixin</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">Field</span><span class="p">):</span>
<div class="viewcode-block" id="HeavySelect2FieldBaseMixin"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2FieldBaseMixin">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2FieldBaseMixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Base field for all Heavy fields.</span>
<span class="sd"> Base mixin field for all Heavy fields.</span>
<span class="sd"> .. note:: Although Heavy fields accept ``choices`` parameter like all Django choice fields, but these</span>
<span class="sd"> fields are backed by big data sources, so ``choices`` cannot possibly have all the values.</span>
<span class="sd"> For Heavies, consider ``choices`` to be a subset of all possible choices. It is available because users</span>
<span class="sd"> might expect it to be available.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="HeavySelect2FieldBase.__init__"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2FieldBase.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<div class="viewcode-block" id="HeavySelect2FieldBaseMixin.__init__"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2FieldBaseMixin.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Class constructor.</span>
<span class="sd"> :param data_view: A :py:class:`~.views.Select2View` sub-class which can respond to this widget&#39;s Ajax queries.</span>
<span class="sd"> :type data_view: :py:class:`django.views.generic.View` or None</span>
<span class="sd"> :type data_view: :py:class:`django.views.generic.base.View` or None</span>
<span class="sd"> :param widget: A widget instance.</span>
<span class="sd"> :type widget: :py:class:`django.forms.widgets.Widget` or None</span>
@ -432,7 +459,7 @@
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&#39;data_view is required else you need to provide your own widget instance.&#39;</span><span class="p">)</span>
<span class="n">kargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">HeavySelect2FieldBase</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kargs</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">HeavySelect2FieldBaseMixin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kargs</span><span class="p">)</span>
<span class="c"># By this time self.widget would have been instantiated.</span>
@ -447,29 +474,150 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">choices</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">&#39;choices&#39;</span><span class="p">):</span> <span class="c"># ModelChoiceField will set this to ModelChoiceIterator</span>
<span class="n">choices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span>
<span class="bp">self</span><span class="o">.</span><span class="n">choices</span> <span class="o">=</span> <span class="n">choices</span>
</div></div>
<div class="viewcode-block" id="HeavySelect2ChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2ChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2ChoiceField</span><span class="p">(</span><span class="n">HeavySelect2FieldBase</span><span class="p">):</span>
<div class="viewcode-block" id="HeavyChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavyChoiceField</span><span class="p">(</span><span class="n">ChoiceMixin</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">Field</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Reimplements :py:class:`django.forms.TypedChoiceField` in a way which suites the use of big data.</span>
<span class="sd"> .. note:: Although this field accepts ``choices`` parameter like all Django choice fields, but these</span>
<span class="sd"> fields are backed by big data sources, so ``choices`` cannot possibly have all the values. It is meant</span>
<span class="sd"> to be a subset of all possible choices.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">default_error_messages</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;invalid_choice&#39;</span><span class="p">:</span> <span class="n">_</span><span class="p">(</span><span class="s">u&#39;Select a valid choice. </span><span class="si">%(value)s</span><span class="s"> is not one of the available choices.&#39;</span><span class="p">),</span>
<span class="p">}</span>
<span class="n">empty_value</span> <span class="o">=</span> <span class="s">u&#39;&#39;</span>
<span class="s">&quot;Sub-classes can set this other value if needed.&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">HeavyChoiceField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="c"># Widget should have been instantiated by now.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">field</span> <span class="o">=</span> <span class="bp">self</span>
<span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_value</span> <span class="ow">or</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">validators</span><span class="o">.</span><span class="n">EMPTY_VALUES</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_value</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">coerce_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">,</span> <span class="n">ValidationError</span><span class="p">):</span>
<span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s">&#39;invalid_choice&#39;</span><span class="p">]</span> <span class="o">%</span> <span class="p">{</span><span class="s">&#39;value&#39;</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
<span class="k">return</span> <span class="n">value</span>
<span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">HeavyChoiceField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">if</span> <span class="n">value</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">valid_value</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
<span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s">&#39;invalid_choice&#39;</span><span class="p">]</span> <span class="o">%</span> <span class="p">{</span><span class="s">&#39;value&#39;</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
<span class="k">def</span> <span class="nf">valid_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">uvalue</span> <span class="o">=</span> <span class="n">smart_unicode</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">choices</span><span class="p">:</span>
<span class="k">if</span> <span class="n">uvalue</span> <span class="o">==</span> <span class="n">smart_unicode</span><span class="p">(</span><span class="n">k</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">validate_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<div class="viewcode-block" id="HeavyChoiceField.coerce_value"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyChoiceField.coerce_value">[docs]</a> <span class="k">def</span> <span class="nf">coerce_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Coerces ``value`` to a Python data type.</span>
<span class="sd"> Sub-classes should override this if they do not want unicode values.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">smart_unicode</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HeavyChoiceField.validate_value"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyChoiceField.validate_value">[docs]</a> <span class="k">def</span> <span class="nf">validate_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Sub-classes can override this to validate the value entered against the big data.</span>
<span class="sd"> :param value: Value entered by the user.</span>
<span class="sd"> :type value: As coerced by :py:meth:`.coerce_value`.</span>
<span class="sd"> :return: ``True`` means the ``value`` is valid.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">True</span>
</div>
<span class="k">def</span> <span class="nf">_get_val_txt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">coerce_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">validate_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s">&quot;Exception while trying to get label for value&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">None</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_val_txt</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<div class="viewcode-block" id="HeavyChoiceField.get_val_txt"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyChoiceField.get_val_txt">[docs]</a> <span class="k">def</span> <span class="nf">get_val_txt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> If Heavy widgets encounter any value which it can&#39;t find in ``choices`` then it calls</span>
<span class="sd"> this method to get the label for the value.</span>
<span class="sd"> :param value: Value entered by the user.</span>
<span class="sd"> :type value: As coerced by :py:meth:`.coerce_value`.</span>
<span class="sd"> :return: The label for this value.</span>
<span class="sd"> :rtype: :py:obj:`unicode` or None (when no possible label could be found)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">None</span>
</div></div>
<div class="viewcode-block" id="HeavyMultipleChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyMultipleChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavyMultipleChoiceField</span><span class="p">(</span><span class="n">HeavyChoiceField</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Reimplements :py:class:`django.forms.TypedMultipleChoiceField` in a way which suites the use of big data.</span>
<span class="sd"> .. note:: Although this field accepts ``choices`` parameter like all Django choice fields, but these</span>
<span class="sd"> fields are backed by big data sources, so ``choices`` cannot possibly have all the values. It is meant</span>
<span class="sd"> to be a subset of all possible choices.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">hidden_widget</span> <span class="o">=</span> <span class="n">forms</span><span class="o">.</span><span class="n">MultipleHiddenInput</span>
<span class="n">default_error_messages</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;invalid_choice&#39;</span><span class="p">:</span> <span class="n">_</span><span class="p">(</span><span class="s">u&#39;Select a valid choice. </span><span class="si">%(value)s</span><span class="s"> is not one of the available choices.&#39;</span><span class="p">),</span>
<span class="s">&#39;invalid_list&#39;</span><span class="p">:</span> <span class="n">_</span><span class="p">(</span><span class="s">u&#39;Enter a list of values.&#39;</span><span class="p">),</span>
<span class="p">}</span>
<span class="k">def</span> <span class="nf">to_python</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">)):</span>
<span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s">&#39;invalid_list&#39;</span><span class="p">])</span>
<span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">coerce_value</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="p">]</span>
<span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">required</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s">&#39;required&#39;</span><span class="p">])</span>
<span class="c"># Validate that each value in the value list is in self.choices or</span>
<span class="c"># the big data (i.e. validate_value() returns True).</span>
<span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">valid_value</span><span class="p">(</span><span class="n">val</span><span class="p">):</span>
<span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_messages</span><span class="p">[</span><span class="s">&#39;invalid_choice&#39;</span><span class="p">]</span> <span class="o">%</span> <span class="p">{</span><span class="s">&#39;value&#39;</span><span class="p">:</span> <span class="n">val</span><span class="p">})</span>
</div>
<div class="viewcode-block" id="HeavySelect2ChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2ChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2ChoiceField</span><span class="p">(</span><span class="n">HeavySelect2FieldBaseMixin</span><span class="p">,</span> <span class="n">HeavyChoiceField</span><span class="p">):</span>
<span class="s">&quot;Heavy Select2 Choice field.&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">HeavySelect2Widget</span>
</div>
<div class="viewcode-block" id="HeavySelect2MultipleChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2MultipleChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2MultipleChoiceField</span><span class="p">(</span><span class="n">HeavySelect2FieldBase</span><span class="p">):</span>
<div class="viewcode-block" id="HeavySelect2MultipleChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavySelect2MultipleChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2MultipleChoiceField</span><span class="p">(</span><span class="n">HeavySelect2FieldBaseMixin</span><span class="p">,</span> <span class="n">HeavyMultipleChoiceField</span><span class="p">):</span>
<span class="s">&quot;Heavy Select2 Multiple Choice field.&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">HeavySelect2MultipleWidget</span>
<span class="c">### Heavy field specialized for Models ###</span>
</div>
<div class="viewcode-block" id="HeavyModelSelect2ChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyModelSelect2ChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavyModelSelect2ChoiceField</span><span class="p">(</span><span class="n">QuerysetChoiceMixin</span><span class="p">,</span> <span class="n">HeavySelect2ChoiceField</span><span class="p">,</span> <span class="n">ModelChoiceField</span><span class="p">):</span>
<div class="viewcode-block" id="HeavyModelSelect2ChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyModelSelect2ChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavyModelSelect2ChoiceField</span><span class="p">(</span><span class="n">HeavySelect2FieldBaseMixin</span><span class="p">,</span> <span class="n">ModelChoiceField</span><span class="p">):</span>
<span class="s">&quot;Heavy Select2 Choice field, specialized for Models.&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">HeavySelect2Widget</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;choices&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">HeavyModelSelect2ChoiceField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="HeavyModelSelect2MultipleChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyModelSelect2MultipleChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavyModelSelect2MultipleChoiceField</span><span class="p">(</span><span class="n">QuerysetChoiceMixin</span><span class="p">,</span> <span class="n">HeavySelect2MultipleChoiceField</span><span class="p">,</span> <span class="n">ModelMultipleChoiceField</span><span class="p">):</span>
<div class="viewcode-block" id="HeavyModelSelect2MultipleChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.HeavyModelSelect2MultipleChoiceField">[docs]</a><span class="k">class</span> <span class="nc">HeavyModelSelect2MultipleChoiceField</span><span class="p">(</span><span class="n">HeavySelect2FieldBaseMixin</span><span class="p">,</span> <span class="n">ModelMultipleChoiceField</span><span class="p">):</span>
<span class="s">&quot;Heavy Select2 Multiple Choice field, specialized for Models.&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">HeavySelect2MultipleWidget</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;choices&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
<span class="nb">super</span><span class="p">(</span><span class="n">HeavyModelSelect2MultipleChoiceField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="c">### Heavy general field that uses central AutoView ###</span>
</div>
<div class="viewcode-block" id="AutoSelect2Field"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoSelect2Field">[docs]</a><span class="k">class</span> <span class="nc">AutoSelect2Field</span><span class="p">(</span><span class="n">AutoViewFieldMixin</span><span class="p">,</span> <span class="n">HeavySelect2ChoiceField</span><span class="p">):</span>
@ -478,6 +626,8 @@
<span class="sd"> This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming</span>
<span class="sd"> json query requests for that type (class).</span>
<span class="sd"> .. warning:: :py:exc:`NotImplementedError` would be thrown if :py:meth:`get_results` is not implemented.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">AutoHeavySelect2Widget</span>
@ -486,6 +636,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">data_view</span> <span class="o">=</span> <span class="s">&quot;django_select2_central_json&quot;</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;data_view&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_view</span>
<span class="nb">super</span><span class="p">(</span><span class="n">AutoSelect2Field</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="AutoSelect2MultipleField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoSelect2MultipleField">[docs]</a><span class="k">class</span> <span class="nc">AutoSelect2MultipleField</span><span class="p">(</span><span class="n">AutoViewFieldMixin</span><span class="p">,</span> <span class="n">HeavySelect2MultipleChoiceField</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -493,6 +644,8 @@
<span class="sd"> This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming</span>
<span class="sd"> json query requests for that type (class).</span>
<span class="sd"> .. warning:: :py:exc:`NotImplementedError` would be thrown if :py:meth:`get_results` is not implemented.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">widget</span> <span class="o">=</span> <span class="n">AutoHeavySelect2MultipleWidget</span>
@ -502,6 +655,7 @@
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;data_view&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_view</span>
<span class="nb">super</span><span class="p">(</span><span class="n">AutoSelect2MultipleField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="c">### Heavy field, specialized for Model, that uses central AutoView ###</span>
</div>
<div class="viewcode-block" id="AutoModelSelect2Field"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoModelSelect2Field">[docs]</a><span class="k">class</span> <span class="nc">AutoModelSelect2Field</span><span class="p">(</span><span class="n">ModelResultJsonMixin</span><span class="p">,</span> <span class="n">AutoViewFieldMixin</span><span class="p">,</span> <span class="n">HeavyModelSelect2ChoiceField</span><span class="p">):</span>
@ -520,6 +674,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">data_view</span> <span class="o">=</span> <span class="s">&quot;django_select2_central_json&quot;</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s">&#39;data_view&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_view</span>
<span class="nb">super</span><span class="p">(</span><span class="n">AutoModelSelect2Field</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="AutoModelSelect2MultipleField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoModelSelect2MultipleField">[docs]</a><span class="k">class</span> <span class="nc">AutoModelSelect2MultipleField</span><span class="p">(</span><span class="n">ModelResultJsonMixin</span><span class="p">,</span> <span class="n">AutoViewFieldMixin</span><span class="p">,</span> <span class="n">HeavyModelSelect2MultipleChoiceField</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>

View file

@ -64,6 +64,7 @@
<span class="sd"> so it must not be quoted by :py:func:`.convert_py_to_js_data` while rendering the JS code.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="JSFunction"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.JSFunction">[docs]</a><span class="k">class</span> <span class="nc">JSFunction</span><span class="p">(</span><span class="n">JSVar</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -76,6 +77,7 @@
<span class="sd"> understand.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="JSFunctionInContext"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.JSFunctionInContext">[docs]</a><span class="k">class</span> <span class="nc">JSFunctionInContext</span><span class="p">(</span><span class="n">JSVar</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -88,6 +90,7 @@
<span class="sd"> .. tip:: JS functions of this type are warapped inside special another JS function -- ``django_select2.runInContextHelper``.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</div>
<div class="viewcode-block" id="render_js_script"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.render_js_script">[docs]</a><span class="k">def</span> <span class="nf">render_js_script</span><span class="p">(</span><span class="n">inner_code</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -107,6 +110,7 @@
<span class="s"> </span><span class="si">%s</span><span class="s"></span>
<span class="s"> });</span>
<span class="s"> &lt;/script&gt;&quot;&quot;&quot;</span> <span class="o">%</span> <span class="n">inner_code</span>
</div>
<div class="viewcode-block" id="extract_some_key_val"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.extract_some_key_val">[docs]</a><span class="k">def</span> <span class="nf">extract_some_key_val</span><span class="p">(</span><span class="n">dct</span><span class="p">,</span> <span class="n">keys</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -126,6 +130,7 @@
<span class="k">if</span> <span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
<span class="n">edct</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span>
<span class="k">return</span> <span class="n">edct</span>
</div>
<div class="viewcode-block" id="convert_py_to_js_data"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.convert_py_to_js_data">[docs]</a><span class="k">def</span> <span class="nf">convert_py_to_js_data</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">id_</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -159,6 +164,7 @@
<span class="k">return</span> <span class="n">convert_to_js_arr</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">id_</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="s">u&quot;&#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">force_unicode</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="convert_dict_to_js_map"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.convert_dict_to_js_map">[docs]</a><span class="k">def</span> <span class="nf">convert_dict_to_js_map</span><span class="p">(</span><span class="n">dct</span><span class="p">,</span> <span class="n">id_</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -185,6 +191,7 @@
<span class="n">out</span> <span class="o">+=</span> <span class="n">convert_py_to_js_data</span><span class="p">(</span><span class="n">dct</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">id_</span><span class="p">)</span>
<span class="k">return</span> <span class="n">out</span> <span class="o">+</span> <span class="s">u&#39;}&#39;</span>
</div>
<div class="viewcode-block" id="convert_to_js_arr"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.convert_to_js_arr">[docs]</a><span class="k">def</span> <span class="nf">convert_to_js_arr</span><span class="p">(</span><span class="n">lst</span><span class="p">,</span> <span class="n">id_</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -210,6 +217,7 @@
<span class="n">out</span> <span class="o">+=</span> <span class="n">convert_py_to_js_data</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">id_</span><span class="p">)</span>
<span class="k">return</span> <span class="n">out</span> <span class="o">+</span> <span class="s">u&#39;]&#39;</span>
</div>
<div class="viewcode-block" id="convert_to_js_string_arr"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.convert_to_js_string_arr">[docs]</a><span class="k">def</span> <span class="nf">convert_to_js_string_arr</span><span class="p">(</span><span class="n">lst</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -223,12 +231,14 @@
<span class="n">lst</span> <span class="o">=</span> <span class="p">[</span><span class="s">u&#39;&quot;</span><span class="si">%s</span><span class="s">&quot;&#39;</span> <span class="o">%</span> <span class="n">force_unicode</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">lst</span><span class="p">]</span>
<span class="k">return</span> <span class="s">u&quot;[</span><span class="si">%s</span><span class="s">]&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lst</span><span class="p">))</span>
<span class="c">### Auto view helper utils ###</span>
</div>
<span class="kn">import</span> <span class="nn">re</span>
<span class="kn">import</span> <span class="nn">threading</span>
<span class="kn">import</span> <span class="nn">datetime</span>
<div class="viewcode-block" id="synchronized"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.synchronized">[docs]</a><span class="k">def</span> <span class="nf">synchronized</span><span class="p">(</span><span class="n">f</span><span class="p">):</span>
<span class="s">&quot;Decorator to synchronize multiple calls to a functions.&quot;</span>
<span class="n">f</span><span class="o">.</span><span class="n">__lock__</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Lock</span><span class="p">()</span>
@ -244,6 +254,7 @@
<span class="n">__id_store</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># Generated Id to field instance mapping.</span>
<span class="n">__field_store</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># Field&#39;s key to generated Id mapping.</span>
<span class="n">ID_PATTERN</span> <span class="o">=</span> <span class="s">r&quot;[0-9_a-zA-Z.:+\- ]+&quot;</span>
<div class="viewcode-block" id="is_valid_id"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.is_valid_id">[docs]</a><span class="k">def</span> <span class="nf">is_valid_id</span><span class="p">(</span><span class="n">val</span><span class="p">):</span>
@ -260,6 +271,7 @@
<span class="k">return</span> <span class="bp">False</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">True</span>
</div>
<span class="nd">@synchronized</span>
<div class="viewcode-block" id="register_field"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.register_field">[docs]</a><span class="k">def</span> <span class="nf">register_field</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">field</span><span class="p">):</span>
@ -296,6 +308,7 @@
<span class="k">if</span> <span class="n">logger</span><span class="o">.</span><span class="n">isEnabledFor</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">):</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Field already registered: </span><span class="si">%s</span><span class="s">; With actual id: </span><span class="si">%s</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">id_</span><span class="p">)</span>
<span class="k">return</span> <span class="n">id_</span>
</div>
<div class="viewcode-block" id="get_field"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.get_field">[docs]</a><span class="k">def</span> <span class="nf">get_field</span><span class="p">(</span><span class="n">id_</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>

View file

@ -66,6 +66,14 @@
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">get_select2_js_path</span><span class="p">():</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">configured</span> <span class="ow">and</span> <span class="n">settings</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">:</span>
<span class="k">return</span> <span class="s">&#39;js/select2.js&#39;</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="s">&#39;js/select2.min.js&#39;</span>
<span class="c">### Light mixin and widgets ###</span>
<div class="viewcode-block" id="Select2Mixin"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin">[docs]</a><span class="k">class</span> <span class="nc">Select2Mixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
@ -236,7 +244,7 @@
<span class="k">return</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
</div>
<span class="k">class</span> <span class="nc">Media</span><span class="p">:</span>
<span class="n">js</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;js/select2.min.js&#39;</span><span class="p">,</span> <span class="p">)</span>
<span class="n">js</span> <span class="o">=</span> <span class="p">(</span><span class="n">get_select2_js_path</span><span class="p">(),</span> <span class="p">)</span>
<span class="n">css</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;screen&#39;</span><span class="p">:</span> <span class="p">(</span><span class="s">&#39;css/select2.css&#39;</span><span class="p">,</span> <span class="s">&#39;css/extra.css&#39;</span><span class="p">,</span> <span class="p">)}</span>
</div>
@ -372,6 +380,7 @@
<span class="sd"> ``heavy_data.js`` stores the selected values and their labels in the cookies. These are cleared</span>
<span class="sd"> when browser is closed.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">field</span> <span class="o">=</span> <span class="bp">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span> <span class="c"># Making an instance specific copy</span>
<span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;data_view&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;data_url&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
@ -410,7 +419,13 @@
<span class="k">for</span> <span class="n">val</span><span class="p">,</span> <span class="n">txt</span> <span class="ow">in</span> <span class="n">chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">choices</span><span class="p">,</span> <span class="n">all_choices</span><span class="p">):</span>
<span class="n">val</span> <span class="o">=</span> <span class="n">force_unicode</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
<span class="k">if</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">selected_choices</span><span class="p">:</span>
<span class="n">selected_choices</span> <span class="o">=</span> <span class="p">[</span><span class="n">v</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">selected_choices</span> <span class="k">if</span> <span class="n">v</span> <span class="o">!=</span> <span class="n">val</span><span class="p">]</span>
<span class="n">txts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">txt</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">field</span><span class="p">,</span> <span class="s">&#39;_get_val_txt&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">selected_choices</span><span class="p">:</span>
<span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">selected_choices</span><span class="p">:</span>
<span class="n">txt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">field</span><span class="o">.</span><span class="n">_get_val_txt</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
<span class="k">if</span> <span class="n">txt</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
<span class="n">txts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">txt</span><span class="p">)</span>
<span class="k">if</span> <span class="n">txts</span><span class="p">:</span>
<span class="k">return</span> <span class="n">convert_to_js_string_arr</span><span class="p">(</span><span class="n">txts</span><span class="p">)</span>
</div>
@ -455,7 +470,7 @@
<span class="k">return</span> <span class="n">js</span>
<span class="k">class</span> <span class="nc">Media</span><span class="p">:</span>
<span class="n">js</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;js/select2.min.js&#39;</span><span class="p">,</span> <span class="s">&#39;js/heavy_data.js&#39;</span><span class="p">,</span> <span class="p">)</span>
<span class="n">js</span> <span class="o">=</span> <span class="p">(</span><span class="n">get_select2_js_path</span><span class="p">(),</span> <span class="s">&#39;js/heavy_data.js&#39;</span><span class="p">,</span> <span class="p">)</span>
<span class="n">css</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;screen&#39;</span><span class="p">:</span> <span class="p">(</span><span class="s">&#39;css/select2.css&#39;</span><span class="p">,</span> <span class="s">&#39;css/extra.css&#39;</span><span class="p">,</span> <span class="p">)}</span>
</div>

Binary file not shown.

View file

@ -104,9 +104,9 @@ provide a unique key which has never occured before.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>request</strong> (<a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest" title="(in Django v1.5)"><tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt></a>) &#8211; The Ajax request object.</li>
<li><strong>args</strong> &#8211; The <tt class="docutils literal"><span class="pre">*args</span></tt> passed to <tt class="xref py py-meth docutils literal"><span class="pre">django.views.generic.View.dispatch()</span></tt>.</li>
<li><strong>kwargs</strong> &#8211; The <tt class="docutils literal"><span class="pre">**kwargs</span></tt> passed to <tt class="xref py py-meth docutils literal"><span class="pre">django.views.generic.View.dispatch()</span></tt>.</li>
<li><strong>request</strong> (<a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt></a>) &#8211; The Ajax request object.</li>
<li><strong>args</strong> &#8211; The <tt class="docutils literal"><span class="pre">*args</span></tt> passed to <a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.base.View.dispatch" title="(in Django v1.4.1)"><tt class="xref py py-meth docutils literal"><span class="pre">django.views.generic.base.View.dispatch()</span></tt></a>.</li>
<li><strong>kwargs</strong> &#8211; The <tt class="docutils literal"><span class="pre">**kwargs</span></tt> passed to <a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.base.View.dispatch" title="(in Django v1.4.1)"><tt class="xref py py-meth docutils literal"><span class="pre">django.views.generic.base.View.dispatch()</span></tt></a>.</li>
</ul>
</td>
</tr>
@ -177,7 +177,7 @@ which it then passes to <tt class="docutils literal"><span class="pre">self.quer
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>queryset</strong> (<a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet" title="(in Django v1.5)"><tt class="xref py py-class docutils literal"><span class="pre">django.db.models.query.QuerySet</span></tt></a> or None) &#8211; This can be passed as kwarg here or defined as field variabel,
<li><strong>queryset</strong> (<a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/models/querysets/#django.db.models.query.QuerySet" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.db.models.query.QuerySet</span></tt></a> or None) &#8211; This can be passed as kwarg here or defined as field variabel,
like <tt class="docutils literal"><span class="pre">search_fields</span></tt>.</li>
<li><strong>max_results</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">int</span></tt></a>) &#8211; Maximum number to results to return per Ajax query.</li>
<li><strong>to_field_name</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt></a>) &#8211; Which field&#8217;s value should be returned as result tuple&#8217;s
@ -336,7 +336,7 @@ instead.</p>
<dl class="class">
<dt id="django_select2.fields.HeavySelect2FieldBaseMixin">
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2FieldBaseMixin</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBaseMixin" title="Permalink to this definition"></a></dt>
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2FieldBaseMixin</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavySelect2FieldBaseMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBaseMixin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
<p>Base mixin field for all Heavy fields.</p>
<div class="admonition note">
@ -348,14 +348,14 @@ might expect it to be available.</p>
</div>
<dl class="method">
<dt id="django_select2.fields.HeavySelect2FieldBaseMixin.__init__">
<tt class="descname">__init__</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBaseMixin.__init__" title="Permalink to this definition"></a></dt>
<tt class="descname">__init__</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavySelect2FieldBaseMixin.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBaseMixin.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Class constructor.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>data_view</strong> (<tt class="xref py py-class docutils literal"><span class="pre">django.views.generic.View</span></tt> or None) &#8211; A <a class="reference internal" href="ref_views.html#django_select2.views.Select2View" title="django_select2.views.Select2View"><tt class="xref py py-class docutils literal"><span class="pre">Select2View</span></tt></a> sub-class which can respond to this widget&#8217;s Ajax queries.</li>
<li><strong>data_view</strong> (<a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.base.View" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></tt></a> or None) &#8211; A <a class="reference internal" href="ref_views.html#django_select2.views.Select2View" title="django_select2.views.Select2View"><tt class="xref py py-class docutils literal"><span class="pre">Select2View</span></tt></a> sub-class which can respond to this widget&#8217;s Ajax queries.</li>
<li><strong>widget</strong> (<tt class="xref py py-class docutils literal"><span class="pre">django.forms.widgets.Widget</span></tt> or None) &#8211; A widget instance.</li>
</ul>
</td>
@ -373,9 +373,9 @@ be raised.</p>
<dl class="class">
<dt id="django_select2.fields.HeavyChoiceField">
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavyChoiceField" title="Permalink to this definition"></a></dt>
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavyChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavyChoiceField" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.ChoiceMixin" title="django_select2.fields.ChoiceMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.ChoiceMixin</span></tt></a>, <tt class="xref py py-class docutils literal"><span class="pre">django.forms.fields.Field</span></tt></p>
<p>Reimplements <a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.TypedChoiceField" title="(in Django v1.5)"><tt class="xref py py-class docutils literal"><span class="pre">django.forms.TypedChoiceField</span></tt></a> in a way which suites the use of big data.</p>
<p>Reimplements <a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/forms/fields/#django.forms.TypedChoiceField" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.forms.TypedChoiceField</span></tt></a> in a way which suites the use of big data.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Although this field accepts <tt class="docutils literal"><span class="pre">choices</span></tt> parameter like all Django choice fields, but these
@ -390,14 +390,14 @@ to be a subset of all possible choices.</p>
<dl class="method">
<dt id="django_select2.fields.HeavyChoiceField.coerce_value">
<tt class="descname">coerce_value</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavyChoiceField.coerce_value" title="Permalink to this definition"></a></dt>
<tt class="descname">coerce_value</tt><big>(</big><em>value</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavyChoiceField.coerce_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavyChoiceField.coerce_value" title="Permalink to this definition"></a></dt>
<dd><p>Coerces <tt class="docutils literal"><span class="pre">value</span></tt> to a Python data type.</p>
<p>Sub-classes should override this if they do not want unicode values.</p>
</dd></dl>
<dl class="method">
<dt id="django_select2.fields.HeavyChoiceField.validate_value">
<tt class="descname">validate_value</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavyChoiceField.validate_value" title="Permalink to this definition"></a></dt>
<tt class="descname">validate_value</tt><big>(</big><em>value</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavyChoiceField.validate_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavyChoiceField.validate_value" title="Permalink to this definition"></a></dt>
<dd><p>Sub-classes can override this to validate the value entered against the big data.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@ -413,7 +413,7 @@ to be a subset of all possible choices.</p>
<dl class="method">
<dt id="django_select2.fields.HeavyChoiceField.get_val_txt">
<tt class="descname">get_val_txt</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavyChoiceField.get_val_txt" title="Permalink to this definition"></a></dt>
<tt class="descname">get_val_txt</tt><big>(</big><em>value</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavyChoiceField.get_val_txt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavyChoiceField.get_val_txt" title="Permalink to this definition"></a></dt>
<dd><p>If Heavy widgets encounter any value which it can&#8217;t find in <tt class="docutils literal"><span class="pre">choices</span></tt> then it calls
this method to get the label for the value.</p>
<table class="docutils field-list" frame="void" rules="none">
@ -434,9 +434,9 @@ this method to get the label for the value.</p>
<dl class="class">
<dt id="django_select2.fields.HeavyMultipleChoiceField">
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyMultipleChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavyMultipleChoiceField" title="Permalink to this definition"></a></dt>
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyMultipleChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavyMultipleChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavyMultipleChoiceField" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.HeavyChoiceField" title="django_select2.fields.HeavyChoiceField"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavyChoiceField</span></tt></a></p>
<p>Reimplements <a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.TypedMultipleChoiceField" title="(in Django v1.5)"><tt class="xref py py-class docutils literal"><span class="pre">django.forms.TypedMultipleChoiceField</span></tt></a> in a way which suites the use of big data.</p>
<p>Reimplements <a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/forms/fields/#django.forms.TypedMultipleChoiceField" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.forms.TypedMultipleChoiceField</span></tt></a> in a way which suites the use of big data.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Although this field accepts <tt class="docutils literal"><span class="pre">choices</span></tt> parameter like all Django choice fields, but these

View file

@ -92,7 +92,7 @@
<dl class="class">
<dt id="django_select2.views.Select2View">
<em class="property">class </em><tt class="descclassname">django_select2.views.</tt><tt class="descname">Select2View</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/views.html#Select2View"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.Select2View" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#django_select2.views.JSONResponseMixin" title="django_select2.views.JSONResponseMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.views.JSONResponseMixin</span></tt></a>, <a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/class-based-views/base/#django.views.generic.base.View" title="(in Django v1.5)"><tt class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></tt></a></p>
<dd><p>Bases: <a class="reference internal" href="#django_select2.views.JSONResponseMixin" title="django_select2.views.JSONResponseMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.views.JSONResponseMixin</span></tt></a>, <a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/class-based-views/#django.views.generic.base.View" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></tt></a></p>
<p>Base view which is designed to respond with JSON to Ajax queries from heavy widgets/fields.</p>
<p>Although the widgets won&#8217;t enforce the type of data_view it gets, but it is recommended to
sub-class this view instead of creating a Django view from scratch.</p>
@ -128,7 +128,7 @@ or these checks can be placed in <tt class="docutils literal"><span class="pre">
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>request</strong> (<a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest" title="(in Django v1.5)"><tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt></a>) &#8211; The Ajax request object.</li>
<li><strong>request</strong> (<a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt></a>) &#8211; The Ajax request object.</li>
<li><strong>args</strong> &#8211; The <tt class="docutils literal"><span class="pre">*args</span></tt> passed to <tt class="xref py py-meth docutils literal"><span class="pre">django.views.generic.View.dispatch()</span></tt>.</li>
<li><strong>kwargs</strong> &#8211; The <tt class="docutils literal"><span class="pre">**kwargs</span></tt> passed to <tt class="xref py py-meth docutils literal"><span class="pre">django.views.generic.View.dispatch()</span></tt>.</li>
</ul>
@ -152,7 +152,7 @@ Http reqeusts to your server, be able to get access to sensitive information.</p
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>request</strong> (<a class="reference external" href="http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest" title="(in Django v1.5)"><tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt></a>) &#8211; The Ajax request object.</li>
<li><strong>request</strong> (<a class="reference external" href="https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest" title="(in Django v1.4.1)"><tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt></a>) &#8211; The Ajax request object.</li>
<li><strong>term</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt></a>) &#8211; The search term.</li>
<li><strong>page</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#int" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">int</span></tt></a>) &#8211; The page number. If in your last response you had signalled that there are more results,
then when user scrolls more a new Ajax request would be sent for the same term but with next page

View file

@ -331,7 +331,7 @@ would be available as list.</p>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">When <tt class="docutils literal"><span class="pre">data_view</span></tt> is provided then it is converted into Url using
<a class="reference external" href="http://docs.djangoproject.com/en/dev/topics/http/urls/#django.core.urlresolvers.reverse" title="(in Django v1.5)"><tt class="xref py py-func docutils literal"><span class="pre">reverse()</span></tt></a>.</p>
<a class="reference external" href="https://docs.djangoproject.com/en/1.4/topics/http/urls/#django.core.urlresolvers.reverse" title="(in Django v1.4.1)"><tt class="xref py py-func docutils literal"><span class="pre">reverse()</span></tt></a>.</p>
</div>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>

File diff suppressed because one or more lines are too long

View file

@ -41,7 +41,7 @@ extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.viewco
intersphinx_mapping = {
'python': ('http://docs.python.org/2.7', None),
'django': ('http://docs.djangoproject.com/en/dev/', 'http://docs.djangoproject.com/en/dev/_objects/'),
'django': ('https://docs.djangoproject.com/en/1.4/', 'http://docs.djangoproject.com/en/1.4/_objects/'),
}
# Add any paths that contain templates here, relative to this directory.