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 QueryEditor(Plugin):
9 def template_file(self):
10 return "query_editor.html"
12 def requirements (self):
19 'css/query_editor.css',
20 # 'css/jquery-ui.css',
21 # 'css/demo_page.css',
22 # 'css/demo_table.css',
27 def json_settings_list (self):
28 return ['plugin_uuid', 'domid', 'query_uuid']
30 def export_json_settings (self):
33 def template_env(self, request):
35 metadata = self.page.get_metadata()
36 md_fields = metadata.details_by_object('resource')
38 # XXX use django templating system here
39 for md_field in md_fields['column']:
41 if md_field['type'] == 'string':
42 if 'allowed_values' in md_field:
43 allowed_values = md_field['allowed_values'].split(',')
46 for v in allowed_values:
48 options.append(v_desc[0])
54 filter_input = render_to_string('filter_input_string_values.html', env)
58 'field': md_field['name']
60 filter_input = render_to_string('filter_input_string.html', env)
62 elif md_field['type'] == 'int':
63 allowed_values = md_field.get('allowed_values', '0,0').split(',')
66 'field': md_field['name'],
67 'min' : allowed_values[0],
68 'max' : allowed_values[1]
70 filter_input = render_to_string('filter_input_integer.html', env)
74 'field': md_field['name']
76 filter_input = render_to_string('filter_input_others.html', env)
79 'name': md_field['name'],
80 'type': md_field['type'],
81 'resource_type': 'N/A',
82 'filter_input': filter_input,
84 'checked': md_field['name'] in self.query.get_select()
86 return { 'fields': fields }