Author: gwilson
Date: 2007-11-25 20:39:48 -0600 (Sun, 25 Nov 2007)
New Revision: 6717

Modified:
   django/trunk/django/newforms/widgets.py
   django/trunk/tests/regressiontests/forms/widgets.py
Log:
Fixed #5993 -- Made `RadioSelect` easier to subclass by giving it a default 
`renderer` as a class attribute.


Modified: django/trunk/django/newforms/widgets.py
===================================================================
--- django/trunk/django/newforms/widgets.py     2007-11-25 20:29:26 UTC (rev 
6716)
+++ django/trunk/django/newforms/widgets.py     2007-11-26 02:39:48 UTC (rev 
6717)
@@ -317,11 +317,13 @@
                 % force_unicode(w) for w in self]))
 
 class RadioSelect(Select):
+    renderer = RadioFieldRenderer
 
     def __init__(self, *args, **kwargs):
-        self.renderer = kwargs.pop('renderer', None)
-        if not self.renderer:
-            self.renderer = RadioFieldRenderer
+        # Override the default renderer if we were passed one.
+        renderer = kwargs.pop('renderer', None)
+        if renderer:
+            self.renderer = renderer
         super(RadioSelect, self).__init__(*args, **kwargs)
 
     def get_renderer(self, name, value, attrs=None, choices=()):

Modified: django/trunk/tests/regressiontests/forms/widgets.py
===================================================================
--- django/trunk/tests/regressiontests/forms/widgets.py 2007-11-25 20:29:26 UTC 
(rev 6716)
+++ django/trunk/tests/regressiontests/forms/widgets.py 2007-11-26 02:39:48 UTC 
(rev 6717)
@@ -663,6 +663,16 @@
 <label><input checked="checked" type="radio" name="beatle" value="G" /> 
George</label><br />
 <label><input type="radio" name="beatle" value="R" /> Ringo</label>
 
+Or you can use custom RadioSelect fields that use your custom renderer.
+>>> class CustomRadioSelect(RadioSelect):
+...    renderer = MyRenderer
+>>> w = CustomRadioSelect()
+>>> print w.render('beatle', 'G', choices=(('J', 'John'), ('P', 'Paul'), ('G', 
'George'), ('R', 'Ringo')))
+<label><input type="radio" name="beatle" value="J" /> John</label><br />
+<label><input type="radio" name="beatle" value="P" /> Paul</label><br />
+<label><input checked="checked" type="radio" name="beatle" value="G" /> 
George</label><br />
+<label><input type="radio" name="beatle" value="R" /> Ringo</label>
+
 A RadioFieldRenderer object also allows index access to individual RadioInput
 objects.
 >>> w = RadioSelect()


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to