diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-02-01 14:44:38 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-02-01 14:44:38 +0100 | 
| commit | 6e76724c700da8a77cc64c96262c6a685ad5382b (patch) | |
| tree | 2f72b6a7238cb9ca83fa7675b3ee27f747a05628 /ishtar/furnitures/widgets.py | |
| parent | 989c625b2b4f580822c0e59146d36e66342accea (diff) | |
| download | Ishtar-6e76724c700da8a77cc64c96262c6a685ad5382b.tar.bz2 Ishtar-6e76724c700da8a77cc64c96262c6a685ad5382b.zip | |
Better management of CSV files (refs #159) and grids
Diffstat (limited to 'ishtar/furnitures/widgets.py')
| -rw-r--r-- | ishtar/furnitures/widgets.py | 37 | 
1 files changed, 16 insertions, 21 deletions
| diff --git a/ishtar/furnitures/widgets.py b/ishtar/furnitures/widgets.py index 932770f29..439eb81fa 100644 --- a/ishtar/furnitures/widgets.py +++ b/ishtar/furnitures/widgets.py @@ -129,22 +129,14 @@ class JQueryJqGrid(forms.RadioSelect):               ]
          css = {'all':['%s/media/ui.jqgrid.css' % settings.MEDIA_URL]}
 -    def __init__(self, source, form, cols, attrs={}):
 +    def __init__(self, source, form, associated_model, attrs={}):
          self.source = source
          self.form = form
          self.attrs = attrs
 -        self.cols = cols
 +        self.associated_model = associated_model
      def render(self, name, value=None, attrs=None):
          rendered = unicode(self.form)
 -        """
 -        for k in self.form.fields:
 -            field = self.form.fields[k]
 -            print unicode(field)
 -            print field.label_tag
 -            rendered += u"<tr><td>%s</td><td>%s</td></tr>" % (field.label_tag,
 -                                                              unicode(field))
 -           """
          rendered += """
  </table>
  <button id='search_%s' class='submit'>%s</button>
 @@ -155,12 +147,16 @@ class JQueryJqGrid(forms.RadioSelect):          for k in self.form.fields:
              field = self.form.fields[k]
              col_idx.append(u'"%s"' % k)
 -            if k in self.cols:
 -                col_names.append(u'"%s"' % field.label)
 -                extra_cols.append(self.COL_TPL % {'idx':k})
 -        col_names = col_names and ",".join([""]+col_names) or ""
 -        col_idx = col_idx and ",".join(col_idx) or ""
 -        extra_cols = extra_cols and ",".join([""]+extra_cols) or ""
 +        for field_name in self.associated_model.TABLE_COLS:
 +            try:
 +                field = self.associated_model._meta.get_field(field_name)
 +            except:
 +                continue
 +            col_names.append(u'"%s"' % field.verbose_name)
 +            extra_cols.append(self.COL_TPL % {'idx':field.name})
 +        col_names = col_names and ",\n".join(col_names) or ""
 +        col_idx = col_idx and ",\n".join(col_idx) or ""
 +        extra_cols = extra_cols and ",\n".join(extra_cols) or ""
          rendered += """<table id="grid_%s" class='jqgrid'></table>
  <div id="pager_%s"></div>
  """ % (name, name)
 @@ -199,10 +195,10 @@ jQuery("#grid_%(name)s").jqGrid({      url:'%(source)s',
      datatype: "json",
      mtype: 'GET',
 -    colNames:['id', '%(name_label)s'%(col_names)s],
 +    colNames:['id', %(col_names)s],
      colModel:[
  {name:'id', index:'id', hidden:true},
 -{name:'value', index:'value'}%(extra_cols)s
 +%(extra_cols)s
      ],
      sortname: 'value',
      viewrecords: true,
 @@ -217,8 +213,7 @@ jQuery("#grid_%(name)s").jqGrid({  });
  </script>
  """ % {'name':name, 'col_names':col_names, 'extra_cols':extra_cols,
 -       'name_label':unicode(_("Name")), 'source':unicode(self.source),
 -       'col_idx':col_idx, 'no_result':unicode(_("No results")),
 -       'loading':unicode(_("Loading..."))}
 +       'source':unicode(self.source), 'col_idx':col_idx,
 +       'no_result':unicode(_("No results")), 'loading':unicode(_("Loading..."))}
          return rendered
 | 
