Add intsitution full name when validation an authority
[myslice.git] / plugins / columns_editor / __init__.py
1 from unfold.plugin import Plugin
2
3 from django.template.loader import render_to_string
4
5 # XXX We need naming helpers in the python Plugin class also, used in template
6
7 class ColumnsEditor(Plugin):
8     def __init__ (self, query, query_all = None, **settings):
9         Plugin.__init__ (self, **settings)
10         self.query=query
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
14
15     def template_file(self):
16         return "columns_editor.html"
17
18     def requirements (self):
19         reqs = {
20             'js_files' : [
21                 # XXX datatables
22                 'js/columns_editor.js',
23             ] ,
24             'css_files': [
25                 'css/query_editor.css',
26                 'css/jquery-ui.css',
27             ]
28         }
29         return reqs
30
31     def export_json_settings (self):
32         return True
33
34     def template_env(self, request):
35         fields = []
36         if self.default_fields is not None:
37             default_fields = self.default_fields
38         else:
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')
43
44         sla_column_info = {
45             'name': 'sla_supported',
46             'default': '',
47             'is_array': False,
48             'description': '',
49             'type': 'bool',
50             'qualifier': None
51         }
52
53         if sla_column_info not in md_fields['column']:
54             md_fields['column'].append(sla_column_info)
55
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(',')
61
62                     options = []
63                     for v in allowed_values:
64                         v_desc = v.split('-')
65                         options.append(v_desc[0])
66
67                     env = {
68                         'domid': self.domid,
69                         'options': options
70                     }
71                     filter_input = render_to_string('filter_input_string_values.html', env)
72                 else:
73                     env = {
74                         'domid': self.domid,
75                         'field': md_field['name']
76                     }
77                     filter_input = render_to_string('filter_input_string.html', env)
78                     
79             elif md_field['type'] == 'int':
80                 allowed_values = md_field.get('allowed_values', '0,0').split(',')
81                 env = {
82                     'domid': self.domid,
83                     'field': md_field['name'],
84                     'min'  : allowed_values[0],
85                     'max'  : allowed_values[1]
86                 }
87                 filter_input = render_to_string('filter_input_integer.html', env)
88             else:
89                 env = {
90                     'domid': self.domid,
91                     'field': md_field['name']
92                 }
93                 filter_input = render_to_string('filter_input_others.html', env)
94
95             fields.append({
96                 'name':          md_field['name'],
97                 'type':          md_field['type'],
98                 'resource_type': 'N/A',
99                 'filter_input':  filter_input,
100                 'header':        None,
101                 'checked':       md_field['name'] in default_fields
102             })
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 }
106
107     def json_settings_list (self): return ['plugin_uuid', 'domid', 'query_uuid', 'query_all_uuid', ]