1 from unfold.plugin import Plugin
3 from django.template.loader import render_to_string
5 # XXX We need naming helpers in the python Plugin class also, used in template
7 class ColumnsEditor(Plugin):
8 def __init__ (self, query, query_all = None, **settings):
9 Plugin.__init__ (self, **settings)
11 self.query_uuid = query.query_uuid
12 self.query_all = query_all
13 self.query_all_uuid = query_all.query_uuid if query_all else None
15 def template_file(self):
16 return "columns_editor.html"
18 def requirements (self):
22 'js/columns_editor.js',
25 'css/query_editor.css',
31 def export_json_settings (self):
34 def template_env(self, request):
36 if self.default_fields is not None:
37 default_fields = self.default_fields
39 default_fields = self.query.fields
40 #hidden_columns = self.hidden_columns
41 metadata = self.page.get_metadata()
42 md_fields = metadata.details_by_object('resource')
45 'name': 'sla_supported',
53 if sla_column_info not in md_fields['column']:
54 md_fields['column'].append(sla_column_info)
56 # XXX use django templating system here
57 for md_field in sorted(md_fields['column']):
58 if md_field['type'] == 'string':
59 if 'allowed_values' in md_field:
60 allowed_values = md_field['allowed_values'].split(',')
63 for v in allowed_values:
65 options.append(v_desc[0])
71 filter_input = render_to_string('filter_input_string_values.html', env)
75 'field': md_field['name']
77 filter_input = render_to_string('filter_input_string.html', env)
79 elif md_field['type'] == 'int':
80 allowed_values = md_field.get('allowed_values', '0,0').split(',')
83 'field': md_field['name'],
84 'min' : allowed_values[0],
85 'max' : allowed_values[1]
87 filter_input = render_to_string('filter_input_integer.html', env)
91 'field': md_field['name']
93 filter_input = render_to_string('filter_input_others.html', env)
96 'name': md_field['name'],
97 'type': md_field['type'],
98 'resource_type': 'N/A',
99 'filter_input': filter_input,
101 'checked': md_field['name'] in default_fields
103 #return { 'fields': fields, 'hidden_columns': hidden_columns }
104 #return { 'fields': fields , 'query_uuid': self.query_uuid, 'query_all_uuid': self.query_all_uuid }
105 return { 'fields': fields }
107 def json_settings_list (self): return ['plugin_uuid', 'domid', 'query_uuid', 'query_all_uuid', ]