src/pyams_skin/table.py
changeset 243 b9ed4b78393f
parent 242 a61b26d60c94
child 261 619c20502448
equal deleted inserted replaced
242:a61b26d60c94 243:b9ed4b78393f
    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