Changeset 2286 in products


Ignore:
Timestamp:
May 11, 2010 10:41:04 AM (14 years ago)
Author:
mylan
Message:

Added BlockColumn? with possiblity to blocking and styling column based on row data values

Location:
quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.referencedatagridfield/trunk/quintagroup/referencedatagridfield/columns.py

    r2285 r2286  
    2727# Initializes class security 
    2828InitializeClass(HiddenColumn) 
     29 
     30class BlockColumn(Column): 
     31    """ Column with possibility to block the cell data from changing, 
     32        based on the value of the row data. 
     33    """ 
     34    security = ClassSecurityInfo() 
     35 
     36    def __init__(self, label, default=None, label_msgid=None, 
     37                 column_on_class=None, column_off_class=None, 
     38                 columns=[], invert=False, read_only=None): 
     39        """ Create a column, with adding class attribute depend on value presence for the cell. 
     40         
     41            @param column_on_class set class, which will be added to the <input> tag if columns has value 
     42            @param column_off_class set class, which will be added to the <input> tag if columns not has value 
     43            @param columns list of columns names, which values will be checked for set class attribute 
     44            @param invert - invert the adding class logic 
     45            @param read_only - check-on/off readOnly attribute for the <input> tag 
     46        """ 
     47        Column.__init__(self, label, default, label_msgid) 
     48        self.column_on_class = column_on_class 
     49        self.column_off_class = column_off_class 
     50        self.columns = columns 
     51        self.invert = invert 
     52        self.read_only = read_only 
     53 
     54    def passCondition(self, row_data): 
     55        """ Return calculated class attribute.""" 
     56        res = sum([1 for c in self.columns if row_data.get(c,0)]) 
     57        return res == len(self.columns) and not self.invert 
     58     
     59    security.declarePublic('getAttributesData') 
     60    def getAttributesData(self, row_data): 
     61        """ Return calculated class attribute.""" 
     62        res = {'style_class': None, 'read_only': None} 
     63        isPassCondition = self.passCondition(row_data) 
     64        if self.column_on_class or self.column_off_class: 
     65           res['style_class'] = isPassCondition and self.column_on_class or self.column_off_class 
     66        if self.read_only: 
     67           res['read_only'] = isPassCondition and True or False 
     68 
     69        return res 
     70     
     71    security.declarePublic('getMacro') 
     72    def getMacro(self): 
     73        """ Return macro used to render this column in view/edit """ 
     74        return "datagrid_block_cell" 
     75 
     76# Initializes class security 
     77InitializeClass(BlockColumn) 
Note: See TracChangeset for help on using the changeset viewer.