64 |
64 |
65 cssClasses = {'table': 'table table-bordered table-striped table-hover table-tight datatable'} |
65 cssClasses = {'table': 'table table-bordered table-striped table-hover table-tight datatable'} |
66 |
66 |
67 @property |
67 @property |
68 def data_attributes(self): |
68 def data_attributes(self): |
69 return {'tr': {'id': lambda x, col: '{0}::{1}'.format(self.id, getattr(x, '__name__', '')), |
69 return { |
70 'data-ams-element-name': lambda x, col: getattr(x, '__name__', None), |
70 'tr': { |
71 'data-ams-url': lambda x, col: getattr(get_element_editor(self, x), 'url', None), |
71 'id': lambda x, col: '{0}::{1}'.format(self.id, getattr(x, '__name__', '')), |
72 'data-toggle': lambda x, col: 'modal' if getattr(get_element_editor(self, x), 'modal_target', |
72 'data-ams-element-name': lambda x, col: getattr(x, '__name__', None), |
73 None) else None}, |
73 'data-ams-url': lambda x, col: getattr(get_element_editor(self, x), 'url', None), |
74 'th': {'data-ams-datatable-stype': self.get_column_type}} |
74 'data-toggle': lambda x, col: 'modal' if getattr(get_element_editor(self, x), 'modal_target', |
|
75 None) else None |
|
76 }, |
|
77 'th': { |
|
78 'data-ams-column-name': lambda x, col: x.__name__, |
|
79 'data-ams-datatable-stype': self.get_column_type |
|
80 } |
|
81 } |
75 |
82 |
76 batchSize = 10000 |
83 batchSize = 10000 |
77 startBatchingAt = 10000 |
84 startBatchingAt = 10000 |
78 |
85 |
79 def getBatchSize(self): |
86 def getBatchSize(self): |
159 if obj is not None and self.attrName is not None: |
166 if obj is not None and self.attrName is not None: |
160 return II18n(obj).query_attribute(self.attrName, request=self.request) |
167 return II18n(obj).query_attribute(self.attrName, request=self.request) |
161 return self.defaultValue |
168 return self.defaultValue |
162 |
169 |
163 |
170 |
|
171 def get_object_name(context, request, view=None): |
|
172 """Get required object name""" |
|
173 registry = request.registry |
|
174 adapter = None |
|
175 if view is not None: |
|
176 adapter = registry.queryMultiAdapter((context, request, view), ITableElementName) |
|
177 if adapter is None: |
|
178 adapter = registry.queryMultiAdapter((context, request), ITableElementName) |
|
179 if adapter is None: |
|
180 adapter = registry.queryAdapter(context, ITableElementName) |
|
181 if adapter is not None: |
|
182 return adapter.name |
|
183 |
|
184 |
164 @adapter_config(name='name', context=(Interface, IPyAMSLayer, BaseTable), provides=IColumn) |
185 @adapter_config(name='name', context=(Interface, IPyAMSLayer, BaseTable), provides=IColumn) |
165 class NameColumn(I18nColumn, GetAttrColumn): |
186 class NameColumn(I18nColumn, GetAttrColumn): |
166 """Container name column""" |
187 """Container name column""" |
167 |
188 |
168 _header = _("Name") |
189 _header = _("Name") |
170 weight = 10 |
191 weight = 10 |
171 |
192 |
172 dt_sort_type = 'string' |
193 dt_sort_type = 'string' |
173 |
194 |
174 def getValue(self, obj): |
195 def getValue(self, obj): |
175 registry = self.request.registry |
196 name = get_object_name(obj, self.request, self.table) |
176 adapter = registry.queryMultiAdapter((obj, self.request, self.table), ITableElementName) |
197 if name is None: |
177 if adapter is None: |
198 name = super(NameColumn, self).getValue(obj) |
178 adapter = registry.queryMultiAdapter((obj, self.request), ITableElementName) |
199 return name |
179 if adapter is None: |
|
180 adapter = registry.queryAdapter(obj, ITableElementName) |
|
181 if adapter is not None: |
|
182 return adapter.name |
|
183 else: |
|
184 return super(NameColumn, self).getValue(obj) |
|
185 |
200 |
186 |
201 |
187 class ActionColumn(Column): |
202 class ActionColumn(Column): |
188 """Base action icon column""" |
203 """Base action icon column""" |
189 |
204 |