1 from unfold.plugin import Plugin
3 from django.template.loader import render_to_string
5 class QueryEditor(Plugin):
7 def template_file(self):
8 return "query_editor.html"
10 def requirements (self):
16 'css/query_editor.css',
23 def json_settings_list (self):
24 return ['plugin_uuid', 'domid', 'query_uuid']
26 def export_json_settings (self):
29 def template_env(self, request):
31 metadata = self.page.get_metadata()
32 md_fields = metadata.details_by_object('resource')
34 # XXX use django templating system here
35 for md_field in md_fields['column']:
37 if md_field['type'] == 'string':
38 if 'allowed_values' in md_field:
39 allowed_values = md_field['allowed_values'].split(',')
42 for v in allowed_values:
44 options.append(v_desc[0])
46 env = {'options': options}
47 filter_input = render_to_string('filter_input_string_values.html', env)
49 env = {'filter_id': "%s-filter-%s" % (self.domid, md_field['name'])}
50 filter_input = render_to_string('filter_input_string.html', env)
52 elif md_field['type'] == 'int':
53 allowed_values = md_field.get('allowed_values', '0,0').split(',')
54 env = {'min': allowed_values[0], 'max': allowed_values[1]}
55 filter_input = render_to_string('filter_input_integer.html', env)
57 env = {'filter_id': "%s-filter-%s" % (self.domid, md_field['name'])}
58 filter_input = render_to_string('filter_input_others.html', env)
61 'name': md_field['name'],
62 'type': md_field['type'],
63 'resource_type': 'N/A',
64 'filter_input': filter_input,
66 'checked': md_field['name'] in self.query.get_select()
68 return { 'fields': fields }