diff options
Diffstat (limited to 'ishtar_common/widgets.py')
| -rw-r--r-- | ishtar_common/widgets.py | 107 | 
1 files changed, 30 insertions, 77 deletions
| diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 1ddabe7c7..a9fcdf798 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -251,16 +251,18 @@ class Select2MultipleField(forms.MultipleChoiceField):  class DeleteWidget(forms.CheckboxInput):      def render(self, name, value, attrs=None, renderer=None):          final_attrs = flatatt( -            self.build_attrs(attrs, {"name": name, "value": '1'})) -        output = ['<tr class="delete"><td colspan="2">'] -        output.append(u"<button%s>%s</button>" % (final_attrs, _("Delete"))) -        output.append('</td></tr>') -        return mark_safe('\n'.join(output)) +            self.build_attrs( +                attrs, {"name": name, "value": '1', +                        'class': "btn btn-danger"}) +        ) +        output = u"<button%s>%s</button>" % (final_attrs, _("Delete")) + +        return mark_safe(output)  class ImageFileInput(ClearableFileInput): -    template_with_initial = u'<span class="prettyPhoto">%(initial)s</span>'\ -        u' %(clear_template)s<br />%(input_text)s: %(input)s' +    template_name = 'widgets/image_input.html' +    NO_FORM_CONTROL = True  class SquareMeterWidget(forms.TextInput): @@ -277,53 +279,13 @@ class SquareMeterWidget(forms.TextInput):          rendered = t.render(dct)          return mark_safe(rendered) +  AreaWidget = forms.TextInput  if settings.SURFACE_UNIT == 'square-metre':      AreaWidget = SquareMeterWidget -class JQueryDate(forms.TextInput): -    def __init__(self, *args, **kwargs): -        super(JQueryDate, self).__init__(*args, **kwargs) -        if 'class' not in self.attrs: -            self.attrs['class'] = '' -        self.attrs['class'] = 'date-pickup' - -    def render(self, name, value, attrs=None, renderer=None): -        if value: -            value = unicode(value) -        # very specific... -        if settings.COUNTRY == 'fr' and value and '/' in value: -            values = value.split('/') -            if len(values) == 3: -                value = "%s-%s-%s" % (values[2], values[1], values[0]) -        if not attrs: -            attrs = {} -        attrs['autocomplete'] = 'off' -        rendered = super(JQueryDate, self).render(name, value, attrs) -        # use window.onload to be sure that datepicker don't interfere -        # with autocomplete fields -        var_name = name.replace('-', '_') -        rendered += """ -<script type="text/javascript"><!--// -    function load_jquerydate_%(var_name)s(){ -        $(".date-pickup").datepicker($.datepicker.regional["%(country)s"]); -        var val = $("#id_%(name)s").val(); -        if(val){ -            var dt = $.datepicker.parseDate('yy-mm-dd', val); -            val = $.datepicker.formatDate( -                    $.datepicker.regional["%(country)s"]['dateFormat'], -                    dt); -            $("#id_%(name)s").val(val); -        } -    } -    $(window).load(load_jquerydate_%(var_name)s); -//--></script> -""" % {"name": name, "var_name": var_name, "country": settings.COUNTRY} -        return rendered - -  class JQueryAutoComplete(forms.TextInput):      def __init__(self, source, associated_model=None, options=None, attrs=None,                   new=False, url_new='', multiple=False, limit=None, @@ -424,8 +386,12 @@ class JQueryAutoComplete(forms.TextInput):              attrs_select['id'] = 'id_select_%s' % name          if 'class' not in attrs_select:              attrs_select['class'] = 'autocomplete' + +        attrs_select['class'] += ' form-control'          new = '' +        html = u""          if self.new: +            html = u"<div class='input-group'>"              model_name = self.associated_model._meta.object_name.lower()              limits = []              for k in self.limit: @@ -438,13 +404,14 @@ class JQueryAutoComplete(forms.TextInput):              if self.url_new:                  url_new = self.url_new              url_new = reverse(url_new, args=args) -            new = u'  <a href="#" class="add-button" '\ -                  u'onclick="open_window(\'%s\');">+</a>' % url_new -        html = u'''<input%(attrs_select)s/>%(new)s\ +            new = u'<span class="input-group-append">'\ +                  u'<a href="#" class="add-button input-group-text" '\ +                  u'onclick="open_window(\'%s\');">+</a></span></div>' % url_new +        html += u"""<input%(attrs_select)s/>%(new)s\  <input type="hidden"%(attrs_hidden)s/>\          <script type="text/javascript"><!--//          %(js)s//--></script> -        ''' % { +        """ % {              'attrs_select': flatatt(attrs_select),              'attrs_hidden': flatatt(attrs_hidden),              'js': self.render_js(name), @@ -651,22 +618,14 @@ class JQueryPersonOrganization(forms.TextInput):          return html -class JQueryJqGrid(forms.RadioSelect): -    COL_TPL = "{name:'%(idx)s', index:'%(idx)s', sortable:true}" - -    # class Media: -    #    js = ['%s/js/i18n/grid.locale-%s.js' % (settings.STATIC_URL, -    #                                            settings.COUNTRY), -    #          '%s/js/jquery.jqGrid.min.js' % settings.STATIC_URL] -    #    css = {'all': ['%s/media/ui.jqgrid.css' % settings.STATIC_URL]} - +class DataTable(forms.RadioSelect):      def __init__(self, source, form, associated_model, attrs={},                   table_cols='TABLE_COLS', multiple=False, multiple_cols=[2],                   new=False, new_message="", source_full=None,                   multiple_select=False, sortname="__default__",                   col_prefix=''):          """ -        JQueryJqGrid widget init. +        DataTable widget init.          :param source: url to get the item from -- get_item          :param form: @@ -682,7 +641,7 @@ class JQueryJqGrid(forms.RadioSelect):          :param sortname: column name (model attribute) to use to sort          :param col_prefix: prefix to remove to col_names          """ -        super(JQueryJqGrid, self).__init__(attrs=attrs) +        super(DataTable, self).__init__(attrs=attrs)          self.source = source          self.form = form          if not attrs: @@ -742,21 +701,14 @@ class JQueryJqGrid(forms.RadioSelect):              else:                  jq_col_names.append(settings.JOINT.join(                      [f for f in field_verbose_names if f])) -            if not python: -                jq_col_names[-1] = u'"%s"' % jq_col_names[-1] -            if python: -                extra_cols.append(field_name) -            else: -                extra_cols.append(self.COL_TPL % {'idx': field_name}) -        if not python: -            jq_col_names = jq_col_names and ", ".join(jq_col_names) or "" -            extra_cols = extra_cols and ", ".join(extra_cols) or "" +            extra_cols.append(field_name)          return jq_col_names, extra_cols      def render(self, name, value, attrs=None, renderer=None): -        t = loader.get_template('blocks/form_flex_snippet.html') +        # t = loader.get_template('blocks/form_flex_snippet.html') +        t = loader.get_template('blocks/bs_form_snippet.html')          form = self.form() -        rendered = t.render({'form': form, 'flex': True}) +        rendered = t.render({'form': form, 'search': True})          dct = {}          if self.new:              model_name = self.associated_model._meta.object_name.lower() @@ -792,10 +744,11 @@ class JQueryJqGrid(forms.RadioSelect):                  dct['extra_sources'].append((                      imp.slug, imp.name,                      reverse('get-by-importer', args=[imp.slug]))) +        source = unicode(self.source)          dct.update({'name': name,                      'col_names': col_names,                      'extra_cols': extra_cols, -                    'source': unicode(self.source), +                    'source': source,                      'col_idx': col_idx,                      'no_result': unicode(_("No results")),                      'loading': unicode(_("Loading...")), @@ -804,7 +757,7 @@ class JQueryJqGrid(forms.RadioSelect):                      'multiple': self.multiple,                      'multiple_select': self.multiple_select,                      'multi_cols': ",".join((u'"%d"' % col -                                           for col in self.multiple_cols))}) -        t = loader.get_template('blocks/JQueryJqGrid.html') +                                            for col in self.multiple_cols))}) +        t = loader.get_template('blocks/DataTables.html')          rendered += t.render(dct)          return mark_safe(rendered) | 
