2012-08-31 19:47:08 +00:00
< !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" / >
2012-10-04 17:53:21 +00:00
< title > django_select2.widgets — Django-Select2 3.1.2 documentation< / title >
2012-08-31 19:47:08 +00:00
< 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: '../../',
2012-10-04 17:53:21 +00:00
VERSION: '3.1.2',
2012-08-31 19:47:08 +00:00
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 >
2012-10-04 17:53:21 +00:00
< link rel = "top" title = "Django-Select2 3.1.2 documentation" href = "../../index.html" / >
2012-08-31 19:47:08 +00:00
< 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 >
2012-10-04 17:53:21 +00:00
< li > < a href = "../../index.html" > Django-Select2 3.1.2 documentation< / a > » < / li >
2012-08-31 19:47:08 +00:00
< 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 >
2012-09-05 06:46:48 +00:00
< span class = "k" > def< / span > < span class = "nf" > get_select2_js_path< / span > < span class = "p" > ():< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.conf< / span > < span class = "kn" > import< / span > < span class = "n" > settings< / span >
< span class = "k" > if< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > configured< / span > < span class = "ow" > and< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > DEBUG< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "s" > ' js/select2.js' < / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "s" > ' js/select2.min.js' < / span >
2012-08-31 19:47:08 +00:00
< 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 >
2012-09-05 06:46:48 +00:00
< span class = "n" > js< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > get_select2_js_path< / span > < span class = "p" > (),< / span > < span class = "p" > )< / span >
2012-08-31 19:47:08 +00:00
< 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 >
2012-09-10 06:32:58 +00:00
< span class = "sd" > :type data_view: :py:class:`django.views.generic.base.View` or None< / span >
2012-08-31 19:47:08 +00:00
< 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 >
2012-09-05 06:46:48 +00:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > =< / span > < span class = "bp" > None< / span >
2012-08-31 19:47:08 +00:00
< 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 >
2012-09-05 06:46:48 +00:00
< span class = "n" > selected_choices< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > v< / span > < span class = "k" > for< / span > < span class = "n" > v< / span > < span class = "ow" > in< / span > < span class = "n" > selected_choices< / span > < span class = "k" > if< / span > < span class = "n" > v< / span > < span class = "o" > !=< / span > < span class = "n" > val< / span > < span class = "p" > ]< / span >
2012-08-31 19:47:08 +00:00
< 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 >
2012-09-05 06:46:48 +00:00
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "p" > ,< / span > < span class = "s" > ' _get_val_txt' < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "n" > selected_choices< / span > < span class = "p" > :< / span >
< span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "n" > selected_choices< / span > < span class = "p" > :< / span >
< span class = "n" > txt< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > _get_val_txt< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > txt< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "bp" > None< / span > < span class = "p" > :< / span >
< span class = "n" > txts< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > txt< / span > < span class = "p" > )< / span >
2012-08-31 19:47:08 +00:00
< 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 >
2012-09-05 06:46:48 +00:00
< span class = "n" > js< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > get_select2_js_path< / span > < span class = "p" > (),< / span > < span class = "s" > ' js/heavy_data.js' < / span > < span class = "p" > ,< / span > < span class = "p" > )< / span >
2012-08-31 19:47:08 +00:00
< 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 >
2012-10-04 17:53:21 +00:00
< li > < a href = "../../index.html" > Django-Select2 3.1.2 documentation< / a > » < / li >
2012-08-31 19:47:08 +00:00
< 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 >