mirror of
https://github.com/Hopiu/django-select2.git
synced 2026-04-21 21:44:46 +00:00
Issue4, more fixes.
This commit is contained in:
parent
7152641ab5
commit
3f65a2349f
23 changed files with 2133 additions and 142 deletions
|
|
@ -67,6 +67,7 @@ class AutoViewFieldMixin(object):
|
|||
"See :py:meth:`.views.Select2View.get_results`."
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
import copy
|
||||
|
||||
from django import forms
|
||||
|
|
@ -90,12 +91,14 @@ class Select2ChoiceField(forms.ChoiceField):
|
|||
"""
|
||||
widget = Select2Widget
|
||||
|
||||
|
||||
class Select2MultipleChoiceField(forms.MultipleChoiceField):
|
||||
"""
|
||||
Drop-in Select2 replacement for :py:class:`forms.MultipleChoiceField`.
|
||||
"""
|
||||
widget = Select2MultipleWidget
|
||||
|
||||
|
||||
### Model fields related mixins ###
|
||||
|
||||
class ModelResultJsonMixin(object):
|
||||
|
|
@ -235,6 +238,7 @@ class ModelResultJsonMixin(object):
|
|||
res = [ (getattr(obj, self.to_field_name), self.label_from_instance(obj), ) for obj in res ]
|
||||
return (NO_ERR_RESP, has_more, res, )
|
||||
|
||||
|
||||
class UnhideableQuerysetType(type):
|
||||
"""
|
||||
This does some pretty nasty hacky stuff, to make sure users can
|
||||
|
|
@ -263,6 +267,7 @@ class UnhideableQuerysetType(type):
|
|||
kwargs['queryset'] = getattr(cls, '_subclass_queryset')
|
||||
return type.__call__(cls, *args, **kwargs)
|
||||
|
||||
|
||||
class ChoiceMixin(object):
|
||||
"""
|
||||
Simple mixin which provides a property -- ``choices``. When ``choices`` is set,
|
||||
|
|
@ -280,6 +285,7 @@ class ChoiceMixin(object):
|
|||
|
||||
choices = property(_get_choices, _set_choices)
|
||||
|
||||
|
||||
class QuerysetChoiceMixin(ChoiceMixin):
|
||||
"""
|
||||
Overrides ``choices``' getter to return instance of :py:class:`.ModelChoiceIterator`
|
||||
|
|
@ -303,6 +309,7 @@ class QuerysetChoiceMixin(ChoiceMixin):
|
|||
|
||||
choices = property(_get_choices, ChoiceMixin._set_choices)
|
||||
|
||||
|
||||
class ModelChoiceFieldMixin(object):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
|
@ -326,14 +333,17 @@ class ModelChoiceFieldMixin(object):
|
|||
if hasattr(self, '_queryset'):
|
||||
return self._queryset
|
||||
|
||||
|
||||
### Slightly altered versions of the Django counterparts with the same name in forms module. ###
|
||||
|
||||
class ModelChoiceField(ModelChoiceFieldMixin, forms.ModelChoiceField):
|
||||
queryset = property(ModelChoiceFieldMixin._get_queryset, forms.ModelChoiceField._set_queryset)
|
||||
|
||||
|
||||
class ModelMultipleChoiceField(ModelChoiceFieldMixin, forms.ModelMultipleChoiceField):
|
||||
queryset = property(ModelChoiceFieldMixin._get_queryset, forms.ModelMultipleChoiceField._set_queryset)
|
||||
|
||||
|
||||
### Light Fileds specialized for Models ###
|
||||
|
||||
class ModelSelect2Field(ModelChoiceField) :
|
||||
|
|
@ -344,6 +354,7 @@ class ModelSelect2Field(ModelChoiceField) :
|
|||
"""
|
||||
widget = Select2Widget
|
||||
|
||||
|
||||
class ModelSelect2MultipleField(ModelMultipleChoiceField) :
|
||||
"""
|
||||
Light multiple-value Select2 field, specialized for Models.
|
||||
|
|
@ -352,11 +363,12 @@ class ModelSelect2MultipleField(ModelMultipleChoiceField) :
|
|||
"""
|
||||
widget = Select2MultipleWidget
|
||||
|
||||
|
||||
### Heavy fields ###
|
||||
|
||||
class HeavySelect2FieldBase(ChoiceMixin, forms.Field):
|
||||
class HeavySelect2FieldBaseMixin(object):
|
||||
"""
|
||||
Base field for all Heavy fields.
|
||||
Base mixin field for all Heavy fields.
|
||||
"""
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -382,7 +394,7 @@ class HeavySelect2FieldBase(ChoiceMixin, forms.Field):
|
|||
raise ValueError('data_view is required else you need to provide your own widget instance.')
|
||||
|
||||
kargs.update(kwargs)
|
||||
super(HeavySelect2FieldBase, self).__init__(*args, **kargs)
|
||||
super(HeavySelect2FieldBaseMixin, self).__init__(*args, **kargs)
|
||||
|
||||
# By this time self.widget would have been instantiated.
|
||||
|
||||
|
|
@ -398,28 +410,37 @@ class HeavySelect2FieldBase(ChoiceMixin, forms.Field):
|
|||
choices = self.choices
|
||||
self.choices = choices
|
||||
|
||||
class HeavySelect2ChoiceField(HeavySelect2FieldBase):
|
||||
|
||||
class HeavySelect2ChoiceField(HeavySelect2FieldBaseMixin, forms.ChoiceField):
|
||||
"Heavy Select2 Choice field."
|
||||
widget = HeavySelect2Widget
|
||||
|
||||
class HeavySelect2MultipleChoiceField(HeavySelect2FieldBase):
|
||||
|
||||
class HeavySelect2MultipleChoiceField(HeavySelect2FieldBaseMixin, forms.MultipleChoiceField):
|
||||
"Heavy Select2 Multiple Choice field."
|
||||
widget = HeavySelect2MultipleWidget
|
||||
|
||||
|
||||
### Heavy field specialized for Models ###
|
||||
|
||||
class HeavyModelSelect2ChoiceField(QuerysetChoiceMixin, HeavySelect2ChoiceField, ModelChoiceField):
|
||||
class HeavyModelSelect2ChoiceField(QuerysetChoiceMixin, HeavySelect2FieldBaseMixin, ModelChoiceField):
|
||||
"Heavy Select2 Choice field, specialized for Models."
|
||||
widget = HeavySelect2Widget
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
kwargs.pop('choices', None)
|
||||
super(HeavyModelSelect2ChoiceField, self).__init__(*args, **kwargs)
|
||||
|
||||
class HeavyModelSelect2MultipleChoiceField(QuerysetChoiceMixin, HeavySelect2MultipleChoiceField, ModelMultipleChoiceField):
|
||||
|
||||
class HeavyModelSelect2MultipleChoiceField(QuerysetChoiceMixin, HeavySelect2FieldBaseMixin, ModelMultipleChoiceField):
|
||||
"Heavy Select2 Multiple Choice field, specialized for Models."
|
||||
widget = HeavySelect2MultipleWidget
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
kwargs.pop('choices', None)
|
||||
super(HeavyModelSelect2MultipleChoiceField, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
### Heavy general field that uses central AutoView ###
|
||||
|
||||
class AutoSelect2Field(AutoViewFieldMixin, HeavySelect2ChoiceField):
|
||||
|
|
@ -428,6 +449,8 @@ class AutoSelect2Field(AutoViewFieldMixin, HeavySelect2ChoiceField):
|
|||
|
||||
This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming
|
||||
json query requests for that type (class).
|
||||
|
||||
.. warning:: :py:exc:`NotImplementedError` would be thrown if :py:meth:`get_results` is not implemented.
|
||||
"""
|
||||
|
||||
widget = AutoHeavySelect2Widget
|
||||
|
|
@ -437,12 +460,15 @@ class AutoSelect2Field(AutoViewFieldMixin, HeavySelect2ChoiceField):
|
|||
kwargs['data_view'] = self.data_view
|
||||
super(AutoSelect2Field, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class AutoSelect2MultipleField(AutoViewFieldMixin, HeavySelect2MultipleChoiceField):
|
||||
"""
|
||||
Auto Heavy Select2 field for multiple choices.
|
||||
|
||||
This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming
|
||||
json query requests for that type (class).
|
||||
|
||||
.. warning:: :py:exc:`NotImplementedError` would be thrown if :py:meth:`get_results` is not implemented.
|
||||
"""
|
||||
|
||||
widget = AutoHeavySelect2MultipleWidget
|
||||
|
|
@ -452,6 +478,7 @@ class AutoSelect2MultipleField(AutoViewFieldMixin, HeavySelect2MultipleChoiceFie
|
|||
kwargs['data_view'] = self.data_view
|
||||
super(AutoSelect2MultipleField, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
### Heavy field, specialized for Model, that uses central AutoView ###
|
||||
|
||||
class AutoModelSelect2Field(ModelResultJsonMixin, AutoViewFieldMixin, HeavyModelSelect2ChoiceField):
|
||||
|
|
@ -471,6 +498,7 @@ class AutoModelSelect2Field(ModelResultJsonMixin, AutoViewFieldMixin, HeavyModel
|
|||
kwargs['data_view'] = self.data_view
|
||||
super(AutoModelSelect2Field, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class AutoModelSelect2MultipleField(ModelResultJsonMixin, AutoViewFieldMixin, HeavyModelSelect2MultipleChoiceField):
|
||||
"""
|
||||
Auto Heavy Select2 field for multiple choices, specialized for Models.
|
||||
|
|
|
|||
BIN
docs/_build/doctrees/environment.pickle
vendored
BIN
docs/_build/doctrees/environment.pickle
vendored
Binary file not shown.
BIN
docs/_build/doctrees/index.doctree
vendored
BIN
docs/_build/doctrees/index.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/overview.doctree
vendored
BIN
docs/_build/doctrees/overview.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/ref_fields.doctree
vendored
BIN
docs/_build/doctrees/ref_fields.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/ref_util.doctree
vendored
BIN
docs/_build/doctrees/ref_util.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/ref_views.doctree
vendored
BIN
docs/_build/doctrees/ref_views.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/ref_widgets.doctree
vendored
BIN
docs/_build/doctrees/ref_widgets.doctree
vendored
Binary file not shown.
BIN
docs/_build/doctrees/reference.doctree
vendored
BIN
docs/_build/doctrees/reference.doctree
vendored
Binary file not shown.
582
docs/_build/html/_modules/django_select2/fields.html
vendored
Normal file
582
docs/_build/html/_modules/django_select2/fields.html
vendored
Normal file
|
|
@ -0,0 +1,582 @@
|
|||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>django_select2.fields — Django-Select2 3.0 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '3.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Django-Select2 3.0 documentation" href="../../index.html" />
|
||||
<link rel="up" title="Module code" href="../index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<h1>Source code for django_select2.fields</h1><div class="highlight"><pre>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">Contains all the Django fields for Select2.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">logging</span>
|
||||
|
||||
<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>
|
||||
|
||||
<div class="viewcode-block" id="AutoViewFieldMixin"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoViewFieldMixin">[docs]</a><span class="k">class</span> <span class="nc">AutoViewFieldMixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Registers itself with AutoResponseView.</span>
|
||||
|
||||
<span class="sd"> All Auto fields must sub-class this mixin, so that they are registered.</span>
|
||||
|
||||
<span class="sd"> .. warning:: Do not forget to include ``'django_select2.urls'`` in your url conf, else,</span>
|
||||
<span class="sd"> central view used to serve Auto fields won't be available.</span>
|
||||
<span class="sd"> """</span>
|
||||
<div class="viewcode-block" id="AutoViewFieldMixin.__init__"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoViewFieldMixin.__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">"""</span>
|
||||
<span class="sd"> Class constructor.</span>
|
||||
|
||||
<span class="sd"> :param auto_id: The key to use while registering this field. If it is not provided then</span>
|
||||
<span class="sd"> an auto generated key is used.</span>
|
||||
|
||||
<span class="sd"> .. tip::</span>
|
||||
<span class="sd"> This mixin uses full class name of the field to register itself. This is</span>
|
||||
<span class="sd"> used like key in a :py:obj:`dict` by :py:func:`.util.register_field`.</span>
|
||||
|
||||
<span class="sd"> If that key already exists then the instance is not registered again. So, eventually</span>
|
||||
<span class="sd"> all instances of an Auto field share one instance to respond to the Ajax queries for</span>
|
||||
<span class="sd"> its fields.</span>
|
||||
|
||||
<span class="sd"> If for some reason any instance needs to be isolated then ``auto_id`` can be used to</span>
|
||||
<span class="sd"> provide a unique key which has never occured before.</span>
|
||||
|
||||
<span class="sd"> :type auto_id: :py:obj:`unicode`</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">name</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">'auto_id'</span><span class="p">,</span> <span class="s">u"</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__module__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">))</span>
|
||||
<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">"Registering auto field: </span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">util</span>
|
||||
<span class="n">id_</span> <span class="o">=</span> <span class="n">util</span><span class="o">.</span><span class="n">register_field</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">field_id</span> <span class="o">=</span> <span class="n">id_</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">AutoViewFieldMixin</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="AutoViewFieldMixin.security_check"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.AutoViewFieldMixin.security_check">[docs]</a> <span class="k">def</span> <span class="nf">security_check</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="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">"""</span>
|
||||
<span class="sd"> Returns ``False`` if security check fails.</span>
|
||||
|
||||
<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"> :return: A boolean value, signalling if check passed or failed.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`bool`</span>
|
||||
|
||||
<span class="sd"> .. warning:: Sub-classes should override this. You really do not want random people making</span>
|
||||
<span class="sd"> Http reqeusts to your server, be able to get access to sensitive information.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
</div>
|
||||
<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">"See :py:meth:`.views.Select2View.get_results`."</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.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>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="kn">import</span> <span class="n">smart_unicode</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.validators</span> <span class="kn">import</span> <span class="n">EMPTY_VALUES</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.widgets</span> <span class="kn">import</span> <span class="n">Select2Widget</span><span class="p">,</span> <span class="n">Select2MultipleWidget</span><span class="p">,</span>\
|
||||
<span class="n">HeavySelect2Widget</span><span class="p">,</span> <span class="n">HeavySelect2MultipleWidget</span><span class="p">,</span> <span class="n">AutoHeavySelect2Widget</span><span class="p">,</span> \
|
||||
<span class="n">AutoHeavySelect2MultipleWidget</span>
|
||||
<span class="kn">from</span> <span class="nn">.views</span> <span class="kn">import</span> <span class="n">NO_ERR_RESP</span>
|
||||
<span class="kn">from</span> <span class="nn">.util</span> <span class="kn">import</span> <span class="n">extract_some_key_val</span>
|
||||
|
||||
<span class="c">### Light general fields ###</span>
|
||||
|
||||
<div class="viewcode-block" id="Select2ChoiceField"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.Select2ChoiceField">[docs]</a><span class="k">class</span> <span class="nc">Select2ChoiceField</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">ChoiceField</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Drop-in Select2 replacement for :py:class:`forms.ChoiceField`.</span>
|
||||
<span class="sd"> """</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">"""</span>
|
||||
<span class="sd"> Drop-in Select2 replacement for :py:class:`forms.MultipleChoiceField`.</span>
|
||||
<span class="sd"> """</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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Makes ``heavy_data.js`` parsable JSON response for queries on its model.</span>
|
||||
|
||||
<span class="sd"> On query it uses :py:meth:`.prepare_qs_params` to prepare query attributes</span>
|
||||
<span class="sd"> which it then passes to ``self.queryset.filter()`` to get the results.</span>
|
||||
|
||||
<span class="sd"> It is expected that sub-classes will defined a class field variable</span>
|
||||
<span class="sd"> ``search_fields``, which should be a list of field names to search for.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="ModelResultJsonMixin.__init__"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.__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">"""</span>
|
||||
<span class="sd"> Class constructor.</span>
|
||||
|
||||
<span class="sd"> :param queryset: This can be passed as kwarg here or defined as field variabel,</span>
|
||||
<span class="sd"> like ``search_fields``.</span>
|
||||
<span class="sd"> :type queryset: :py:class:`django.db.models.query.QuerySet` or None</span>
|
||||
|
||||
<span class="sd"> :param max_results: Maximum number to results to return per Ajax query.</span>
|
||||
<span class="sd"> :type max_results: :py:obj:`int`</span>
|
||||
|
||||
<span class="sd"> :param to_field_name: Which field's value should be returned as result tuple's</span>
|
||||
<span class="sd"> value. (Default is ``pk``, i.e. the id field of the model)</span>
|
||||
<span class="sd"> :type to_field_name: :py:obj:`str`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">queryset</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s">'queryset'</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'queryset is required.'</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">search_fields</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'search_fields is required.'</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_results</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">'max_results'</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">to_field_name</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">'to_field_name'</span><span class="p">,</span> <span class="s">'pk'</span><span class="p">)</span>
|
||||
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ModelResultJsonMixin</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="ModelResultJsonMixin.label_from_instance"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.label_from_instance">[docs]</a> <span class="k">def</span> <span class="nf">label_from_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Sub-classes should override this to generate custom label texts for values.</span>
|
||||
|
||||
<span class="sd"> :param obj: The model object.</span>
|
||||
<span class="sd"> :type obj: :py:class:`django.model.Model`</span>
|
||||
|
||||
<span class="sd"> :return: The label string.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">smart_unicode</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="ModelResultJsonMixin.prepare_qs_params"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.prepare_qs_params">[docs]</a> <span class="k">def</span> <span class="nf">prepare_qs_params</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">search_term</span><span class="p">,</span> <span class="n">search_fields</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Prepares queryset parameter to use for searching.</span>
|
||||
|
||||
<span class="sd"> :param search_term: The search term.</span>
|
||||
<span class="sd"> :type search_term: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :param search_fields: The list of search fields. This is same as ``self.search_fields``.</span>
|
||||
<span class="sd"> :type search_term: :py:obj:`list`</span>
|
||||
|
||||
<span class="sd"> :return: A dictionary of parameters to 'or' and 'and' together. The output format should</span>
|
||||
<span class="sd"> be ::</span>
|
||||
|
||||
<span class="sd"> {</span>
|
||||
<span class="sd"> 'or': [</span>
|
||||
<span class="sd"> Q(attr11=term11) | Q(attr12=term12) | ...,</span>
|
||||
<span class="sd"> Q(attrN1=termN1) | Q(attrN2=termN2) | ...,</span>
|
||||
<span class="sd"> ...],</span>
|
||||
|
||||
<span class="sd"> 'and': {</span>
|
||||
<span class="sd"> 'attrX1': termX1,</span>
|
||||
<span class="sd"> 'attrX2': termX2,</span>
|
||||
<span class="sd"> ...</span>
|
||||
<span class="sd"> }</span>
|
||||
<span class="sd"> }</span>
|
||||
|
||||
<span class="sd"> The above would then be coaxed into ``filter()`` as below::</span>
|
||||
|
||||
<span class="sd"> queryset.filter(</span>
|
||||
<span class="sd"> Q(attr11=term11) | Q(attr12=term12) | ...,</span>
|
||||
<span class="sd"> Q(attrN1=termN1) | Q(attrN2=termN2) | ...,</span>
|
||||
<span class="sd"> ...,</span>
|
||||
<span class="sd"> attrX1=termX1,</span>
|
||||
<span class="sd"> attrX2=termX2,</span>
|
||||
<span class="sd"> ...</span>
|
||||
<span class="sd"> )</span>
|
||||
|
||||
<span class="sd"> In this implementation, ``term11, term12, termN1, ...`` etc., all are actually ``search_term``.</span>
|
||||
<span class="sd"> Also then ``and`` part is always empty.</span>
|
||||
|
||||
<span class="sd"> So, let's take an example.</span>
|
||||
|
||||
<span class="sd"> | Assume, ``search_term == 'John'``</span>
|
||||
<span class="sd"> | ``self.search_fields == ['first_name__icontains', 'last_name__icontains']``</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> So, the prepared query would be::</span>
|
||||
|
||||
<span class="sd"> {</span>
|
||||
<span class="sd"> 'or': [</span>
|
||||
<span class="sd"> Q(first_name__icontains=search_term) | Q(last_name__icontains=search_term)</span>
|
||||
<span class="sd"> ],</span>
|
||||
<span class="sd"> 'and': {}</span>
|
||||
<span class="sd"> }</span>
|
||||
<span class="sd"> :rtype: :py:obj:`dict`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">q</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="k">for</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">search_fields</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="n">field</span><span class="p">]</span> <span class="o">=</span> <span class="n">search_term</span>
|
||||
<span class="k">if</span> <span class="n">q</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">q</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">q</span> <span class="o">=</span> <span class="n">q</span> <span class="o">|</span> <span class="n">Q</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">{</span><span class="s">'or'</span><span class="p">:</span> <span class="p">[</span><span class="n">q</span><span class="p">],</span> <span class="s">'and'</span><span class="p">:</span> <span class="p">{},}</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="ModelResultJsonMixin.get_results"><a class="viewcode-back" href="../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.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="sd">"""</span>
|
||||
<span class="sd"> See :py:meth:`.views.Select2View.get_results`.</span>
|
||||
|
||||
<span class="sd"> This implementation takes care of detecting if more results are available.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">qs</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">queryset</span><span class="p">)</span>
|
||||
<span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepare_qs_params</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="bp">self</span><span class="o">.</span><span class="n">search_fields</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_results</span><span class="p">:</span>
|
||||
<span class="n">min_</span> <span class="o">=</span> <span class="p">(</span><span class="n">page</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_results</span>
|
||||
<span class="n">max_</span> <span class="o">=</span> <span class="n">min_</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_results</span> <span class="o">+</span> <span class="mi">1</span> <span class="c"># fetching one extra row to check if it has more rows.</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">qs</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="o">*</span><span class="n">params</span><span class="p">[</span><span class="s">'or'</span><span class="p">],</span> <span class="o">**</span><span class="n">params</span><span class="p">[</span><span class="s">'and'</span><span class="p">])[</span><span class="n">min_</span><span class="p">:</span><span class="n">max_</span><span class="p">])</span>
|
||||
<span class="n">has_more</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="n">max_</span> <span class="o">-</span> <span class="n">min_</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">has_more</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">res</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">qs</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="o">*</span><span class="n">params</span><span class="p">[</span><span class="s">'or'</span><span class="p">],</span> <span class="o">**</span><span class="n">params</span><span class="p">[</span><span class="s">'and'</span><span class="p">]))</span>
|
||||
<span class="n">has_more</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
|
||||
<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">"""</span>
|
||||
<span class="sd"> This does some pretty nasty hacky stuff, to make sure users can</span>
|
||||
<span class="sd"> also define ``queryset`` as class-level field variable, instead of</span>
|
||||
<span class="sd"> passing it to constructor.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c"># TODO check for alternatives. Maybe this hack is not necessary.</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">dct</span><span class="p">):</span>
|
||||
<span class="n">_q</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'queryset'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">_q</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">_q</span><span class="p">,</span> <span class="nb">property</span><span class="p">):</span>
|
||||
<span class="c"># This hack is needed since users are allowed to</span>
|
||||
<span class="c"># provide queryset in sub-classes by declaring</span>
|
||||
<span class="c"># class variable named - queryset, which will</span>
|
||||
<span class="c"># effectively hide the queryset declared in this</span>
|
||||
<span class="c"># mixin.</span>
|
||||
<span class="n">dct</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'queryset'</span><span class="p">)</span> <span class="c"># Throwing away the sub-class queryset</span>
|
||||
<span class="n">dct</span><span class="p">[</span><span class="s">'_subclass_queryset'</span><span class="p">]</span> <span class="o">=</span> <span class="n">_q</span>
|
||||
|
||||
<span class="k">return</span> <span class="nb">type</span><span class="o">.</span><span class="n">__new__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">dct</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__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>
|
||||
<span class="n">queryset</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'queryset'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<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">'_subclass_queryset'</span><span class="p">):</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s">'queryset'</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">'_subclass_queryset'</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">"""</span>
|
||||
<span class="sd"> Simple mixin which provides a property -- ``choices``. When ``choices`` is set,</span>
|
||||
<span class="sd"> then it sets that value to ``self.widget.choices`` too.</span>
|
||||
<span class="sd"> """</span>
|
||||
<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">'_choices'</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">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>
|
||||
<span class="c"># choices can be any iterable, but we call list() on it because</span>
|
||||
<span class="c"># it will be consumed more than once.</span>
|
||||
<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>
|
||||
</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">"""</span>
|
||||
<span class="sd"> Overrides ``choices``' getter to return instance of :py:class:`.ModelChoiceIterator`</span>
|
||||
<span class="sd"> instead.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<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="c"># If self._choices is set, then somebody must have manually set</span>
|
||||
<span class="c"># the property self.choices. In this case, just return self._choices.</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">'_choices'</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="c"># Otherwise, execute the QuerySet in self.queryset to determine the</span>
|
||||
<span class="c"># choices dynamically. Return a fresh ModelChoiceIterator that has not been</span>
|
||||
<span class="c"># consumed. Note that we're instantiating a new ModelChoiceIterator *each*</span>
|
||||
<span class="c"># time _get_choices() is called (and, thus, each time self.choices is</span>
|
||||
<span class="c"># accessed) so that we can ensure the QuerySet has not been consumed. This</span>
|
||||
<span class="c"># construct might look complicated but it allows for lazy evaluation of</span>
|
||||
<span class="c"># the queryset.</span>
|
||||
<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>
|
||||
|
||||
<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">queryset</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">'queryset'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">kargs</span> <span class="o">=</span> <span class="n">extract_some_key_val</span><span class="p">(</span><span class="n">kwargs</span><span class="p">,</span> <span class="p">[</span>
|
||||
<span class="s">'empty_label'</span><span class="p">,</span> <span class="s">'cache_choices'</span><span class="p">,</span> <span class="s">'required'</span><span class="p">,</span> <span class="s">'label'</span><span class="p">,</span> <span class="s">'initial'</span><span class="p">,</span> <span class="s">'help_text'</span><span class="p">,</span>
|
||||
<span class="p">])</span>
|
||||
<span class="n">kargs</span><span class="p">[</span><span class="s">'widget'</span><span class="p">]</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">'widget'</span><span class="p">,</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">'widget'</span><span class="p">,</span> <span class="bp">None</span><span class="p">))</span>
|
||||
<span class="n">kargs</span><span class="p">[</span><span class="s">'to_field_name'</span><span class="p">]</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">'to_field_name'</span><span class="p">,</span> <span class="s">'pk'</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">'_choices'</span><span class="p">):</span> <span class="c"># If it exists then probably it is set by HeavySelect2FieldBase.</span>
|
||||
<span class="c"># We are not gonna use that anyway.</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_choices</span>
|
||||
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ModelChoiceFieldMixin</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="n">queryset</span><span class="p">,</span> <span class="o">**</span><span class="n">kargs</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">'set_placeholder'</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">set_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">empty_label</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_queryset</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">'_queryset'</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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Light Select2 field, specialized for Models.</span>
|
||||
|
||||
<span class="sd"> Select2 replacement for :py:class:`forms.ModelChoiceField`.</span>
|
||||
<span class="sd"> """</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">"""</span>
|
||||
<span class="sd"> Light multiple-value Select2 field, specialized for Models.</span>
|
||||
|
||||
<span class="sd"> Select2 replacement for :py:class:`forms.ModelMultipleChoiceField`.</span>
|
||||
<span class="sd"> """</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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Base field for all Heavy fields.</span>
|
||||
<span class="sd"> """</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>
|
||||
<span class="sd">"""</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's Ajax queries.</span>
|
||||
<span class="sd"> :type data_view: :py:class:`django.views.generic.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>
|
||||
|
||||
<span class="sd"> .. warning:: Either of ``data_view`` or ``widget`` must be specified, else :py:exc:`ValueError` would</span>
|
||||
<span class="sd"> be raised.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">data_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">'data_view'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">choices</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">'choices'</span><span class="p">,</span> <span class="p">[])</span>
|
||||
|
||||
<span class="n">kargs</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">if</span> <span class="n">data_view</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">kargs</span><span class="p">[</span><span class="s">'widget'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="p">(</span><span class="n">data_view</span><span class="o">=</span><span class="n">data_view</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'widget'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'data_view is required else you need to provide your own widget instance.'</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="c"># By this time self.widget would have been instantiated.</span>
|
||||
|
||||
<span class="c"># This piece of code is needed here since (God knows why) Django's Field class does not call</span>
|
||||
<span class="c"># super(); because of that __init__() of classes would get called after Field.__init__().</span>
|
||||
<span class="c"># If did had super() call there then we could have simply moved AutoViewFieldMixin at the</span>
|
||||
<span class="c"># end of the MRO list. This way it would have got widget instance instead of class and it</span>
|
||||
<span class="c"># could have directly set field_id on it.</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">'field_id'</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">widget</span><span class="o">.</span><span class="n">field_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">field_id</span>
|
||||
|
||||
<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">'choices'</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>
|
||||
<span class="s">"Heavy Select2 Choice field."</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>
|
||||
<span class="s">"Heavy Select2 Multiple Choice field."</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>
|
||||
<span class="s">"Heavy Select2 Choice field, specialized for Models."</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">'choices'</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>
|
||||
<span class="s">"Heavy Select2 Multiple Choice field, specialized for Models."</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">'choices'</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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Auto Heavy Select2 field.</span>
|
||||
|
||||
<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"> """</span>
|
||||
|
||||
<span class="n">widget</span> <span class="o">=</span> <span class="n">AutoHeavySelect2Widget</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="bp">self</span><span class="o">.</span><span class="n">data_view</span> <span class="o">=</span> <span class="s">"django_select2_central_json"</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s">'data_view'</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">"""</span>
|
||||
<span class="sd"> Auto Heavy Select2 field for multiple choices.</span>
|
||||
|
||||
<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"> """</span>
|
||||
|
||||
<span class="n">widget</span> <span class="o">=</span> <span class="n">AutoHeavySelect2MultipleWidget</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="bp">self</span><span class="o">.</span><span class="n">data_view</span> <span class="o">=</span> <span class="s">"django_select2_central_json"</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s">'data_view'</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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Auto Heavy Select2 field, specialized for Models.</span>
|
||||
|
||||
<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"> """</span>
|
||||
<span class="n">__metaclass__</span> <span class="o">=</span> <span class="n">UnhideableQuerysetType</span> <span class="c"># Makes sure that user defined queryset class variable is replaced by</span>
|
||||
<span class="c"># queryset property (as it is needed by super classes).</span>
|
||||
|
||||
<span class="n">widget</span> <span class="o">=</span> <span class="n">AutoHeavySelect2Widget</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="bp">self</span><span class="o">.</span><span class="n">data_view</span> <span class="o">=</span> <span class="s">"django_select2_central_json"</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s">'data_view'</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">"""</span>
|
||||
<span class="sd"> Auto Heavy Select2 field for multiple choices, specialized for Models.</span>
|
||||
|
||||
<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"> """</span>
|
||||
<span class="n">__metaclass__</span> <span class="o">=</span> <span class="n">UnhideableQuerysetType</span> <span class="c"># Makes sure that user defined queryset class variable is replaced by</span>
|
||||
<span class="c"># queryset property (as it is needed by super classes).</span>
|
||||
|
||||
<span class="n">widget</span> <span class="o">=</span> <span class="n">AutoHeavySelect2MultipleWidget</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="bp">self</span><span class="o">.</span><span class="n">data_view</span> <span class="o">=</span> <span class="s">"django_select2_central_json"</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s">'data_view'</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">AutoModelSelect2MultipleField</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>
|
||||
</pre></div></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Nirupam Biswas.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
352
docs/_build/html/_modules/django_select2/util.html
vendored
Normal file
352
docs/_build/html/_modules/django_select2/util.html
vendored
Normal file
|
|
@ -0,0 +1,352 @@
|
|||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>django_select2.util — Django-Select2 3.0 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '3.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Django-Select2 3.0 documentation" href="../../index.html" />
|
||||
<link rel="up" title="Module code" href="../index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<h1>Source code for django_select2.util</h1><div class="highlight"><pre>
|
||||
<span class="kn">import</span> <span class="nn">types</span>
|
||||
<span class="kn">import</span> <span class="nn">logging</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.utils.html</span> <span class="kn">import</span> <span class="n">escape</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="kn">import</span> <span class="n">force_unicode</span>
|
||||
|
||||
<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>
|
||||
|
||||
<div class="viewcode-block" id="JSVar"><a class="viewcode-back" href="../../ref_util.html#django_select2.util.JSVar">[docs]</a><span class="k">class</span> <span class="nc">JSVar</span><span class="p">(</span><span class="nb">unicode</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A JS variable.</span>
|
||||
|
||||
<span class="sd"> This is a simple unicode string. This class type acts as a marker that this string is a JS variable name,</span>
|
||||
<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"> """</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">"""</span>
|
||||
<span class="sd"> A JS function name.</span>
|
||||
|
||||
<span class="sd"> From rendering point of view, rendering this is no different from :py:class:`JSVar`. After all, a JS varible</span>
|
||||
<span class="sd"> can refer a function instance, primitive constant or any other object. They are still all varibles.</span>
|
||||
|
||||
<span class="sd"> .. tip:: Do use this marker for JS functions. This will make the code clearer, and the purpose more easier to</span>
|
||||
<span class="sd"> understand.</span>
|
||||
<span class="sd"> """</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">"""</span>
|
||||
<span class="sd"> A JS function name to run in context of some other Html DOM element.</span>
|
||||
|
||||
<span class="sd"> Like :py:class:JSFunction`, this too flags the string as JS function, but with a special requirement. The JS function</span>
|
||||
<span class="sd"> needs to be invoked in the context of a Html DOM, such that, ``this`` inside the function refers to that DOM instead of</span>
|
||||
<span class="sd"> ``window``.</span>
|
||||
|
||||
<span class="sd"> .. tip:: JS functions of this type are warapped inside special another JS function -- ``django_select2.runInContextHelper``.</span>
|
||||
<span class="sd"> """</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">"""</span>
|
||||
<span class="sd"> This wraps ``inner_code`` string inside the following code block::</span>
|
||||
|
||||
<span class="sd"> <script></span>
|
||||
<span class="sd"> $(function () {</span>
|
||||
<span class="sd"> // inner_code here</span>
|
||||
<span class="sd"> });</span>
|
||||
<span class="sd"> </script></span>
|
||||
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="s">u"""</span>
|
||||
<span class="s"> <script></span>
|
||||
<span class="s"> $(function () {</span>
|
||||
<span class="s"> </span><span class="si">%s</span><span class="s"></span>
|
||||
<span class="s"> });</span>
|
||||
<span class="s"> </script>"""</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">"""</span>
|
||||
<span class="sd"> Gets a sub-set of a :py:obj:`dict`.</span>
|
||||
|
||||
<span class="sd"> :param dct: Source dictionary.</span>
|
||||
<span class="sd"> :type dct: :py:obj:`dict`</span>
|
||||
|
||||
<span class="sd"> :param keys: List of subset keys, which to extract from ``dct``.</span>
|
||||
<span class="sd"> :type keys: :py:obj:`list` or any iterable.</span>
|
||||
|
||||
<span class="sd"> :rtype: :py:obj:`dict`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">edct</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">:</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<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">"""</span>
|
||||
<span class="sd"> Converts Python data type to JS data type.</span>
|
||||
|
||||
<span class="sd"> Practically what this means is, convert ``False`` to ``false``, ``True`` to ``true`` and so on.</span>
|
||||
<span class="sd"> It also takes care of the conversion of :py:class:`.JSVar`, :py:class:`.JSFunction`</span>
|
||||
<span class="sd"> and :py:class:`.JSFunctionInContext`. It takes care of recursively converting lists and dictionaries</span>
|
||||
<span class="sd"> too.</span>
|
||||
|
||||
<span class="sd"> :param val: The Python data to convert.</span>
|
||||
<span class="sd"> :type val: Any</span>
|
||||
|
||||
<span class="sd"> :param id_: The DOM id of the element in which context :py:class:`.JSFunctionInContext` functions</span>
|
||||
<span class="sd"> should run. (This is not needed if ``val`` contains no :py:class:`.JSFunctionInContext`)</span>
|
||||
<span class="sd"> :type id_: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="o">==</span> <span class="n">types</span><span class="o">.</span><span class="n">BooleanType</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s">u'true'</span> <span class="k">if</span> <span class="n">val</span> <span class="k">else</span> <span class="s">u'false'</span>
|
||||
<span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="n">types</span><span class="o">.</span><span class="n">IntType</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">LongType</span><span class="p">,</span> <span class="n">types</span><span class="o">.</span><span class="n">FloatType</span><span class="p">]:</span>
|
||||
<span class="k">return</span> <span class="n">force_unicode</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">JSFunctionInContext</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s">u"django_select2.runInContextHelper(</span><span class="si">%s</span><span class="s">, '</span><span class="si">%s</span><span class="s">')"</span> <span class="o">%</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">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">JSVar</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">val</span> <span class="c"># No quotes here</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">convert_dict_to_js_map</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">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
<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"'</span><span class="si">%s</span><span class="s">'"</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">"""</span>
|
||||
<span class="sd"> Converts a Python dictionary to JS map.</span>
|
||||
|
||||
<span class="sd"> :param dct: The Python dictionary to convert.</span>
|
||||
<span class="sd"> :type dct: :py:obj:`dict`</span>
|
||||
|
||||
<span class="sd"> :param id_: The DOM id of the element in which context :py:class:`.JSFunctionInContext` functions</span>
|
||||
<span class="sd"> should run. (This is not needed if ``dct`` contains no :py:class:`.JSFunctionInContext`)</span>
|
||||
<span class="sd"> :type id_: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="s">u'{'</span>
|
||||
<span class="n">is_first</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">dct</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_first</span><span class="p">:</span>
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="s">u", "</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">is_first</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="s">u"'</span><span class="si">%s</span><span class="s">': "</span> <span class="o">%</span> <span class="n">name</span>
|
||||
<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'}'</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">"""</span>
|
||||
<span class="sd"> Converts a Python list (or any iterable) to JS array.</span>
|
||||
|
||||
<span class="sd"> :param lst: The Python iterable to convert.</span>
|
||||
<span class="sd"> :type lst: :py:obj:`list` or Any iterable</span>
|
||||
|
||||
<span class="sd"> :param id_: The DOM id of the element in which context :py:class:`.JSFunctionInContext` functions</span>
|
||||
<span class="sd"> should run. (This is not needed if ``lst`` contains no :py:class:`.JSFunctionInContext`)</span>
|
||||
<span class="sd"> :type id_: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="s">u'['</span>
|
||||
<span class="n">is_first</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">lst</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_first</span><span class="p">:</span>
|
||||
<span class="n">out</span> <span class="o">+=</span> <span class="s">u", "</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">is_first</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
|
||||
<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']'</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">"""</span>
|
||||
<span class="sd"> Converts a Python list (or any iterable) of strings to JS array.</span>
|
||||
|
||||
<span class="sd"> :py:func:`convert_to_js_arr` can always be used instead of this. However, since it</span>
|
||||
<span class="sd"> knows that it only contains strings, it cuts down on unnecessary computations.</span>
|
||||
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">lst</span> <span class="o">=</span> <span class="p">[</span><span class="s">u'"</span><span class="si">%s</span><span class="s">"'</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"[</span><span class="si">%s</span><span class="s">]"</span> <span class="o">%</span> <span class="p">(</span><span class="s">","</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">"Decorator to synchronize multiple calls to a functions."</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>
|
||||
|
||||
<span class="k">def</span> <span class="nf">synced_f</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="k">with</span> <span class="n">f</span><span class="o">.</span><span class="n">__lock__</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">f</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">synced_f</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">__doc__</span>
|
||||
<span class="k">return</span> <span class="n">synced_f</span>
|
||||
|
||||
</div>
|
||||
<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's key to generated Id mapping.</span>
|
||||
|
||||
<span class="n">ID_PATTERN</span> <span class="o">=</span> <span class="s">r"[0-9_a-zA-Z.:+\- ]+"</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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Checks if ``val`` is a valid generated Id.</span>
|
||||
|
||||
<span class="sd"> :param val: The value to check.</span>
|
||||
<span class="sd"> :type val: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :rtype: :py:obj:`bool`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">regex</span> <span class="o">=</span> <span class="s">"^</span><span class="si">%s</span><span class="s">$"</span> <span class="o">%</span> <span class="n">ID_PATTERN</span>
|
||||
<span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">regex</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Registers an Auto field for use with :py:class:`.views.AutoResponseView`.</span>
|
||||
|
||||
<span class="sd"> :param key: The key to use while registering this field.</span>
|
||||
<span class="sd"> :type key: :py:obj:`unicode`</span>
|
||||
|
||||
<span class="sd"> :param field: The field to register.</span>
|
||||
<span class="sd"> :type field: :py:class:`AutoViewFieldMixin`</span>
|
||||
|
||||
<span class="sd"> :return: The generated Id for this field. If given ``key`` was already registered then the</span>
|
||||
<span class="sd"> Id generated that time, would be returned.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">__id_store</span><span class="p">,</span> <span class="n">__field_store</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">fields</span> <span class="kn">import</span> <span class="n">AutoViewFieldMixin</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">AutoViewFieldMixin</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'Field must extend AutoViewFieldMixin'</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">__field_store</span><span class="p">:</span>
|
||||
<span class="c"># Generating id</span>
|
||||
<span class="n">id_</span> <span class="o">=</span> <span class="s">u"</span><span class="si">%d</span><span class="s">:</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">__id_store</span><span class="p">),</span> <span class="nb">unicode</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()))</span>
|
||||
|
||||
<span class="n">__field_store</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">id_</span>
|
||||
<span class="n">__id_store</span><span class="p">[</span><span class="n">id_</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span>
|
||||
|
||||
<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">"Registering new field: </span><span class="si">%s</span><span class="s">; With actual id: </span><span class="si">%s</span><span class="s">"</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">else</span><span class="p">:</span>
|
||||
<span class="n">id_</span> <span class="o">=</span> <span class="n">__field_store</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
<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">"Field already registered: </span><span class="si">%s</span><span class="s">; With actual id: </span><span class="si">%s</span><span class="s">"</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">"""</span>
|
||||
<span class="sd"> Returns an Auto field instance registered with the given Id.</span>
|
||||
|
||||
<span class="sd"> :param id_: The generated Id the field is registered with.</span>
|
||||
<span class="sd"> :type id_: :py:obj:`unicode`</span>
|
||||
|
||||
<span class="sd"> :rtype: :py:class:`AutoViewFieldMixin` or None</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">__id_store</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
</pre></div></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Nirupam Biswas.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
282
docs/_build/html/_modules/django_select2/views.html
vendored
Normal file
282
docs/_build/html/_modules/django_select2/views.html
vendored
Normal file
|
|
@ -0,0 +1,282 @@
|
|||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>django_select2.views — Django-Select2 3.0 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '3.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Django-Select2 3.0 documentation" href="../../index.html" />
|
||||
<link rel="up" title="Module code" href="../index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<h1>Source code for django_select2.views</h1><div class="highlight"><pre>
|
||||
<span class="kn">import</span> <span class="nn">json</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">HttpResponse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.views.generic</span> <span class="kn">import</span> <span class="n">View</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">PermissionDenied</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">Http404</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.util</span> <span class="kn">import</span> <span class="n">get_field</span><span class="p">,</span> <span class="n">is_valid_id</span>
|
||||
|
||||
<span class="n">NO_ERR_RESP</span> <span class="o">=</span> <span class="s">'nil'</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">Equals to 'nil' constant.</span>
|
||||
|
||||
<span class="sd">Use this in :py:meth:`.Select2View.get_results` to mean no error, instead of hardcoding 'nil' value.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<div class="viewcode-block" id="JSONResponseMixin"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.JSONResponseMixin">[docs]</a><span class="k">class</span> <span class="nc">JSONResponseMixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A mixin that can be used to render a JSON response.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">response_class</span> <span class="o">=</span> <span class="n">HttpResponse</span>
|
||||
|
||||
<div class="viewcode-block" id="JSONResponseMixin.render_to_response"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.JSONResponseMixin.render_to_response">[docs]</a> <span class="k">def</span> <span class="nf">render_to_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="o">**</span><span class="n">response_kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Returns a JSON response, transforming 'context' to make the payload.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">response_kwargs</span><span class="p">[</span><span class="s">'content_type'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'application/json'</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">response_class</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">convert_context_to_json</span><span class="p">(</span><span class="n">context</span><span class="p">),</span>
|
||||
<span class="o">**</span><span class="n">response_kwargs</span>
|
||||
<span class="p">)</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="JSONResponseMixin.convert_context_to_json"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.JSONResponseMixin.convert_context_to_json">[docs]</a> <span class="k">def</span> <span class="nf">convert_context_to_json</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
|
||||
<span class="s">"Convert the context dictionary into a JSON object"</span>
|
||||
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">context</span><span class="p">)</span>
|
||||
</div></div>
|
||||
<div class="viewcode-block" id="Select2View"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.Select2View">[docs]</a><span class="k">class</span> <span class="nc">Select2View</span><span class="p">(</span><span class="n">JSONResponseMixin</span><span class="p">,</span> <span class="n">View</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Base view which is designed to respond with JSON to Ajax queries from heavy widgets/fields.</span>
|
||||
|
||||
<span class="sd"> Although the widgets won't enforce the type of data_view it gets, but it is recommended to</span>
|
||||
<span class="sd"> sub-class this view instead of creating a Django view from scratch.</span>
|
||||
|
||||
<span class="sd"> .. note:: Only `GET <http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3>`_ Http requests are supported.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">dispatch</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="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="k">try</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_all_permissions</span><span class="p">(</span><span class="n">request</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="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">respond_with_exception</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Select2View</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">dispatch</span><span class="p">(</span><span class="n">request</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="k">def</span> <span class="nf">get</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="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="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s">'GET'</span><span class="p">:</span>
|
||||
<span class="n">term</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'term'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">term</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_to_response</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_results_to_context</span><span class="p">((</span><span class="s">'missing term'</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="p">[],</span> <span class="p">)))</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">term</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_to_response</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_results_to_context</span><span class="p">((</span><span class="n">NO_ERR_RESP</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="p">[],</span> <span class="p">)))</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">page</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'page'</span><span class="p">,</span> <span class="bp">None</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">page</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">page</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="n">page</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="n">page</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_to_response</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_results_to_context</span><span class="p">((</span><span class="s">'bad page no.'</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="p">[],</span> <span class="p">)))</span>
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'context'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_to_response</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_results_to_context</span><span class="p">((</span><span class="s">'not a get request'</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="p">[],</span> <span class="p">)))</span>
|
||||
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_to_response</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_results_to_context</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_results</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="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="Select2View.respond_with_exception"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.Select2View.respond_with_exception">[docs]</a> <span class="k">def</span> <span class="nf">respond_with_exception</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :param e: Exception object.</span>
|
||||
<span class="sd"> :type e: Exception</span>
|
||||
<span class="sd"> :return: Response with status code of 404 if e is ``Http404`` object,</span>
|
||||
<span class="sd"> else 400.</span>
|
||||
<span class="sd"> :rtype: HttpResponse</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">Http404</span><span class="p">):</span>
|
||||
<span class="n">status</span> <span class="o">=</span> <span class="mi">404</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">status</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s">'status_code'</span><span class="p">,</span> <span class="mi">400</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_to_response</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_results_to_context</span><span class="p">((</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="bp">False</span><span class="p">,</span> <span class="p">[],)),</span>
|
||||
<span class="n">status</span><span class="o">=</span><span class="n">status</span>
|
||||
<span class="p">)</span>
|
||||
</div>
|
||||
<span class="k">def</span> <span class="nf">_results_to_context</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">output</span><span class="p">):</span>
|
||||
<span class="n">err</span><span class="p">,</span> <span class="n">has_more</span><span class="p">,</span> <span class="n">results</span> <span class="o">=</span> <span class="n">output</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="n">err</span> <span class="o">==</span> <span class="n">NO_ERR_RESP</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">id_</span><span class="p">,</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s">'id'</span><span class="p">:</span> <span class="n">id_</span><span class="p">,</span> <span class="s">'text'</span><span class="p">:</span> <span class="n">text</span><span class="p">})</span>
|
||||
<span class="k">return</span> <span class="p">{</span>
|
||||
<span class="s">'err'</span><span class="p">:</span> <span class="n">err</span><span class="p">,</span>
|
||||
<span class="s">'more'</span><span class="p">:</span> <span class="n">has_more</span><span class="p">,</span>
|
||||
<span class="s">'results'</span><span class="p">:</span> <span class="n">res</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<div class="viewcode-block" id="Select2View.check_all_permissions"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.Select2View.check_all_permissions">[docs]</a> <span class="k">def</span> <span class="nf">check_all_permissions</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="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">"""</span>
|
||||
<span class="sd"> Sub-classes can use this to raise exception on permission check failures,</span>
|
||||
<span class="sd"> or these checks can be placed in ``urls.py``, e.g. ``login_required(SelectClass.as_view())``.</span>
|
||||
|
||||
<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"> .. warning:: Sub-classes should override this. You really do not want random people making</span>
|
||||
<span class="sd"> Http reqeusts to your server, be able to get access to sensitive information.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2View.get_results"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.Select2View.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="sd">"""</span>
|
||||
<span class="sd"> Returns the result for the given search ``term``.</span>
|
||||
|
||||
<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 term: The search term.</span>
|
||||
<span class="sd"> :type term: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :param page: The page number. If in your last response you had signalled that there are more results,</span>
|
||||
<span class="sd"> then when user scrolls more a new Ajax request would be sent for the same term but with next page</span>
|
||||
<span class="sd"> number. (Page number starts at 1)</span>
|
||||
<span class="sd"> :type page: :py:obj:`int`</span>
|
||||
|
||||
<span class="sd"> :param context: Can be anything which persists across the lifecycle of queries for the same search term.</span>
|
||||
<span class="sd"> It is reset to ``None`` when the term changes.</span>
|
||||
|
||||
<span class="sd"> .. note:: Currently this is not used by ``heavy_data.js``.</span>
|
||||
<span class="sd"> :type context: :py:obj:`str` or None</span>
|
||||
|
||||
<span class="sd"> Expected output is of the form::</span>
|
||||
|
||||
<span class="sd"> (err, has_more, [results])</span>
|
||||
|
||||
<span class="sd"> Where ``results = [(id1, text1), (id2, text2), ...]``</span>
|
||||
|
||||
<span class="sd"> For example::</span>
|
||||
|
||||
<span class="sd"> ('nil', False,</span>
|
||||
<span class="sd"> [</span>
|
||||
<span class="sd"> (1, 'Value label1'),</span>
|
||||
<span class="sd"> (20, 'Value label2'),</span>
|
||||
<span class="sd"> ])</span>
|
||||
|
||||
<span class="sd"> When everything is fine then the `err` must be 'nil'.</span>
|
||||
<span class="sd"> `has_more` should be true if there are more rows.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span>
|
||||
|
||||
</div></div>
|
||||
<div class="viewcode-block" id="AutoResponseView"><a class="viewcode-back" href="../../ref_views.html#django_select2.views.AutoResponseView">[docs]</a><span class="k">class</span> <span class="nc">AutoResponseView</span><span class="p">(</span><span class="n">Select2View</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A central view meant to respond to Ajax queries for all Heavy widgets/fields.</span>
|
||||
<span class="sd"> Although it is not mandatory to use, but is immensely helpful.</span>
|
||||
|
||||
<span class="sd"> .. tip:: Fields which want to use this view must sub-class :py:class:`~.widgets.AutoViewFieldMixin`.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">check_all_permissions</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="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">id_</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'field_id'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">id_</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">is_valid_id</span><span class="p">(</span><span class="n">id_</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">Http404</span><span class="p">(</span><span class="s">'field_id not found or is invalid'</span><span class="p">)</span>
|
||||
<span class="n">field</span> <span class="o">=</span> <span class="n">get_field</span><span class="p">(</span><span class="n">id_</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">field</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">Http404</span><span class="p">(</span><span class="s">'field_id not found'</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="o">.</span><span class="n">security_check</span><span class="p">(</span><span class="n">request</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="k">raise</span> <span class="n">PermissionDenied</span><span class="p">(</span><span class="s">'permission denied'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">request</span><span class="o">.</span><span class="n">__django_select2_local</span> <span class="o">=</span> <span class="n">field</span>
|
||||
|
||||
<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="n">field</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">__django_select2_local</span>
|
||||
<span class="k">del</span> <span class="n">request</span><span class="o">.</span><span class="n">__django_select2_local</span>
|
||||
<span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">get_results</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>
|
||||
</pre></div></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Nirupam Biswas.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
589
docs/_build/html/_modules/django_select2/widgets.html
vendored
Normal file
589
docs/_build/html/_modules/django_select2/widgets.html
vendored
Normal file
|
|
@ -0,0 +1,589 @@
|
|||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>django_select2.widgets — Django-Select2 3.0 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../../',
|
||||
VERSION: '3.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
||||
<link rel="top" title="Django-Select2 3.0 documentation" href="../../index.html" />
|
||||
<link rel="up" title="Module code" href="../index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<h1>Source code for django_select2.widgets</h1><div class="highlight"><pre>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">Contains all the Django widgets for Select2.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">logging</span>
|
||||
<span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">chain</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.utils.encoding</span> <span class="kn">import</span> <span class="n">force_unicode</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.safestring</span> <span class="kn">import</span> <span class="n">mark_safe</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="kn">import</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.datastructures</span> <span class="kn">import</span> <span class="n">MultiValueDict</span><span class="p">,</span> <span class="n">MergeDict</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.util</span> <span class="kn">import</span> <span class="n">render_js_script</span><span class="p">,</span> <span class="n">convert_to_js_string_arr</span><span class="p">,</span> <span class="n">JSVar</span><span class="p">,</span> <span class="n">JSFunction</span><span class="p">,</span> <span class="n">JSFunctionInContext</span><span class="p">,</span> \
|
||||
<span class="n">convert_dict_to_js_map</span><span class="p">,</span> <span class="n">convert_to_js_arr</span>
|
||||
|
||||
<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="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>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The base mixin of all Select2 widgets.</span>
|
||||
|
||||
<span class="sd"> This mixin is responsible for rendering the necessary Javascript and CSS codes which turns normal ``<select>``</span>
|
||||
<span class="sd"> markups into Select2 choice list.</span>
|
||||
|
||||
<span class="sd"> The following Select2 otions are added by this mixin:-</span>
|
||||
|
||||
<span class="sd"> * minimumResultsForSearch: ``6``</span>
|
||||
<span class="sd"> * placeholder: ``''``</span>
|
||||
<span class="sd"> * allowClear: ``True``</span>
|
||||
<span class="sd"> * multiple: ``False``</span>
|
||||
<span class="sd"> * closeOnSelect: ``False``</span>
|
||||
|
||||
<span class="sd"> .. note:: Many of them would be removed by sub-classes depending on requirements.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c"># For details on these options refer: http://ivaynberg.github.com/select2/#documentation</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s">'minimumResultsForSearch'</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span> <span class="c"># Only applicable for single value select.</span>
|
||||
<span class="s">'placeholder'</span><span class="p">:</span> <span class="s">''</span><span class="p">,</span> <span class="c"># Empty text label</span>
|
||||
<span class="s">'allowClear'</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span> <span class="c"># Not allowed when field is multiple since there each value has a clear button.</span>
|
||||
<span class="s">'multiple'</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span> <span class="c"># Not allowed when attached to <select></span>
|
||||
<span class="s">'closeOnSelect'</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The options listed in this are rendered as JS map and passed to Select2 JS code.</span>
|
||||
<span class="sd"> The complete description of theses options are available in Select2_ JS' site.</span>
|
||||
|
||||
<span class="sd"> .. _Select2: http://ivaynberg.github.com/select2/#documentation.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Select2Mixin.__init__"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.__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">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Constructor of the class.</span>
|
||||
|
||||
<span class="sd"> The following additional kwarg is allowed:-</span>
|
||||
|
||||
<span class="sd"> :param select2_options: This is similar to standard Django way to pass extra attributes to widgets.</span>
|
||||
<span class="sd"> This is meant to override values of existing :py:attr:`.options`.</span>
|
||||
|
||||
<span class="sd"> Example::</span>
|
||||
|
||||
<span class="sd"> class MyForm(ModelForm):</span>
|
||||
<span class="sd"> class Meta:</span>
|
||||
<span class="sd"> model = MyModel</span>
|
||||
<span class="sd"> widgets = {</span>
|
||||
<span class="sd"> 'name': Select2WidgetName(select2_options={</span>
|
||||
<span class="sd"> 'minimumResultsForSearch': 10,</span>
|
||||
<span class="sd"> 'closeOnSelect': True,</span>
|
||||
<span class="sd"> })</span>
|
||||
<span class="sd"> }</span>
|
||||
|
||||
<span class="sd"> .. tip:: You cannot introduce new options using this. For that you should sub-class and overried</span>
|
||||
<span class="sd"> :py:meth:`.init_options`. The reason for this is, few options are not compatible with each other</span>
|
||||
<span class="sd"> or are not applicable in some scenarios. For example, when Select2 is attached to ``<select>`` tag,</span>
|
||||
<span class="sd"> it can get if it is multiple or single valued from that tag itself. In this case if you specify</span>
|
||||
<span class="sd"> ``multiple`` option then not only it is useless but an error in Select2 JS' point of view.</span>
|
||||
|
||||
<span class="sd"> There are other such intricacies, based on which some options are removed. By enforcing this</span>
|
||||
<span class="sd"> restriction we make sure to not break the code by passing some wrong concotion of options.</span>
|
||||
|
||||
<span class="sd"> :type select2_options: :py:obj:`dict` or None</span>
|
||||
|
||||
<span class="sd"> """</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">init_options</span><span class="p">()</span>
|
||||
<span class="n">select2_options</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">'select2_options'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">select2_options</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">:</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="n">name</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="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">select2_options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span>
|
||||
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Select2Mixin</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">kwargs</span><span class="p">)</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Mixin.init_options"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.init_options">[docs]</a> <span class="k">def</span> <span class="nf">init_options</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Sub-classes can use this to pass additional options to Select2 JS library.</span>
|
||||
|
||||
<span class="sd"> Example::</span>
|
||||
|
||||
<span class="sd"> def init_options(self):</span>
|
||||
<span class="sd"> self.options['createSearchChoice'] = JSFunction('Your_js_function')</span>
|
||||
|
||||
<span class="sd"> In the above example we are setting ``Your_js_function`` as Select2's ``createSearchChoice``</span>
|
||||
<span class="sd"> function.</span>
|
||||
|
||||
<span class="sd"> .. tip:: If you want to run ``Your_js_function`` in the context of the Select2 DOM element,</span>
|
||||
<span class="sd"> i.e. ``this`` inside your JS function should point to the component instead of ``window``, then</span>
|
||||
<span class="sd"> use :py:class:`~.util.JSFunctionInContext` instead of :py:class:`~.util.JSFunction`.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Mixin.set_placeholder"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.set_placeholder">[docs]</a> <span class="k">def</span> <span class="nf">set_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Placeholder is a value which Select2 JS library shows when nothing is selected. This should be string.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :return: None</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'placeholder'</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Mixin.get_options"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.get_options">[docs]</a> <span class="k">def</span> <span class="nf">get_options</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :return: Dictionary of options to be passed to Select2 JS.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :rtype: :py:obj:`dict`</span>
|
||||
<span class="sd"> """</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="k">if</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'allowClear'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">options</span><span class="p">[</span><span class="s">'allowClear'</span><span class="p">]</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_required</span>
|
||||
<span class="k">return</span> <span class="n">options</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Mixin.render_select2_options_code"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.render_select2_options_code">[docs]</a> <span class="k">def</span> <span class="nf">render_select2_options_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">id_</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Renders options for Select2 JS.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :return: The rendered JS code.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">convert_dict_to_js_map</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="n">id_</span><span class="p">)</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Mixin.render_js_code"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.render_js_code">[docs]</a> <span class="k">def</span> <span class="nf">render_js_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">id_</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Renders the ``<script>`` block which contains the JS code for this widget.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :return: The rendered JS code enclosed inside ``<script>`` block.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">id_</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">render_js_script</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">render_inner_js_code</span><span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="s">u''</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Mixin.render_inner_js_code"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.render_inner_js_code">[docs]</a> <span class="k">def</span> <span class="nf">render_inner_js_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">id_</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Renders all the JS code required for this widget.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :return: The rendered JS code which will be later enclosed inside ``<script>`` block.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</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">get_options</span><span class="p">())</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_select2_options_code</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="n">id_</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="s">u'$("#</span><span class="si">%s</span><span class="s">").select2(</span><span class="si">%s</span><span class="s">);'</span> <span class="o">%</span> <span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="n">options</span><span class="p">)</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Mixin.render"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Mixin.render">[docs]</a> <span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attrs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="p">()):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Renders this widget. Html and JS code blocks all are rendered by this.</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :return: The rendered markup.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attrs</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">choices</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">choices</span><span class="p">)</span>
|
||||
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="nb">unicode</span><span class="p">(</span><span class="nb">super</span><span class="p">(</span><span class="n">Select2Mixin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">))</span> <span class="c"># Thanks to @ouhouhsami Issue#1</span>
|
||||
<span class="n">s</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">media</span><span class="o">.</span><span class="n">render</span><span class="p">()</span>
|
||||
<span class="n">final_attrs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">build_attrs</span><span class="p">(</span><span class="n">attrs</span><span class="p">)</span>
|
||||
<span class="n">id_</span> <span class="o">=</span> <span class="n">final_attrs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'id'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">s</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_js_code</span><span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attrs</span><span class="p">,</span> <span class="n">choices</span><span class="p">)</span>
|
||||
|
||||
<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">DEBUG</span><span class="p">):</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">"Generated widget code:-</span><span class="se">\n</span><span class="si">%s</span><span class="s">"</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span>
|
||||
|
||||
<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">'js/select2.min.js'</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">'screen'</span><span class="p">:</span> <span class="p">(</span><span class="s">'css/select2.css'</span><span class="p">,</span> <span class="s">'css/extra.css'</span><span class="p">,</span> <span class="p">)}</span>
|
||||
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2Widget"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2Widget">[docs]</a><span class="k">class</span> <span class="nc">Select2Widget</span><span class="p">(</span><span class="n">Select2Mixin</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Drop-in Select2 replacement for :py:class:`forms.Select`.</span>
|
||||
|
||||
<span class="sd"> Following Select2 option from :py:attr:`.Select2Mixin.options` is removed:-</span>
|
||||
|
||||
<span class="sd"> * multiple</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init_options</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'multiple'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">render_options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">choices</span><span class="p">,</span> <span class="n">selected_choices</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">is_required</span><span class="p">:</span>
|
||||
<span class="n">choices</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">choices</span><span class="p">)</span>
|
||||
<span class="n">choices</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">''</span><span class="p">,</span> <span class="s">''</span><span class="p">,</span> <span class="p">))</span> <span class="c"># Adding an empty choice</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Select2Widget</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">render_options</span><span class="p">(</span><span class="n">choices</span><span class="p">,</span> <span class="n">selected_choices</span><span class="p">)</span>
|
||||
|
||||
</div>
|
||||
<div class="viewcode-block" id="Select2MultipleWidget"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.Select2MultipleWidget">[docs]</a><span class="k">class</span> <span class="nc">Select2MultipleWidget</span><span class="p">(</span><span class="n">Select2Mixin</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">SelectMultiple</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Drop-in Select2 replacement for :py:class:`forms.SelectMultiple`.</span>
|
||||
|
||||
<span class="sd"> Following Select2 options from :py:attr:`.Select2Mixin.options` are removed:-</span>
|
||||
|
||||
<span class="sd"> * multiple</span>
|
||||
<span class="sd"> * allowClear</span>
|
||||
<span class="sd"> * minimumResultsForSearch</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init_options</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'multiple'</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">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'allowClear'</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">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'minimumResultsForSearch'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="c">### Specialized Multiple Hidden Input Widget ###</span></div>
|
||||
<div class="viewcode-block" id="MultipleSelect2HiddenInput"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.MultipleSelect2HiddenInput">[docs]</a><span class="k">class</span> <span class="nc">MultipleSelect2HiddenInput</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">TextInput</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Multiple hidden input for Select2.</span>
|
||||
|
||||
<span class="sd"> This is a specialized multiple Hidden Input widget. This includes a special</span>
|
||||
<span class="sd"> JS component which renders multiple Hidden Input boxes as there are values.</span>
|
||||
<span class="sd"> So, if user suppose chooses values 1, 4 and 9 then Select2 would would write them</span>
|
||||
<span class="sd"> to the primary hidden input. The JS component of this widget will read that value and</span>
|
||||
<span class="sd"> will render three more hidden input boxes each with values 1, 4 and 9 respectively.</span>
|
||||
<span class="sd"> They will all share the name of this field, and the name of the primary source</span>
|
||||
<span class="sd"> hidden input would be removed. This way, when submitted all the selected values</span>
|
||||
<span class="sd"> would be available as list.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">input_type</span> <span class="o">=</span> <span class="s">'hidden'</span> <span class="c"># We want it hidden but should be treated as if is_hidden is False</span>
|
||||
<span class="k">def</span> <span class="nf">render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attrs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="p">()):</span>
|
||||
<span class="n">attrs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">build_attrs</span><span class="p">(</span><span class="n">attrs</span><span class="p">,</span> <span class="n">multiple</span><span class="o">=</span><span class="s">'multiple'</span><span class="p">)</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="nb">unicode</span><span class="p">(</span><span class="nb">super</span><span class="p">(</span><span class="n">MultipleSelect2HiddenInput</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s">u""</span><span class="p">,</span> <span class="n">attrs</span><span class="p">))</span>
|
||||
<span class="n">id_</span> <span class="o">=</span> <span class="n">attrs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'id'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">id_</span><span class="p">:</span>
|
||||
<span class="n">jscode</span> <span class="o">=</span> <span class="s">u''</span>
|
||||
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
|
||||
<span class="n">jscode</span> <span class="o">=</span> <span class="s">u"$('#</span><span class="si">%s</span><span class="s">').val(django_select2.convertArrToStr(</span><span class="si">%s</span><span class="s">));"</span> \
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="n">convert_to_js_arr</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">id_</span><span class="p">))</span>
|
||||
<span class="n">jscode</span> <span class="o">+=</span> <span class="s">u"django_select2.initMultipleHidden($('#</span><span class="si">%s</span><span class="s">'));"</span> <span class="o">%</span> <span class="n">id_</span>
|
||||
<span class="n">s</span> <span class="o">+=</span> <span class="n">render_js_script</span><span class="p">(</span><span class="n">jscode</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">s</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">value_from_datadict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">files</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="p">(</span><span class="n">MultiValueDict</span><span class="p">,</span> <span class="n">MergeDict</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">data</span><span class="o">.</span><span class="n">getlist</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="c">### Heavy mixins and widgets ###</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="HeavySelect2Mixin"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.HeavySelect2Mixin">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2Mixin</span><span class="p">(</span><span class="n">Select2Mixin</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The base mixin of all Heavy Select2 widgets. It sub-classes :py:class:`Select2Mixin`.</span>
|
||||
|
||||
<span class="sd"> This mixin adds more Select2 options to :py:attr:`.Select2Mixin.options`. These are:-</span>
|
||||
|
||||
<span class="sd"> * minimumInputLength: ``2``</span>
|
||||
<span class="sd"> * initSelection: ``JSFunction('django_select2.onInit')``</span>
|
||||
<span class="sd"> * ajax:</span>
|
||||
<span class="sd"> * dataType: ``'json'``</span>
|
||||
<span class="sd"> * quietMillis: ``100``</span>
|
||||
<span class="sd"> * data: ``JSFunctionInContext('django_select2.get_url_params')``</span>
|
||||
<span class="sd"> * results: ``JSFunctionInContext('django_select2.process_results')``</span>
|
||||
|
||||
<span class="sd"> .. tip:: You can override these options by passing ``select2_options`` kwarg to :py:meth:`.__init__`.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="HeavySelect2Mixin.__init__"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.HeavySelect2Mixin.__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">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Constructor of the class.</span>
|
||||
|
||||
<span class="sd"> The following kwargs are allowed:-</span>
|
||||
|
||||
<span class="sd"> :param data_view: A :py:class:`~.views.Select2View` sub-class which can respond to this widget's Ajax queries.</span>
|
||||
<span class="sd"> :type data_view: :py:class:`django.views.generic.View` or None</span>
|
||||
|
||||
<span class="sd"> :param data_url: Url which will respond to Ajax queries with JSON object.</span>
|
||||
<span class="sd"> :type data_url: :py:obj:`str` or None</span>
|
||||
|
||||
<span class="sd"> .. tip:: When ``data_view`` is provided then it is converted into Url using</span>
|
||||
<span class="sd"> :py:func:`~django.core.urlresolvers.reverse`.</span>
|
||||
|
||||
<span class="sd"> .. warning:: Either of ``data_view`` or ``data_url`` must be specified, else :py:exc:`ValueError` would</span>
|
||||
<span class="sd"> be raised.</span>
|
||||
|
||||
<span class="sd"> :param choices: The list of available choices. If not provided then empty list is used instead. It</span>
|
||||
<span class="sd"> should be of the form -- ``[(val1, 'Label1'), (val2, 'Label2'), ...]``.</span>
|
||||
<span class="sd"> :type choices: :py:obj:`list` or :py:obj:`tuple`</span>
|
||||
|
||||
<span class="sd"> :param userGetValTextFuncName: The name of the custom JS function which you want to use to convert</span>
|
||||
<span class="sd"> value to label.</span>
|
||||
|
||||
<span class="sd"> In ``heavy_data.js``, ``django_select2.getValText()`` employs the following logic to convert value</span>
|
||||
<span class="sd"> to label :-</span>
|
||||
|
||||
<span class="sd"> 1. First check if the Select2 input field has ``txt`` attribute set along with ``value``. If found</span>
|
||||
<span class="sd"> then use it.</span>
|
||||
|
||||
<span class="sd"> 2. Otherwise, check if user has provided any custom method for this. Then use that. If it returns a</span>
|
||||
<span class="sd"> label then use it.</span>
|
||||
|
||||
<span class="sd"> 3. Otherwise, check the cached results. When the user searches in the fields then all the returned</span>
|
||||
<span class="sd"> responses from server, which has the value and label mapping, are cached by ``heavy_data.js``.</span>
|
||||
|
||||
<span class="sd"> 4. If we still do not have the label then check the cookies. When user selects some value then</span>
|
||||
<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"> """</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">'data_view'</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">'data_url'</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">userGetValTextFuncName</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">'userGetValTextFuncName'</span><span class="p">,</span> <span class="s">u'null'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">choices</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">'choices'</span><span class="p">,</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">view</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'data_view or data_url is required'</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="s">'ajax'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s">'dataType'</span><span class="p">:</span> <span class="s">'json'</span><span class="p">,</span>
|
||||
<span class="s">'quietMillis'</span><span class="p">:</span> <span class="mi">100</span><span class="p">,</span>
|
||||
<span class="s">'data'</span><span class="p">:</span> <span class="n">JSFunctionInContext</span><span class="p">(</span><span class="s">'django_select2.get_url_params'</span><span class="p">),</span>
|
||||
<span class="s">'results'</span><span class="p">:</span> <span class="n">JSFunctionInContext</span><span class="p">(</span><span class="s">'django_select2.process_results'</span><span class="p">),</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="s">'minimumInputLength'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'initSelection'</span><span class="p">]</span> <span class="o">=</span> <span class="n">JSFunction</span><span class="p">(</span><span class="s">'django_select2.onInit'</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">HeavySelect2Mixin</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">kwargs</span><span class="p">)</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="HeavySelect2Mixin.render_texts"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.HeavySelect2Mixin.render_texts">[docs]</a> <span class="k">def</span> <span class="nf">render_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">selected_choices</span><span class="p">,</span> <span class="n">choices</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Renders a JS array with labels for the ``selected_choices``.</span>
|
||||
|
||||
<span class="sd"> :param selected_choices: List of selected choices' values.</span>
|
||||
<span class="sd"> :type selected_choices: :py:obj:`list` or :py:obj:`tuple`</span>
|
||||
|
||||
<span class="sd"> :param choices: Extra choices, if any. This is a list of tuples. In each tuple, the first</span>
|
||||
<span class="sd"> item is the choice value and the second item is choice label.</span>
|
||||
<span class="sd"> :type choices: :py:obj:`list` or :py:obj:`tuple`</span>
|
||||
|
||||
<span class="sd"> :return: The rendered JS array code.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">selected_choices</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">force_unicode</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">selected_choices</span><span class="p">)</span>
|
||||
<span class="n">txts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">all_choices</span> <span class="o">=</span> <span class="n">choices</span> <span class="k">if</span> <span class="n">choices</span> <span class="k">else</span> <span class="p">[]</span>
|
||||
<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">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>
|
||||
<span class="k">def</span> <span class="nf">get_options</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="ow">is</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">reverse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">)</span> <span class="c"># We lazy resolve the view. By this time Url conf would been loaded fully.</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">[</span><span class="s">'ajax'</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'url'</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</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="s">'ajax'</span><span class="p">][</span><span class="s">'url'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">HeavySelect2Mixin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">get_options</span><span class="p">()</span>
|
||||
|
||||
<div class="viewcode-block" id="HeavySelect2Mixin.render_texts_for_value"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.HeavySelect2Mixin.render_texts_for_value">[docs]</a> <span class="k">def</span> <span class="nf">render_texts_for_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">id_</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">choices</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Renders the JS code which sets the ``txt`` attribute on the field. It gets the array</span>
|
||||
<span class="sd"> of lables from :py:meth:`.render_texts`.</span>
|
||||
|
||||
<span class="sd"> :param id_: Id of the field. This can be used to get reference of this field's DOM in JS.</span>
|
||||
<span class="sd"> :type id_: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :param value: Currently set value on the field.</span>
|
||||
<span class="sd"> :type value: Any</span>
|
||||
|
||||
<span class="sd"> :param choices: Extra choices, if any. This is a list of tuples. In each tuple, the first</span>
|
||||
<span class="sd"> item is the choice value and the second item is choice label.</span>
|
||||
<span class="sd"> :type choices: :py:obj:`list` or :py:obj:`tuple`</span>
|
||||
|
||||
<span class="sd"> :return: JS code which sets the ``txt`` attribute.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="c"># Just like forms.Select.render() it assumes that value will be single valued.</span>
|
||||
<span class="n">texts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_texts</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">choices</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">texts</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s">u"$('#</span><span class="si">%s</span><span class="s">').txt(</span><span class="si">%s</span><span class="s">);"</span> <span class="o">%</span> <span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="n">texts</span><span class="p">)</span>
|
||||
</div>
|
||||
<span class="k">def</span> <span class="nf">render_inner_js_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">id_</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attrs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="p">(),</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="n">js</span> <span class="o">=</span> <span class="s">u"$('#</span><span class="si">%s</span><span class="s">').change(django_select2.onValChange).data('userGetValText', </span><span class="si">%s</span><span class="s">);"</span> \
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">userGetValTextFuncName</span><span class="p">)</span>
|
||||
<span class="n">texts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_texts_for_value</span><span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">choices</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">texts</span><span class="p">:</span>
|
||||
<span class="n">js</span> <span class="o">+=</span> <span class="n">texts</span>
|
||||
<span class="n">js</span> <span class="o">+=</span> <span class="nb">super</span><span class="p">(</span><span class="n">HeavySelect2Mixin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">render_inner_js_code</span><span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">attrs</span><span class="p">,</span> <span class="n">choices</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
||||
<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">'js/select2.min.js'</span><span class="p">,</span> <span class="s">'js/heavy_data.js'</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">'screen'</span><span class="p">:</span> <span class="p">(</span><span class="s">'css/select2.css'</span><span class="p">,</span> <span class="s">'css/extra.css'</span><span class="p">,</span> <span class="p">)}</span>
|
||||
|
||||
</div>
|
||||
<div class="viewcode-block" id="HeavySelect2Widget"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.HeavySelect2Widget">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2Widget</span><span class="p">(</span><span class="n">HeavySelect2Mixin</span><span class="p">,</span> <span class="n">forms</span><span class="o">.</span><span class="n">TextInput</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Single selection heavy widget.</span>
|
||||
|
||||
<span class="sd"> Following Select2 option from :py:attr:`.Select2Mixin.options` is added or set:-</span>
|
||||
|
||||
<span class="sd"> * multiple: ``False``</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">input_type</span> <span class="o">=</span> <span class="s">'hidden'</span> <span class="c"># We want it hidden but should be treated as if is_hidden is False</span>
|
||||
<span class="k">def</span> <span class="nf">init_options</span><span class="p">(</span><span class="bp">self</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="s">'multiple'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
|
||||
</div>
|
||||
<div class="viewcode-block" id="HeavySelect2MultipleWidget"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.HeavySelect2MultipleWidget">[docs]</a><span class="k">class</span> <span class="nc">HeavySelect2MultipleWidget</span><span class="p">(</span><span class="n">HeavySelect2Mixin</span><span class="p">,</span> <span class="n">MultipleSelect2HiddenInput</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Multiple selection heavy widget.</span>
|
||||
|
||||
<span class="sd"> Following Select2 options from :py:attr:`.Select2Mixin.options` are removed:-</span>
|
||||
|
||||
<span class="sd"> * allowClear</span>
|
||||
<span class="sd"> * minimumResultsForSearch</span>
|
||||
|
||||
<span class="sd"> Following Select2 options from :py:attr:`.Select2Mixin.options` are added or set:-</span>
|
||||
|
||||
<span class="sd"> * multiple: ``False``</span>
|
||||
<span class="sd"> * separator: ``JSVar('django_select2.MULTISEPARATOR')``</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init_options</span><span class="p">(</span><span class="bp">self</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="s">'multiple'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'allowClear'</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">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'minimumResultsForSearch'</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">options</span><span class="p">[</span><span class="s">'separator'</span><span class="p">]</span> <span class="o">=</span> <span class="n">JSVar</span><span class="p">(</span><span class="s">'django_select2.MULTISEPARATOR'</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="HeavySelect2MultipleWidget.render_texts_for_value"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.HeavySelect2MultipleWidget.render_texts_for_value">[docs]</a> <span class="k">def</span> <span class="nf">render_texts_for_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">id_</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">choices</span><span class="p">):</span> <span class="c"># value is expected to be a list of values</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Renders the JS code which sets the ``txt`` attribute on the field. It gets the array</span>
|
||||
<span class="sd"> of lables from :py:meth:`.render_texts`.</span>
|
||||
|
||||
<span class="sd"> :param id_: Id of the field. This can be used to get reference of this field's DOM in JS.</span>
|
||||
<span class="sd"> :type id_: :py:obj:`str`</span>
|
||||
|
||||
<span class="sd"> :param value: **List** of currently set value on the field.</span>
|
||||
<span class="sd"> :type value: :py:obj:`list`</span>
|
||||
|
||||
<span class="sd"> :param choices: Extra choices, if any. This is a list of tuples. In each tuple, the first</span>
|
||||
<span class="sd"> item is the choice value and the second item is choice label.</span>
|
||||
<span class="sd"> :type choices: :py:obj:`list` or :py:obj:`tuple`</span>
|
||||
|
||||
<span class="sd"> :return: JS code which sets the ``txt`` attribute.</span>
|
||||
<span class="sd"> :rtype: :py:obj:`unicode`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">value</span><span class="p">:</span> <span class="c"># Just like forms.SelectMultiple.render() it assumes that value will be multi-valued (list).</span>
|
||||
<span class="n">texts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_texts</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">choices</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">texts</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s">u"$('#</span><span class="si">%s</span><span class="s">').txt(</span><span class="si">%s</span><span class="s">);"</span> <span class="o">%</span> <span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="n">texts</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="c">### Auto Heavy widgets ###</span>
|
||||
</div></div>
|
||||
<div class="viewcode-block" id="AutoHeavySelect2Mixin"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.AutoHeavySelect2Mixin">[docs]</a><span class="k">class</span> <span class="nc">AutoHeavySelect2Mixin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This mixin is needed for Auto heavy fields.</span>
|
||||
|
||||
<span class="sd"> This mxin adds extra JS code to notify the field's DOM object of the generated id. The generated id</span>
|
||||
<span class="sd"> is not the same as the ``id`` attribute of the field's Html markup. This id is generated by</span>
|
||||
<span class="sd"> :py:func:`~.util.register_field` when the Auto field is registered. The client side (DOM) sends this</span>
|
||||
<span class="sd"> id along with the Ajax request, so that the central view can identify which field should be used to</span>
|
||||
<span class="sd"> serve the request.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">render_inner_js_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">id_</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="n">js</span> <span class="o">=</span> <span class="s">u"$('#</span><span class="si">%s</span><span class="s">').data('field_id', '</span><span class="si">%s</span><span class="s">');"</span> <span class="o">%</span> <span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">field_id</span><span class="p">)</span>
|
||||
<span class="n">js</span> <span class="o">+=</span> <span class="nb">super</span><span class="p">(</span><span class="n">AutoHeavySelect2Mixin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">render_inner_js_code</span><span class="p">(</span><span class="n">id_</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">js</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="AutoHeavySelect2Widget"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.AutoHeavySelect2Widget">[docs]</a><span class="k">class</span> <span class="nc">AutoHeavySelect2Widget</span><span class="p">(</span><span class="n">AutoHeavySelect2Mixin</span><span class="p">,</span> <span class="n">HeavySelect2Widget</span><span class="p">):</span>
|
||||
<span class="s">"Auto version of :py:class:`.HeavySelect2Widget`"</span>
|
||||
<span class="k">pass</span>
|
||||
</div>
|
||||
<div class="viewcode-block" id="AutoHeavySelect2MultipleWidget"><a class="viewcode-back" href="../../ref_widgets.html#django_select2.widgets.AutoHeavySelect2MultipleWidget">[docs]</a><span class="k">class</span> <span class="nc">AutoHeavySelect2MultipleWidget</span><span class="p">(</span><span class="n">AutoHeavySelect2Mixin</span><span class="p">,</span> <span class="n">HeavySelect2MultipleWidget</span><span class="p">):</span>
|
||||
<span class="s">"Auto version of :py:class:`.HeavySelect2MultipleWidget`"</span>
|
||||
<span class="k">pass</span>
|
||||
</pre></div></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="../../search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
<li><a href="../index.html" >Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Nirupam Biswas.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
94
docs/_build/html/_modules/index.html
vendored
Normal file
94
docs/_build/html/_modules/index.html
vendored
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>Overview: module code — Django-Select2 3.0 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '../',
|
||||
VERSION: '3.0',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="../_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="../_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="../_static/doctools.js"></script>
|
||||
<link rel="top" title="Django-Select2 3.0 documentation" href="../index.html" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body">
|
||||
|
||||
<h1>All modules for which code is available</h1>
|
||||
<ul><li><a href="django_select2/fields.html">django_select2.fields</a></li>
|
||||
<li><a href="django_select2/util.html">django_select2.util</a></li>
|
||||
<li><a href="django_select2/views.html">django_select2.views</a></li>
|
||||
<li><a href="django_select2/widgets.html">django_select2.widgets</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div id="searchbox" style="display: none">
|
||||
<h3>Quick search</h3>
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Go" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
<p class="searchtip" style="font-size: 90%">
|
||||
Enter search terms or a module, class or function name.
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li><a href="../index.html">Django-Select2 3.0 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© Copyright 2012, Nirupam Biswas.
|
||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
docs/_build/html/objects.inv
vendored
BIN
docs/_build/html/objects.inv
vendored
Binary file not shown.
72
docs/_build/html/ref_fields.html
vendored
72
docs/_build/html/ref_fields.html
vendored
|
|
@ -60,7 +60,7 @@
|
|||
<p>Contains all the Django fields for Select2.</p>
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.AutoViewFieldMixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoViewFieldMixin</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoViewFieldMixin</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#AutoViewFieldMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin" 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>Registers itself with AutoResponseView.</p>
|
||||
<p>All Auto fields must sub-class this mixin, so that they are registered.</p>
|
||||
|
|
@ -71,18 +71,18 @@ central view used to serve Auto fields won’t be available.</p>
|
|||
</div>
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.AutoViewFieldMixin.__init__">
|
||||
<tt class="descname">__init__</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin.__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#AutoViewFieldMixin.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin.__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"><strong>auto_id</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt>) – <p>The key to use while registering this field. If it is not provided then
|
||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>auto_id</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a>) – <p>The key to use while registering this field. If it is not provided then
|
||||
an auto generated key is used.</p>
|
||||
<div class="admonition tip">
|
||||
<p class="first admonition-title">Tip</p>
|
||||
<p>This mixin uses full class name of the field to register itself. This is
|
||||
used like key in a <tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt> by <a class="reference internal" href="ref_util.html#django_select2.util.register_field" title="django_select2.util.register_field"><tt class="xref py py-func docutils literal"><span class="pre">util.register_field()</span></tt></a>.</p>
|
||||
used like key in a <a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a> by <a class="reference internal" href="ref_util.html#django_select2.util.register_field" title="django_select2.util.register_field"><tt class="xref py py-func docutils literal"><span class="pre">util.register_field()</span></tt></a>.</p>
|
||||
<p>If that key already exists then the instance is not registered again. So, eventually
|
||||
all instances of an Auto field share one instance to respond to the Ajax queries for
|
||||
its fields.</p>
|
||||
|
|
@ -97,14 +97,14 @@ provide a unique key which has never occured before.</p>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.AutoViewFieldMixin.security_check">
|
||||
<tt class="descname">security_check</tt><big>(</big><em>request</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin.security_check" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">security_check</tt><big>(</big><em>request</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#AutoViewFieldMixin.security_check"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin.security_check" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns <tt class="docutils literal"><span class="pre">False</span></tt> if security check fails.</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 simple">
|
||||
<li><strong>request</strong> (<tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt>) – The Ajax request object.</li>
|
||||
<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>) – The Ajax request object.</li>
|
||||
<li><strong>args</strong> – 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> – 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>
|
||||
|
|
@ -113,7 +113,7 @@ provide a unique key which has never occured before.</p>
|
|||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">A boolean value, signalling if check passed or failed.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">bool</span></tt></p>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">bool</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -127,7 +127,7 @@ Http reqeusts to your server, be able to get access to sensitive information.</p
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.AutoViewFieldMixin.get_results">
|
||||
<tt class="descname">get_results</tt><big>(</big><em>request</em>, <em>term</em>, <em>page</em>, <em>context</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin.get_results" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">get_results</tt><big>(</big><em>request</em>, <em>term</em>, <em>page</em>, <em>context</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#AutoViewFieldMixin.get_results"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoViewFieldMixin.get_results" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>See <a class="reference internal" href="ref_views.html#django_select2.views.Select2View.get_results" title="django_select2.views.Select2View.get_results"><tt class="xref py py-meth docutils literal"><span class="pre">views.Select2View.get_results()</span></tt></a>.</p>
|
||||
</dd></dl>
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ Http reqeusts to your server, be able to get access to sensitive information.</p
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.Select2ChoiceField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">Select2ChoiceField</tt><big>(</big><em>choices=()</em>, <em>required=True</em>, <em>widget=None</em>, <em>label=None</em>, <em>initial=None</em>, <em>help_text=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.Select2ChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">Select2ChoiceField</tt><big>(</big><em>choices=()</em>, <em>required=True</em>, <em>widget=None</em>, <em>label=None</em>, <em>initial=None</em>, <em>help_text=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#Select2ChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.Select2ChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">django.forms.fields.ChoiceField</span></tt></p>
|
||||
<p>Drop-in Select2 replacement for <tt class="xref py py-class docutils literal"><span class="pre">forms.ChoiceField</span></tt>.</p>
|
||||
<dl class="attribute">
|
||||
|
|
@ -148,7 +148,7 @@ Http reqeusts to your server, be able to get access to sensitive information.</p
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.Select2MultipleChoiceField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">Select2MultipleChoiceField</tt><big>(</big><em>choices=()</em>, <em>required=True</em>, <em>widget=None</em>, <em>label=None</em>, <em>initial=None</em>, <em>help_text=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.Select2MultipleChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">Select2MultipleChoiceField</tt><big>(</big><em>choices=()</em>, <em>required=True</em>, <em>widget=None</em>, <em>label=None</em>, <em>initial=None</em>, <em>help_text=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#Select2MultipleChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.Select2MultipleChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">django.forms.fields.MultipleChoiceField</span></tt></p>
|
||||
<p>Drop-in Select2 replacement for <tt class="xref py py-class docutils literal"><span class="pre">forms.MultipleChoiceField</span></tt>.</p>
|
||||
<dl class="attribute">
|
||||
|
|
@ -161,7 +161,7 @@ Http reqeusts to your server, be able to get access to sensitive information.</p
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.ModelResultJsonMixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ModelResultJsonMixin</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ModelResultJsonMixin</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#ModelResultJsonMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin" 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>Makes <tt class="docutils literal"><span class="pre">heavy_data.js</span></tt> parsable JSON response for queries on its model.</p>
|
||||
<p>On query it uses <a class="reference internal" href="#django_select2.fields.ModelResultJsonMixin.prepare_qs_params" title="django_select2.fields.ModelResultJsonMixin.prepare_qs_params"><tt class="xref py py-meth docutils literal"><span class="pre">prepare_qs_params()</span></tt></a> to prepare query attributes
|
||||
|
|
@ -170,17 +170,17 @@ which it then passes to <tt class="docutils literal"><span class="pre">self.quer
|
|||
<tt class="docutils literal"><span class="pre">search_fields</span></tt>, which should be a list of field names to search for.</p>
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.ModelResultJsonMixin.__init__">
|
||||
<tt class="descname">__init__</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.__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#ModelResultJsonMixin.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.__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>queryset</strong> (<tt class="xref py py-class docutils literal"><span class="pre">django.db.models.query.QuerySet</span></tt> or None) – This can be passed as kwarg here or defined as field variabel,
|
||||
<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) – 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> (<tt class="xref py py-obj docutils literal"><span class="pre">int</span></tt>) – Maximum number to results to return per Ajax query.</li>
|
||||
<li><strong>to_field_name</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – Which field’s value should be returned as result tuple’s
|
||||
<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>) – 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>) – Which field’s value should be returned as result tuple’s
|
||||
value. (Default is <tt class="docutils literal"><span class="pre">pk</span></tt>, i.e. the id field of the model)</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
|
@ -191,7 +191,7 @@ value. (Default is <tt class="docutils literal"><span class="pre">pk</span></tt>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.ModelResultJsonMixin.label_from_instance">
|
||||
<tt class="descname">label_from_instance</tt><big>(</big><em>obj</em><big>)</big><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.label_from_instance" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">label_from_instance</tt><big>(</big><em>obj</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#ModelResultJsonMixin.label_from_instance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.label_from_instance" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Sub-classes should override this to generate custom label texts for values.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
|
|
@ -201,7 +201,7 @@ value. (Default is <tt class="docutils literal"><span class="pre">pk</span></tt>
|
|||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The label string.</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></td>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -209,14 +209,14 @@ value. (Default is <tt class="docutils literal"><span class="pre">pk</span></tt>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.ModelResultJsonMixin.prepare_qs_params">
|
||||
<tt class="descname">prepare_qs_params</tt><big>(</big><em>request</em>, <em>search_term</em>, <em>search_fields</em><big>)</big><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.prepare_qs_params" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">prepare_qs_params</tt><big>(</big><em>request</em>, <em>search_term</em>, <em>search_fields</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#ModelResultJsonMixin.prepare_qs_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.prepare_qs_params" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Prepares queryset parameter to use for searching.</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 simple">
|
||||
<li><strong>search_term</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt>) – The search term.</li>
|
||||
<li><strong>search_term</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a>) – The search term.</li>
|
||||
<li><strong>search_fields</strong> – The list of search fields. This is same as <tt class="docutils literal"><span class="pre">self.search_fields</span></tt>.</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
|
@ -265,7 +265,7 @@ Also then <tt class="docutils literal"><span class="pre">and</span></tt> part is
|
|||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></p>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -274,7 +274,7 @@ Also then <tt class="docutils literal"><span class="pre">and</span></tt> part is
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.ModelResultJsonMixin.get_results">
|
||||
<tt class="descname">get_results</tt><big>(</big><em>request</em>, <em>term</em>, <em>page</em>, <em>context</em><big>)</big><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.get_results" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">get_results</tt><big>(</big><em>request</em>, <em>term</em>, <em>page</em>, <em>context</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#ModelResultJsonMixin.get_results"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ModelResultJsonMixin.get_results" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>See <a class="reference internal" href="ref_views.html#django_select2.views.Select2View.get_results" title="django_select2.views.Select2View.get_results"><tt class="xref py py-meth docutils literal"><span class="pre">views.Select2View.get_results()</span></tt></a>.</p>
|
||||
<p>This implementation takes care of detecting if more results are available.</p>
|
||||
</dd></dl>
|
||||
|
|
@ -283,7 +283,7 @@ Also then <tt class="docutils literal"><span class="pre">and</span></tt> part is
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.UnhideableQuerysetType">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">UnhideableQuerysetType</tt><a class="headerlink" href="#django_select2.fields.UnhideableQuerysetType" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">UnhideableQuerysetType</tt><a class="reference internal" href="_modules/django_select2/fields.html#UnhideableQuerysetType"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.UnhideableQuerysetType" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">type</span></tt></p>
|
||||
<p>This does some pretty nasty hacky stuff, to make sure users can
|
||||
also define <tt class="docutils literal"><span class="pre">queryset</span></tt> as class-level field variable, instead of
|
||||
|
|
@ -292,7 +292,7 @@ passing it to constructor.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.ChoiceMixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ChoiceMixin</tt><a class="headerlink" href="#django_select2.fields.ChoiceMixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ChoiceMixin</tt><a class="reference internal" href="_modules/django_select2/fields.html#ChoiceMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ChoiceMixin" 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>Simple mixin which provides a property – <tt class="docutils literal"><span class="pre">choices</span></tt>. When <tt class="docutils literal"><span class="pre">choices</span></tt> is set,
|
||||
then it sets that value to <tt class="docutils literal"><span class="pre">self.widget.choices</span></tt> too.</p>
|
||||
|
|
@ -300,7 +300,7 @@ then it sets that value to <tt class="docutils literal"><span class="pre">self.w
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.QuerysetChoiceMixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">QuerysetChoiceMixin</tt><a class="headerlink" href="#django_select2.fields.QuerysetChoiceMixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">QuerysetChoiceMixin</tt><a class="reference internal" href="_modules/django_select2/fields.html#QuerysetChoiceMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.QuerysetChoiceMixin" 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></p>
|
||||
<p>Overrides <tt class="docutils literal"><span class="pre">choices</span></tt>‘ getter to return instance of <tt class="xref py py-class docutils literal"><span class="pre">ModelChoiceIterator</span></tt>
|
||||
instead.</p>
|
||||
|
|
@ -308,7 +308,7 @@ instead.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.ModelSelect2Field">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ModelSelect2Field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.ModelSelect2Field" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ModelSelect2Field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#ModelSelect2Field"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ModelSelect2Field" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.ModelChoiceField</span></tt></p>
|
||||
<p>Light Select2 field, specialized for Models.</p>
|
||||
<p>Select2 replacement for <tt class="xref py py-class docutils literal"><span class="pre">forms.ModelChoiceField</span></tt>.</p>
|
||||
|
|
@ -322,7 +322,7 @@ instead.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.ModelSelect2MultipleField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ModelSelect2MultipleField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.ModelSelect2MultipleField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">ModelSelect2MultipleField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#ModelSelect2MultipleField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.ModelSelect2MultipleField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.ModelMultipleChoiceField</span></tt></p>
|
||||
<p>Light multiple-value Select2 field, specialized for Models.</p>
|
||||
<p>Select2 replacement for <tt class="xref py py-class docutils literal"><span class="pre">forms.ModelMultipleChoiceField</span></tt>.</p>
|
||||
|
|
@ -336,12 +336,12 @@ instead.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.HeavySelect2FieldBase">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2FieldBase</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBase" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2FieldBase</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavySelect2FieldBase"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBase" 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>Base field for all Heavy fields.</p>
|
||||
<dl class="method">
|
||||
<dt id="django_select2.fields.HeavySelect2FieldBase.__init__">
|
||||
<tt class="descname">__init__</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBase.__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#HeavySelect2FieldBase.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavySelect2FieldBase.__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" />
|
||||
|
|
@ -366,7 +366,7 @@ be raised.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.HeavySelect2ChoiceField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2ChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavySelect2ChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2ChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavySelect2ChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavySelect2ChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.HeavySelect2FieldBase" title="django_select2.fields.HeavySelect2FieldBase"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavySelect2FieldBase</span></tt></a></p>
|
||||
<p>Heavy Select2 Choice field.</p>
|
||||
<dl class="attribute">
|
||||
|
|
@ -379,7 +379,7 @@ be raised.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.HeavySelect2MultipleChoiceField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2MultipleChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavySelect2MultipleChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavySelect2MultipleChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavySelect2MultipleChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavySelect2MultipleChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.HeavySelect2FieldBase" title="django_select2.fields.HeavySelect2FieldBase"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavySelect2FieldBase</span></tt></a></p>
|
||||
<p>Heavy Select2 Multiple Choice field.</p>
|
||||
<dl class="attribute">
|
||||
|
|
@ -392,21 +392,21 @@ be raised.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.HeavyModelSelect2ChoiceField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyModelSelect2ChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavyModelSelect2ChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyModelSelect2ChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavyModelSelect2ChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavyModelSelect2ChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.QuerysetChoiceMixin" title="django_select2.fields.QuerysetChoiceMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.QuerysetChoiceMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.HeavySelect2ChoiceField" title="django_select2.fields.HeavySelect2ChoiceField"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavySelect2ChoiceField</span></tt></a>, <tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.ModelChoiceField</span></tt></p>
|
||||
<p>Heavy Select2 Choice field, specialized for Models.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.HeavyModelSelect2MultipleChoiceField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyModelSelect2MultipleChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.HeavyModelSelect2MultipleChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">HeavyModelSelect2MultipleChoiceField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#HeavyModelSelect2MultipleChoiceField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.HeavyModelSelect2MultipleChoiceField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.QuerysetChoiceMixin" title="django_select2.fields.QuerysetChoiceMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.QuerysetChoiceMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.HeavySelect2MultipleChoiceField" title="django_select2.fields.HeavySelect2MultipleChoiceField"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavySelect2MultipleChoiceField</span></tt></a>, <tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.ModelMultipleChoiceField</span></tt></p>
|
||||
<p>Heavy Select2 Multiple Choice field, specialized for Models.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.AutoSelect2Field">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoSelect2Field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoSelect2Field" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoSelect2Field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#AutoSelect2Field"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoSelect2Field" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.AutoViewFieldMixin" title="django_select2.fields.AutoViewFieldMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.AutoViewFieldMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.HeavySelect2ChoiceField" title="django_select2.fields.HeavySelect2ChoiceField"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavySelect2ChoiceField</span></tt></a></p>
|
||||
<p>Auto Heavy Select2 field.</p>
|
||||
<p>This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming
|
||||
|
|
@ -421,7 +421,7 @@ json query requests for that type (class).</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.AutoSelect2MultipleField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoSelect2MultipleField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoSelect2MultipleField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoSelect2MultipleField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#AutoSelect2MultipleField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoSelect2MultipleField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.AutoViewFieldMixin" title="django_select2.fields.AutoViewFieldMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.AutoViewFieldMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.HeavySelect2MultipleChoiceField" title="django_select2.fields.HeavySelect2MultipleChoiceField"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavySelect2MultipleChoiceField</span></tt></a></p>
|
||||
<p>Auto Heavy Select2 field for multiple choices.</p>
|
||||
<p>This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming
|
||||
|
|
@ -436,7 +436,7 @@ json query requests for that type (class).</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.AutoModelSelect2Field">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoModelSelect2Field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoModelSelect2Field" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoModelSelect2Field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#AutoModelSelect2Field"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoModelSelect2Field" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.ModelResultJsonMixin" title="django_select2.fields.ModelResultJsonMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.ModelResultJsonMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.AutoViewFieldMixin" title="django_select2.fields.AutoViewFieldMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.AutoViewFieldMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.HeavyModelSelect2ChoiceField" title="django_select2.fields.HeavyModelSelect2ChoiceField"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavyModelSelect2ChoiceField</span></tt></a></p>
|
||||
<p>Auto Heavy Select2 field, specialized for Models.</p>
|
||||
<p>This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming
|
||||
|
|
@ -451,7 +451,7 @@ json query requests for that type (class).</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.fields.AutoModelSelect2MultipleField">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoModelSelect2MultipleField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.fields.AutoModelSelect2MultipleField" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.fields.</tt><tt class="descname">AutoModelSelect2MultipleField</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/fields.html#AutoModelSelect2MultipleField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.fields.AutoModelSelect2MultipleField" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.fields.ModelResultJsonMixin" title="django_select2.fields.ModelResultJsonMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.ModelResultJsonMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.AutoViewFieldMixin" title="django_select2.fields.AutoViewFieldMixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.AutoViewFieldMixin</span></tt></a>, <a class="reference internal" href="#django_select2.fields.HeavyModelSelect2MultipleChoiceField" title="django_select2.fields.HeavyModelSelect2MultipleChoiceField"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.fields.HeavyModelSelect2MultipleChoiceField</span></tt></a></p>
|
||||
<p>Auto Heavy Select2 field for multiple choices, specialized for Models.</p>
|
||||
<p>This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming
|
||||
|
|
|
|||
64
docs/_build/html/ref_util.html
vendored
64
docs/_build/html/ref_util.html
vendored
|
|
@ -55,7 +55,7 @@
|
|||
<span id="util"></span><h1>Util<a class="headerlink" href="#module-django_select2.util" title="Permalink to this headline">¶</a></h1>
|
||||
<dl class="class">
|
||||
<dt id="django_select2.util.JSVar">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.util.</tt><tt class="descname">JSVar</tt><a class="headerlink" href="#django_select2.util.JSVar" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.util.</tt><tt class="descname">JSVar</tt><a class="reference internal" href="_modules/django_select2/util.html#JSVar"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.JSVar" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<p>A JS variable.</p>
|
||||
<p>This is a simple unicode string. This class type acts as a marker that this string is a JS variable name,
|
||||
|
|
@ -64,7 +64,7 @@ so it must not be quoted by <a class="reference internal" href="#django_select2.
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.util.JSFunction">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.util.</tt><tt class="descname">JSFunction</tt><a class="headerlink" href="#django_select2.util.JSFunction" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.util.</tt><tt class="descname">JSFunction</tt><a class="reference internal" href="_modules/django_select2/util.html#JSFunction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.JSFunction" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.util.JSVar" title="django_select2.util.JSVar"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.util.JSVar</span></tt></a></p>
|
||||
<p>A JS function name.</p>
|
||||
<p>From rendering point of view, rendering this is no different from <a class="reference internal" href="#django_select2.util.JSVar" title="django_select2.util.JSVar"><tt class="xref py py-class docutils literal"><span class="pre">JSVar</span></tt></a>. After all, a JS varible
|
||||
|
|
@ -78,7 +78,7 @@ understand.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.util.JSFunctionInContext">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.util.</tt><tt class="descname">JSFunctionInContext</tt><a class="headerlink" href="#django_select2.util.JSFunctionInContext" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.util.</tt><tt class="descname">JSFunctionInContext</tt><a class="reference internal" href="_modules/django_select2/util.html#JSFunctionInContext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.JSFunctionInContext" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.util.JSVar" title="django_select2.util.JSVar"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.util.JSVar</span></tt></a></p>
|
||||
<p>A JS function name to run in context of some other Html DOM element.</p>
|
||||
<p>Like :py:class:JSFunction`, this too flags the string as JS function, but with a special requirement. The JS function
|
||||
|
|
@ -92,7 +92,7 @@ needs to be invoked in the context of a Html DOM, such that, <tt class="docutils
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.render_js_script">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">render_js_script</tt><big>(</big><em>inner_code</em><big>)</big><a class="headerlink" href="#django_select2.util.render_js_script" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">render_js_script</tt><big>(</big><em>inner_code</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#render_js_script"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.render_js_script" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>This wraps <tt class="docutils literal"><span class="pre">inner_code</span></tt> string inside the following code block:</p>
|
||||
<div class="highlight-python"><pre><script>
|
||||
$(function () {
|
||||
|
|
@ -104,7 +104,7 @@ needs to be invoked in the context of a Html DOM, such that, <tt class="docutils
|
|||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></td>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -112,19 +112,19 @@ needs to be invoked in the context of a Html DOM, such that, <tt class="docutils
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.extract_some_key_val">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">extract_some_key_val</tt><big>(</big><em>dct</em>, <em>keys</em><big>)</big><a class="headerlink" href="#django_select2.util.extract_some_key_val" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Gets a sub-set of a <tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt>.</p>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">extract_some_key_val</tt><big>(</big><em>dct</em>, <em>keys</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#extract_some_key_val"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.extract_some_key_val" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Gets a sub-set of a <a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a>.</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 simple">
|
||||
<li><strong>dct</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt>) – Source dictionary.</li>
|
||||
<li><strong>keys</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt> or any iterable.) – List of subset keys, which to extract from <tt class="docutils literal"><span class="pre">dct</span></tt>.</li>
|
||||
<li><strong>dct</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a>) – Source dictionary.</li>
|
||||
<li><strong>keys</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a> or any iterable.) – List of subset keys, which to extract from <tt class="docutils literal"><span class="pre">dct</span></tt>.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></p>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -133,7 +133,7 @@ needs to be invoked in the context of a Html DOM, such that, <tt class="docutils
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.convert_py_to_js_data">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_py_to_js_data</tt><big>(</big><em>val</em>, <em>id_</em><big>)</big><a class="headerlink" href="#django_select2.util.convert_py_to_js_data" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_py_to_js_data</tt><big>(</big><em>val</em>, <em>id_</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#convert_py_to_js_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.convert_py_to_js_data" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Converts Python data type to JS data type.</p>
|
||||
<p>Practically what this means is, convert <tt class="docutils literal"><span class="pre">False</span></tt> to <tt class="docutils literal"><span class="pre">false</span></tt>, <tt class="docutils literal"><span class="pre">True</span></tt> to <tt class="docutils literal"><span class="pre">true</span></tt> and so on.
|
||||
It also takes care of the conversion of <a class="reference internal" href="#django_select2.util.JSVar" title="django_select2.util.JSVar"><tt class="xref py py-class docutils literal"><span class="pre">JSVar</span></tt></a>, <a class="reference internal" href="#django_select2.util.JSFunction" title="django_select2.util.JSFunction"><tt class="xref py py-class docutils literal"><span class="pre">JSFunction</span></tt></a>
|
||||
|
|
@ -145,12 +145,12 @@ too.</p>
|
|||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
|
||||
<li><strong>val</strong> (<em>Any</em>) – The Python data to convert.</li>
|
||||
<li><strong>id</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – The DOM id of the element in which context <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a> functions
|
||||
<li><strong>id</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>) – The DOM id of the element in which context <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a> functions
|
||||
should run. (This is not needed if <tt class="docutils literal"><span class="pre">val</span></tt> contains no <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a>)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -159,20 +159,20 @@ should run. (This is not needed if <tt class="docutils literal"><span class="pre
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.convert_dict_to_js_map">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_dict_to_js_map</tt><big>(</big><em>dct</em>, <em>id_</em><big>)</big><a class="headerlink" href="#django_select2.util.convert_dict_to_js_map" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_dict_to_js_map</tt><big>(</big><em>dct</em>, <em>id_</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#convert_dict_to_js_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.convert_dict_to_js_map" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Converts a Python dictionary to JS map.</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 simple">
|
||||
<li><strong>dct</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt>) – The Python dictionary to convert.</li>
|
||||
<li><strong>id</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – The DOM id of the element in which context <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a> functions
|
||||
<li><strong>dct</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a>) – The Python dictionary to convert.</li>
|
||||
<li><strong>id</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>) – The DOM id of the element in which context <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a> functions
|
||||
should run. (This is not needed if <tt class="docutils literal"><span class="pre">dct</span></tt> contains no <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a>)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -181,20 +181,20 @@ should run. (This is not needed if <tt class="docutils literal"><span class="pre
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.convert_to_js_arr">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_to_js_arr</tt><big>(</big><em>lst</em>, <em>id_</em><big>)</big><a class="headerlink" href="#django_select2.util.convert_to_js_arr" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_to_js_arr</tt><big>(</big><em>lst</em>, <em>id_</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#convert_to_js_arr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.convert_to_js_arr" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Converts a Python list (or any iterable) to JS array.</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 simple">
|
||||
<li><strong>lst</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt> or Any iterable) – The Python iterable to convert.</li>
|
||||
<li><strong>id</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – The DOM id of the element in which context <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a> functions
|
||||
<li><strong>lst</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a> or Any iterable) – The Python iterable to convert.</li>
|
||||
<li><strong>id</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>) – The DOM id of the element in which context <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a> functions
|
||||
should run. (This is not needed if <tt class="docutils literal"><span class="pre">lst</span></tt> contains no <a class="reference internal" href="#django_select2.util.JSFunctionInContext" title="django_select2.util.JSFunctionInContext"><tt class="xref py py-class docutils literal"><span class="pre">JSFunctionInContext</span></tt></a>)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -203,7 +203,7 @@ should run. (This is not needed if <tt class="docutils literal"><span class="pre
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.convert_to_js_string_arr">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_to_js_string_arr</tt><big>(</big><em>lst</em><big>)</big><a class="headerlink" href="#django_select2.util.convert_to_js_string_arr" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">convert_to_js_string_arr</tt><big>(</big><em>lst</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#convert_to_js_string_arr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.convert_to_js_string_arr" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Converts a Python list (or any iterable) of strings to JS array.</p>
|
||||
<p><a class="reference internal" href="#django_select2.util.convert_to_js_arr" title="django_select2.util.convert_to_js_arr"><tt class="xref py py-func docutils literal"><span class="pre">convert_to_js_arr()</span></tt></a> can always be used instead of this. However, since it
|
||||
knows that it only contains strings, it cuts down on unnecessary computations.</p>
|
||||
|
|
@ -211,7 +211,7 @@ knows that it only contains strings, it cuts down on unnecessary computations.</
|
|||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></td>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -219,21 +219,21 @@ knows that it only contains strings, it cuts down on unnecessary computations.</
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.synchronized">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">synchronized</tt><big>(</big><em>f</em><big>)</big><a class="headerlink" href="#django_select2.util.synchronized" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">synchronized</tt><big>(</big><em>f</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#synchronized"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.synchronized" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Decorator to synchronize multiple calls to a functions.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.is_valid_id">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">is_valid_id</tt><big>(</big><em>val</em><big>)</big><a class="headerlink" href="#django_select2.util.is_valid_id" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">is_valid_id</tt><big>(</big><em>val</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#is_valid_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.is_valid_id" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Checks if <tt class="docutils literal"><span class="pre">val</span></tt> is a valid generated Id.</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"><strong>val</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – The value to check.</td>
|
||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>val</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>) – The value to check.</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><tt class="xref py py-obj docutils literal"><span class="pre">bool</span></tt></td>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#bool" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">bool</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -241,14 +241,14 @@ knows that it only contains strings, it cuts down on unnecessary computations.</
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.register_field">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">register_field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.util.register_field" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">register_field</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#register_field"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.register_field" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Registers an Auto field for use with <a class="reference internal" href="ref_views.html#django_select2.views.AutoResponseView" title="django_select2.views.AutoResponseView"><tt class="xref py py-class docutils literal"><span class="pre">views.AutoResponseView</span></tt></a>.</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 simple">
|
||||
<li><strong>key</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt>) – The key to use while registering this field.</li>
|
||||
<li><strong>key</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a>) – The key to use while registering this field.</li>
|
||||
<li><strong>field</strong> (<tt class="xref py py-class docutils literal"><span class="pre">AutoViewFieldMixin</span></tt>) – The field to register.</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
|
@ -257,7 +257,7 @@ knows that it only contains strings, it cuts down on unnecessary computations.</
|
|||
Id generated that time, would be returned.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -266,13 +266,13 @@ Id generated that time, would be returned.</p>
|
|||
|
||||
<dl class="function">
|
||||
<dt id="django_select2.util.get_field">
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">get_field</tt><big>(</big><em>id_</em><big>)</big><a class="headerlink" href="#django_select2.util.get_field" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descclassname">django_select2.util.</tt><tt class="descname">get_field</tt><big>(</big><em>id_</em><big>)</big><a class="reference internal" href="_modules/django_select2/util.html#get_field"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.util.get_field" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns an Auto field instance registered with the given Id.</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"><strong>id</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt>) – The generated Id the field is registered with.</td>
|
||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>id</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a>) – The generated Id the field is registered with.</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><tt class="xref py py-class docutils literal"><span class="pre">AutoViewFieldMixin</span></tt> or None</td>
|
||||
</tr>
|
||||
|
|
|
|||
28
docs/_build/html/ref_views.html
vendored
28
docs/_build/html/ref_views.html
vendored
|
|
@ -66,7 +66,7 @@
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.views.JSONResponseMixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.views.</tt><tt class="descname">JSONResponseMixin</tt><a class="headerlink" href="#django_select2.views.JSONResponseMixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.views.</tt><tt class="descname">JSONResponseMixin</tt><a class="reference internal" href="_modules/django_select2/views.html#JSONResponseMixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.JSONResponseMixin" 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>A mixin that can be used to render a JSON response.</p>
|
||||
<dl class="attribute">
|
||||
|
|
@ -77,13 +77,13 @@
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.views.JSONResponseMixin.render_to_response">
|
||||
<tt class="descname">render_to_response</tt><big>(</big><em>context</em>, <em>**response_kwargs</em><big>)</big><a class="headerlink" href="#django_select2.views.JSONResponseMixin.render_to_response" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">render_to_response</tt><big>(</big><em>context</em>, <em>**response_kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/views.html#JSONResponseMixin.render_to_response"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.JSONResponseMixin.render_to_response" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns a JSON response, transforming ‘context’ to make the payload.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.views.JSONResponseMixin.convert_context_to_json">
|
||||
<tt class="descname">convert_context_to_json</tt><big>(</big><em>context</em><big>)</big><a class="headerlink" href="#django_select2.views.JSONResponseMixin.convert_context_to_json" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">convert_context_to_json</tt><big>(</big><em>context</em><big>)</big><a class="reference internal" href="_modules/django_select2/views.html#JSONResponseMixin.convert_context_to_json"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.JSONResponseMixin.convert_context_to_json" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Convert the context dictionary into a JSON object</p>
|
||||
</dd></dl>
|
||||
|
||||
|
|
@ -91,8 +91,8 @@
|
|||
|
||||
<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="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>, <tt class="xref py py-class docutils literal"><span class="pre">django.views.generic.base.View</span></tt></p>
|
||||
<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>
|
||||
<p>Base view which is designed to respond with JSON to Ajax queries from heavy widgets/fields.</p>
|
||||
<p>Although the widgets won’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>
|
||||
|
|
@ -102,7 +102,7 @@ sub-class this view instead of creating a Django view from scratch.</p>
|
|||
</div>
|
||||
<dl class="method">
|
||||
<dt id="django_select2.views.Select2View.respond_with_exception">
|
||||
<tt class="descname">respond_with_exception</tt><big>(</big><em>e</em><big>)</big><a class="headerlink" href="#django_select2.views.Select2View.respond_with_exception" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">respond_with_exception</tt><big>(</big><em>e</em><big>)</big><a class="reference internal" href="_modules/django_select2/views.html#Select2View.respond_with_exception"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.Select2View.respond_with_exception" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
|
|
@ -120,7 +120,7 @@ else 400.</td>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.views.Select2View.check_all_permissions">
|
||||
<tt class="descname">check_all_permissions</tt><big>(</big><em>request</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.views.Select2View.check_all_permissions" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">check_all_permissions</tt><big>(</big><em>request</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/views.html#Select2View.check_all_permissions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.Select2View.check_all_permissions" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Sub-classes can use this to raise exception on permission check failures,
|
||||
or these checks can be placed in <tt class="docutils literal"><span class="pre">urls.py</span></tt>, e.g. <tt class="docutils literal"><span class="pre">login_required(SelectClass.as_view())</span></tt>.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
|
|
@ -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> (<tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt>) – The Ajax request object.</li>
|
||||
<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>) – The Ajax request object.</li>
|
||||
<li><strong>args</strong> – 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> – 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>
|
||||
|
|
@ -145,19 +145,19 @@ Http reqeusts to your server, be able to get access to sensitive information.</p
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.views.Select2View.get_results">
|
||||
<tt class="descname">get_results</tt><big>(</big><em>request</em>, <em>term</em>, <em>page</em>, <em>context</em><big>)</big><a class="headerlink" href="#django_select2.views.Select2View.get_results" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">get_results</tt><big>(</big><em>request</em>, <em>term</em>, <em>page</em>, <em>context</em><big>)</big><a class="reference internal" href="_modules/django_select2/views.html#Select2View.get_results"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.Select2View.get_results" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Returns the result for the given search <tt class="docutils literal"><span class="pre">term</span></tt>.</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>request</strong> (<tt class="xref py py-class docutils literal"><span class="pre">django.http.HttpRequest</span></tt>) – The Ajax request object.</li>
|
||||
<li><strong>term</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – The search term.</li>
|
||||
<li><strong>page</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">int</span></tt>) – The page number. If in your last response you had signalled that there are more results,
|
||||
<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>) – 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>) – 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>) – 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
|
||||
number. (Page number starts at 1)</li>
|
||||
<li><strong>context</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt> or None) – <p>Can be anything which persists across the lifecycle of queries for the same search term.
|
||||
<li><strong>context</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> or None) – <p>Can be anything which persists across the lifecycle of queries for the same search term.
|
||||
It is reset to <tt class="docutils literal"><span class="pre">None</span></tt> when the term changes.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
|
|
@ -190,7 +190,7 @@ It is reset to <tt class="docutils literal"><span class="pre">None</span></tt> w
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.views.AutoResponseView">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.views.</tt><tt class="descname">AutoResponseView</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.views.AutoResponseView" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.views.</tt><tt class="descname">AutoResponseView</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/views.html#AutoResponseView"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.views.AutoResponseView" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.views.Select2View" title="django_select2.views.Select2View"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.views.Select2View</span></tt></a></p>
|
||||
<p>A central view meant to respond to Ajax queries for all Heavy widgets/fields.
|
||||
Although it is not mandatory to use, but is immensely helpful.</p>
|
||||
|
|
|
|||
141
docs/_build/html/ref_widgets.html
vendored
141
docs/_build/html/ref_widgets.html
vendored
|
|
@ -60,7 +60,7 @@
|
|||
<p>Contains all the Django widgets for Select2.</p>
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.Select2Mixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">Select2Mixin</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">Select2Mixin</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin" 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>The base mixin of all Select2 widgets.</p>
|
||||
<p>This mixin is responsible for rendering the necessary Javascript and CSS codes which turns normal <tt class="docutils literal"><span class="pre"><select></span></tt>
|
||||
|
|
@ -81,14 +81,14 @@ markups into Select2 choice list.</p>
|
|||
</div>
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.__init__">
|
||||
<tt class="descname">__init__</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.__init__" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">__init__</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.__init__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Constructor of the class.</p>
|
||||
<p>The following additional kwarg is allowed:-</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"><strong>select2_options</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt> or None) – <p>This is similar to standard Django way to pass extra attributes to widgets.
|
||||
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>select2_options</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a> or None) – <p>This is similar to standard Django way to pass extra attributes to widgets.
|
||||
This is meant to override values of existing <a class="reference internal" href="#django_select2.widgets.Select2Mixin.options" title="django_select2.widgets.Select2Mixin.options"><tt class="xref py py-attr docutils literal"><span class="pre">options</span></tt></a>.</p>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="k">class</span> <span class="nc">MyForm</span><span class="p">(</span><span class="n">ModelForm</span><span class="p">):</span>
|
||||
|
|
@ -127,7 +127,7 @@ The complete description of theses options are available in <a class="reference
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.init_options">
|
||||
<tt class="descname">init_options</tt><big>(</big><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.init_options" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">init_options</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.init_options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.init_options" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Sub-classes can use this to pass additional options to Select2 JS library.</p>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">init_options</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -146,21 +146,28 @@ use <a class="reference internal" href="ref_util.html#django_select2.util.JSFunc
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.set_placeholder">
|
||||
<tt class="descname">set_placeholder</tt><big>(</big><em>val</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.set_placeholder" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Placeholder is a value which Select2 JS library shows when nothing is selected. This should be string.
|
||||
:return: None</p>
|
||||
<tt class="descname">set_placeholder</tt><big>(</big><em>val</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.set_placeholder"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.set_placeholder" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Placeholder is a value which Select2 JS library shows when nothing is selected. This should be string.</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">Returns:</th><td class="field-body">None</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.get_options">
|
||||
<tt class="descname">get_options</tt><big>(</big><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.get_options" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">get_options</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.get_options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.get_options" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><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">Returns:</th><td class="field-body">Dictionary of options to be passed to Select2 JS.</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></td>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/stdtypes.html#dict" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">dict</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -168,41 +175,73 @@ use <a class="reference internal" href="ref_util.html#django_select2.util.JSFunc
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.render_select2_options_code">
|
||||
<tt class="descname">render_select2_options_code</tt><big>(</big><em>options</em>, <em>id_</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render_select2_options_code" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders options for Select2 JS.
|
||||
:return: The rendered JS code.
|
||||
:rtype: <tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tt class="descname">render_select2_options_code</tt><big>(</big><em>options</em>, <em>id_</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.render_select2_options_code"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render_select2_options_code" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders options for Select2 JS.</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">Returns:</th><td class="field-body">The rendered JS code.</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.render_js_code">
|
||||
<tt class="descname">render_js_code</tt><big>(</big><em>id_</em>, <em>*args</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render_js_code" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders the <tt class="docutils literal"><span class="pre"><script></span></tt> block which contains the JS code for this widget.
|
||||
:return: The rendered JS code enclosed inside <tt class="docutils literal"><span class="pre"><script></span></tt> block.
|
||||
:rtype: <tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tt class="descname">render_js_code</tt><big>(</big><em>id_</em>, <em>*args</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.render_js_code"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render_js_code" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders the <tt class="docutils literal"><span class="pre"><script></span></tt> block which contains the JS code for this widget.</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">Returns:</th><td class="field-body">The rendered JS code enclosed inside <tt class="docutils literal"><span class="pre"><script></span></tt> block.</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.render_inner_js_code">
|
||||
<tt class="descname">render_inner_js_code</tt><big>(</big><em>id_</em>, <em>*args</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render_inner_js_code" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders all the JS code required for this widget.
|
||||
:return: The rendered JS code which will be later enclosed inside <tt class="docutils literal"><span class="pre"><script></span></tt> block.
|
||||
:rtype: <tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tt class="descname">render_inner_js_code</tt><big>(</big><em>id_</em>, <em>*args</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.render_inner_js_code"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render_inner_js_code" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders all the JS code required for this widget.</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">Returns:</th><td class="field-body">The rendered JS code which will be later enclosed inside <tt class="docutils literal"><span class="pre"><script></span></tt> block.</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.Select2Mixin.render">
|
||||
<tt class="descname">render</tt><big>(</big><em>name</em>, <em>value</em>, <em>attrs=None</em>, <em>choices=()</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders this widget. Html and JS code blocks all are rendered by this.
|
||||
:return: The rendered markup.
|
||||
:rtype: <tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tt class="descname">render</tt><big>(</big><em>name</em>, <em>value</em>, <em>attrs=None</em>, <em>choices=()</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Mixin.render"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Mixin.render" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders this widget. Html and JS code blocks all are rendered by this.</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">Returns:</th><td class="field-body">The rendered markup.</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.Select2Widget">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">Select2Widget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2Widget" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">Select2Widget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2Widget"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2Widget" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.widgets.Select2Mixin" title="django_select2.widgets.Select2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.Select2Mixin</span></tt></a>, <tt class="xref py py-class docutils literal"><span class="pre">django.forms.widgets.Select</span></tt></p>
|
||||
<p>Drop-in Select2 replacement for <tt class="xref py py-class docutils literal"><span class="pre">forms.Select</span></tt>.</p>
|
||||
<p>Following Select2 option from <a class="reference internal" href="#django_select2.widgets.Select2Mixin.options" title="django_select2.widgets.Select2Mixin.options"><tt class="xref py py-attr docutils literal"><span class="pre">Select2Mixin.options</span></tt></a> is removed:-</p>
|
||||
|
|
@ -215,7 +254,7 @@ use <a class="reference internal" href="ref_util.html#django_select2.util.JSFunc
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.Select2MultipleWidget">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">Select2MultipleWidget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.Select2MultipleWidget" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">Select2MultipleWidget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#Select2MultipleWidget"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.Select2MultipleWidget" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.widgets.Select2Mixin" title="django_select2.widgets.Select2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.Select2Mixin</span></tt></a>, <tt class="xref py py-class docutils literal"><span class="pre">django.forms.widgets.SelectMultiple</span></tt></p>
|
||||
<p>Drop-in Select2 replacement for <tt class="xref py py-class docutils literal"><span class="pre">forms.SelectMultiple</span></tt>.</p>
|
||||
<p>Following Select2 options from <a class="reference internal" href="#django_select2.widgets.Select2Mixin.options" title="django_select2.widgets.Select2Mixin.options"><tt class="xref py py-attr docutils literal"><span class="pre">Select2Mixin.options</span></tt></a> are removed:-</p>
|
||||
|
|
@ -230,7 +269,7 @@ use <a class="reference internal" href="ref_util.html#django_select2.util.JSFunc
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.MultipleSelect2HiddenInput">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">MultipleSelect2HiddenInput</tt><big>(</big><em>attrs=None</em><big>)</big><a class="headerlink" href="#django_select2.widgets.MultipleSelect2HiddenInput" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">MultipleSelect2HiddenInput</tt><big>(</big><em>attrs=None</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#MultipleSelect2HiddenInput"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.MultipleSelect2HiddenInput" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">django.forms.widgets.TextInput</span></tt></p>
|
||||
<p>Multiple hidden input for Select2.</p>
|
||||
<p>This is a specialized multiple Hidden Input widget. This includes a special
|
||||
|
|
@ -245,7 +284,7 @@ would be available as list.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.HeavySelect2Mixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">HeavySelect2Mixin</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">HeavySelect2Mixin</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#HeavySelect2Mixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.widgets.Select2Mixin" title="django_select2.widgets.Select2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.Select2Mixin</span></tt></a></p>
|
||||
<p>The base mixin of all Heavy Select2 widgets. It sub-classes <a class="reference internal" href="#django_select2.widgets.Select2Mixin" title="django_select2.widgets.Select2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">Select2Mixin</span></tt></a>.</p>
|
||||
<p>This mixin adds more Select2 options to <a class="reference internal" href="#django_select2.widgets.Select2Mixin.options" title="django_select2.widgets.Select2Mixin.options"><tt class="xref py py-attr docutils literal"><span class="pre">Select2Mixin.options</span></tt></a>. These are:-</p>
|
||||
|
|
@ -274,7 +313,7 @@ would be available as list.</p>
|
|||
</div>
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.HeavySelect2Mixin.__init__">
|
||||
<tt class="descname">__init__</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin.__init__" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">__init__</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#HeavySelect2Mixin.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin.__init__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Constructor of the class.</p>
|
||||
<p>The following kwargs are allowed:-</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
|
|
@ -283,7 +322,7 @@ would be available as list.</p>
|
|||
<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) – 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’s Ajax queries.</li>
|
||||
<li><strong>data_url</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt> or None) – Url which will respond to Ajax queries with JSON object.</li>
|
||||
<li><strong>data_url</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> or None) – Url which will respond to Ajax queries with JSON object.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -292,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
|
||||
<tt class="xref py py-func docutils literal"><span class="pre">reverse()</span></tt>.</p>
|
||||
<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>
|
||||
</div>
|
||||
<div class="admonition warning">
|
||||
<p class="first admonition-title">Warning</p>
|
||||
|
|
@ -304,7 +343,7 @@ be raised.</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>choices</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt> or <tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt>) – The list of available choices. If not provided then empty list is used instead. It
|
||||
<li><strong>choices</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a> or <a class="reference external" href="http://docs.python.org/2.7/library/functions.html#tuple" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt></a>) – The list of available choices. If not provided then empty list is used instead. It
|
||||
should be of the form – <tt class="docutils literal"><span class="pre">[(val1,</span> <span class="pre">'Label1'),</span> <span class="pre">(val2,</span> <span class="pre">'Label2'),</span> <span class="pre">...]</span></tt>.</li>
|
||||
<li><strong>userGetValTextFuncName</strong> – <p>The name of the custom JS function which you want to use to convert
|
||||
value to label.</p>
|
||||
|
|
@ -330,15 +369,15 @@ when browser is closed.</p>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.HeavySelect2Mixin.render_texts">
|
||||
<tt class="descname">render_texts</tt><big>(</big><em>selected_choices</em>, <em>choices</em><big>)</big><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin.render_texts" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">render_texts</tt><big>(</big><em>selected_choices</em>, <em>choices</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#HeavySelect2Mixin.render_texts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin.render_texts" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders a JS array with labels for the <tt class="docutils literal"><span class="pre">selected_choices</span></tt>.</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 simple">
|
||||
<li><strong>selected_choices</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt> or <tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt>) – List of selected choices’ values.</li>
|
||||
<li><strong>choices</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt> or <tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt>) – Extra choices, if any. This is a list of tuples. In each tuple, the first
|
||||
<li><strong>selected_choices</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a> or <a class="reference external" href="http://docs.python.org/2.7/library/functions.html#tuple" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt></a>) – List of selected choices’ values.</li>
|
||||
<li><strong>choices</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a> or <a class="reference external" href="http://docs.python.org/2.7/library/functions.html#tuple" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt></a>) – Extra choices, if any. This is a list of tuples. In each tuple, the first
|
||||
item is the choice value and the second item is choice label.</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
|
@ -346,7 +385,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The rendered JS array code.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -355,7 +394,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.HeavySelect2Mixin.render_texts_for_value">
|
||||
<tt class="descname">render_texts_for_value</tt><big>(</big><em>id_</em>, <em>value</em>, <em>choices</em><big>)</big><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin.render_texts_for_value" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">render_texts_for_value</tt><big>(</big><em>id_</em>, <em>value</em>, <em>choices</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#HeavySelect2Mixin.render_texts_for_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.HeavySelect2Mixin.render_texts_for_value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders the JS code which sets the <tt class="docutils literal"><span class="pre">txt</span></tt> attribute on the field. It gets the array
|
||||
of lables from <a class="reference internal" href="#django_select2.widgets.HeavySelect2Mixin.render_texts" title="django_select2.widgets.HeavySelect2Mixin.render_texts"><tt class="xref py py-meth docutils literal"><span class="pre">render_texts()</span></tt></a>.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
|
|
@ -363,9 +402,9 @@ of lables from <a class="reference internal" href="#django_select2.widgets.Heavy
|
|||
<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>id</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – Id of the field. This can be used to get reference of this field’s DOM in JS.</li>
|
||||
<li><strong>id</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>) – Id of the field. This can be used to get reference of this field’s DOM in JS.</li>
|
||||
<li><strong>value</strong> (<em>Any</em>) – Currently set value on the field.</li>
|
||||
<li><strong>choices</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt> or <tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt>) – Extra choices, if any. This is a list of tuples. In each tuple, the first
|
||||
<li><strong>choices</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a> or <a class="reference external" href="http://docs.python.org/2.7/library/functions.html#tuple" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt></a>) – Extra choices, if any. This is a list of tuples. In each tuple, the first
|
||||
item is the choice value and the second item is choice label.</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
|
@ -373,7 +412,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">JS code which sets the <tt class="docutils literal"><span class="pre">txt</span></tt> attribute.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -384,7 +423,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.HeavySelect2Widget">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">HeavySelect2Widget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.HeavySelect2Widget" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">HeavySelect2Widget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#HeavySelect2Widget"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.HeavySelect2Widget" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.widgets.HeavySelect2Mixin" title="django_select2.widgets.HeavySelect2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.HeavySelect2Mixin</span></tt></a>, <tt class="xref py py-class docutils literal"><span class="pre">django.forms.widgets.TextInput</span></tt></p>
|
||||
<p>Single selection heavy widget.</p>
|
||||
<p>Following Select2 option from <a class="reference internal" href="#django_select2.widgets.Select2Mixin.options" title="django_select2.widgets.Select2Mixin.options"><tt class="xref py py-attr docutils literal"><span class="pre">Select2Mixin.options</span></tt></a> is added or set:-</p>
|
||||
|
|
@ -397,7 +436,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.HeavySelect2MultipleWidget">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">HeavySelect2MultipleWidget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.HeavySelect2MultipleWidget" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">HeavySelect2MultipleWidget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#HeavySelect2MultipleWidget"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.HeavySelect2MultipleWidget" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.widgets.HeavySelect2Mixin" title="django_select2.widgets.HeavySelect2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.HeavySelect2Mixin</span></tt></a>, <a class="reference internal" href="#django_select2.widgets.MultipleSelect2HiddenInput" title="django_select2.widgets.MultipleSelect2HiddenInput"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.MultipleSelect2HiddenInput</span></tt></a></p>
|
||||
<p>Multiple selection heavy widget.</p>
|
||||
<p>Following Select2 options from <a class="reference internal" href="#django_select2.widgets.Select2Mixin.options" title="django_select2.widgets.Select2Mixin.options"><tt class="xref py py-attr docutils literal"><span class="pre">Select2Mixin.options</span></tt></a> are removed:-</p>
|
||||
|
|
@ -416,7 +455,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
</div></blockquote>
|
||||
<dl class="method">
|
||||
<dt id="django_select2.widgets.HeavySelect2MultipleWidget.render_texts_for_value">
|
||||
<tt class="descname">render_texts_for_value</tt><big>(</big><em>id_</em>, <em>value</em>, <em>choices</em><big>)</big><a class="headerlink" href="#django_select2.widgets.HeavySelect2MultipleWidget.render_texts_for_value" title="Permalink to this definition">¶</a></dt>
|
||||
<tt class="descname">render_texts_for_value</tt><big>(</big><em>id_</em>, <em>value</em>, <em>choices</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#HeavySelect2MultipleWidget.render_texts_for_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.HeavySelect2MultipleWidget.render_texts_for_value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Renders the JS code which sets the <tt class="docutils literal"><span class="pre">txt</span></tt> attribute on the field. It gets the array
|
||||
of lables from <a class="reference internal" href="#django_select2.widgets.HeavySelect2Mixin.render_texts" title="django_select2.widgets.HeavySelect2Mixin.render_texts"><tt class="xref py py-meth docutils literal"><span class="pre">render_texts()</span></tt></a>.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
|
|
@ -424,9 +463,9 @@ of lables from <a class="reference internal" href="#django_select2.widgets.Heavy
|
|||
<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>id</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">str</span></tt>) – Id of the field. This can be used to get reference of this field’s DOM in JS.</li>
|
||||
<li><strong>value</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt>) – <strong>List</strong> of currently set value on the field.</li>
|
||||
<li><strong>choices</strong> (<tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt> or <tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt>) – Extra choices, if any. This is a list of tuples. In each tuple, the first
|
||||
<li><strong>id</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>) – Id of the field. This can be used to get reference of this field’s DOM in JS.</li>
|
||||
<li><strong>value</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a>) – <strong>List</strong> of currently set value on the field.</li>
|
||||
<li><strong>choices</strong> (<a class="reference external" href="http://docs.python.org/2.7/library/functions.html#list" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">list</span></tt></a> or <a class="reference external" href="http://docs.python.org/2.7/library/functions.html#tuple" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">tuple</span></tt></a>) – Extra choices, if any. This is a list of tuples. In each tuple, the first
|
||||
item is the choice value and the second item is choice label.</li>
|
||||
</ul>
|
||||
</td>
|
||||
|
|
@ -434,7 +473,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">JS code which sets the <tt class="docutils literal"><span class="pre">txt</span></tt> attribute.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></p>
|
||||
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="http://docs.python.org/2.7/library/functions.html#unicode" title="(in Python v2.7)"><tt class="xref py py-obj docutils literal"><span class="pre">unicode</span></tt></a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -445,7 +484,7 @@ item is the choice value and the second item is choice label.</li>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.AutoHeavySelect2Mixin">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">AutoHeavySelect2Mixin</tt><a class="headerlink" href="#django_select2.widgets.AutoHeavySelect2Mixin" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">AutoHeavySelect2Mixin</tt><a class="reference internal" href="_modules/django_select2/widgets.html#AutoHeavySelect2Mixin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.AutoHeavySelect2Mixin" 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>This mixin is needed for Auto heavy fields.</p>
|
||||
<p>This mxin adds extra JS code to notify the field’s DOM object of the generated id. The generated id
|
||||
|
|
@ -457,14 +496,14 @@ serve the request.</p>
|
|||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.AutoHeavySelect2Widget">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">AutoHeavySelect2Widget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.AutoHeavySelect2Widget" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">AutoHeavySelect2Widget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#AutoHeavySelect2Widget"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.AutoHeavySelect2Widget" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.widgets.AutoHeavySelect2Mixin" title="django_select2.widgets.AutoHeavySelect2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.AutoHeavySelect2Mixin</span></tt></a>, <a class="reference internal" href="#django_select2.widgets.HeavySelect2Widget" title="django_select2.widgets.HeavySelect2Widget"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.HeavySelect2Widget</span></tt></a></p>
|
||||
<p>Auto version of <a class="reference internal" href="#django_select2.widgets.HeavySelect2Widget" title="django_select2.widgets.HeavySelect2Widget"><tt class="xref py py-class docutils literal"><span class="pre">HeavySelect2Widget</span></tt></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="django_select2.widgets.AutoHeavySelect2MultipleWidget">
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">AutoHeavySelect2MultipleWidget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="headerlink" href="#django_select2.widgets.AutoHeavySelect2MultipleWidget" title="Permalink to this definition">¶</a></dt>
|
||||
<em class="property">class </em><tt class="descclassname">django_select2.widgets.</tt><tt class="descname">AutoHeavySelect2MultipleWidget</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/django_select2/widgets.html#AutoHeavySelect2MultipleWidget"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#django_select2.widgets.AutoHeavySelect2MultipleWidget" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="#django_select2.widgets.AutoHeavySelect2Mixin" title="django_select2.widgets.AutoHeavySelect2Mixin"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.AutoHeavySelect2Mixin</span></tt></a>, <a class="reference internal" href="#django_select2.widgets.HeavySelect2MultipleWidget" title="django_select2.widgets.HeavySelect2MultipleWidget"><tt class="xref py py-class docutils literal"><span class="pre">django_select2.widgets.HeavySelect2MultipleWidget</span></tt></a></p>
|
||||
<p>Auto version of <a class="reference internal" href="#django_select2.widgets.HeavySelect2MultipleWidget" title="django_select2.widgets.HeavySelect2MultipleWidget"><tt class="xref py py-class docutils literal"><span class="pre">HeavySelect2MultipleWidget</span></tt></a></p>
|
||||
</dd></dl>
|
||||
|
|
|
|||
2
docs/_build/html/searchindex.js
vendored
2
docs/_build/html/searchindex.js
vendored
File diff suppressed because one or more lines are too long
BIN
testapp/test.db
BIN
testapp/test.db
Binary file not shown.
|
|
@ -30,12 +30,32 @@ class DeptForm(forms.ModelForm):
|
|||
class Meta:
|
||||
model = Dept
|
||||
|
||||
class SelfChoices(AutoSelect2Field):
|
||||
def get_results(self, request, term, page, context):
|
||||
res = []
|
||||
for i in range(1, 6):
|
||||
res.append((i, term * i,))
|
||||
self.choices = res
|
||||
|
||||
return (NO_ERR_RESP, False, res)
|
||||
|
||||
class SelfMultiChoices(AutoSelect2MultipleField):
|
||||
def get_results(self, request, term, page, context):
|
||||
res = []
|
||||
for i in range(1, 6):
|
||||
res.append((i, term * i,))
|
||||
self.choices = res
|
||||
|
||||
return (NO_ERR_RESP, False, res)
|
||||
|
||||
class MixedForm(forms.Form):
|
||||
emp1 = EmployeeChoices()
|
||||
rooms1 = ClassRoomChoices()
|
||||
emp2 = EmployeeChoices()
|
||||
rooms2 = ClassRoomChoices()
|
||||
rooms3 = ClassRoomSingleChoices()
|
||||
self_choices = SelfChoices(label='Self copy choices')
|
||||
self_multi_choices = SelfMultiChoices(label='Self copy multi-choices')
|
||||
|
||||
# These are just for testing Auto registration of fields
|
||||
EmployeeChoices() # Should already be registered
|
||||
|
|
|
|||
|
|
@ -44,7 +44,12 @@ def test_multi_values_model_field1(request, id):
|
|||
return render_to_response('form.html', RequestContext(request, {'form': form}))
|
||||
|
||||
def test_mixed_form(request):
|
||||
return render_to_response('form.html', RequestContext(request, {'form': MixedForm()}))
|
||||
if request.POST:
|
||||
form = MixedForm(request.POST)
|
||||
form.is_valid()
|
||||
else:
|
||||
form = MixedForm()
|
||||
return render_to_response('form.html', RequestContext(request, {'form': form}))
|
||||
|
||||
|
||||
def test_init_values(request):
|
||||
|
|
|
|||
Loading…
Reference in a new issue