Django

Code

Changeset 6717

Show
Ignore:
Timestamp:
11/25/07 20:39:48 (1 year ago)
Author:
gwilson
Message:

Fixed #5993 -- Made RadioSelect easier to subclass by giving it a default renderer as a class attribute.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/newforms/widgets.py

    r6671 r6717  
    318318 
    319319class RadioSelect(Select): 
     320    renderer = RadioFieldRenderer 
    320321 
    321322    def __init__(self, *args, **kwargs): 
    322         self.renderer = kwargs.pop('renderer', None) 
    323         if not self.renderer: 
    324             self.renderer = RadioFieldRenderer 
     323        # Override the default renderer if we were passed one. 
     324        renderer = kwargs.pop('renderer', None) 
     325        if renderer: 
     326            self.renderer = renderer 
    325327        super(RadioSelect, self).__init__(*args, **kwargs) 
    326328 
  • django/trunk/tests/regressiontests/forms/widgets.py

    r6594 r6717  
    664664<label><input type="radio" name="beatle" value="R" /> Ringo</label> 
    665665 
     666Or you can use custom RadioSelect fields that use your custom renderer. 
     667>>> class CustomRadioSelect(RadioSelect): 
     668...    renderer = MyRenderer 
     669>>> w = CustomRadioSelect() 
     670>>> print w.render('beatle', 'G', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))) 
     671<label><input type="radio" name="beatle" value="J" /> John</label><br /> 
     672<label><input type="radio" name="beatle" value="P" /> Paul</label><br /> 
     673<label><input checked="checked" type="radio" name="beatle" value="G" /> George</label><br /> 
     674<label><input type="radio" name="beatle" value="R" /> Ringo</label> 
     675 
    666676A RadioFieldRenderer object also allows index access to individual RadioInput 
    667677objects.