diff options
Diffstat (limited to 'ishtar_common/widgets.py')
| -rw-r--r-- | ishtar_common/widgets.py | 62 | 
1 files changed, 37 insertions, 25 deletions
| diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 509907034..2aa9b12f6 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -525,34 +525,46 @@ class JQueryJqGrid(forms.RadioSelect):          self.source_full = source_full      def get_cols(self): -        col_names, extra_cols = [], [] -        for field_name in getattr(self.associated_model, self.table_cols): -            field = self.associated_model -            if type(field_name) in (list, tuple): -                field_name = field_name[0] +        jq_col_names, extra_cols = [], [] +        col_labels = {} +        if hasattr(self.associated_model, self.table_cols + '_LBL'): +            col_labels = getattr(self.associated_model, +                                 self.table_cols + '_LBL') +        for col_names in getattr(self.associated_model, self.table_cols):              field_verbose_names = [] -            keys = field_name.split('.') -            field_verbose_name = "" -            for key in keys: -                if hasattr(field, 'rel') and field.rel: -                    field = field.rel.to -                try: -                    field = field._meta.get_field(key) -                    field_verbose_name = field.verbose_name -                    field_name = field.name -                except (fields.FieldDoesNotExist, AttributeError): -                    if hasattr(field, key + '_lbl'): -                        field_name = key -                        field_verbose_name = getattr(field, key + '_lbl') -                    else: -                        continue -            field_verbose_names.append(unicode(field_verbose_name)) -            col_names.append(u'"%s"' % settings.JOINT.join( -                [f for f in field_verbose_names if f])) +            field_verbose_name, field_name = "", "" +            if type(col_names) not in (list, tuple): +                col_names = [col_names] +            for col_name in col_names: +                field = self.associated_model +                keys = col_name.split('.') +                f_name = '' +                for key in keys: +                    if hasattr(field, 'rel') and field.rel: +                        field = field.rel.to +                    try: +                        field = field._meta.get_field(key) +                        field_verbose_name = field.verbose_name +                        f_name = field.name +                    except (fields.FieldDoesNotExist, AttributeError): +                        if hasattr(field, key + '_lbl'): +                            f_name = key +                            field_verbose_name = getattr(field, key + '_lbl') +                        else: +                            continue +                if field_name: +                    field_name += "__" +                field_name += f_name +                field_verbose_names.append(unicode(field_verbose_name)) +            if field_name in col_labels: +                jq_col_names.append(u'"%s"' % unicode(col_labels[field_name])) +            else: +                jq_col_names.append(u'"%s"' % settings.JOINT.join( +                    [f for f in field_verbose_names if f]))              extra_cols.append(self.COL_TPL % {'idx': field_name}) -        col_names = col_names and ", ".join(col_names) or "" +        jq_col_names = jq_col_names and ", ".join(jq_col_names) or ""          extra_cols = extra_cols and ", ".join(extra_cols) or "" -        return col_names, extra_cols +        return jq_col_names, extra_cols      def render(self, name, value=None, attrs=None):          t = loader.get_template('blocks/form_snippet.html') | 
