Changeset 5764

Show
Ignore:
Timestamp:
11/24/08 12:58:26 (2 months ago)
Author:
chrisz
Message:

Fixed two minor problems with WidgetLists? (#2014):
1. Fields added to declared fields now come last.
2. Subclasses now inherit fields from base class.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.1/turbogears/widgets/base.py

    r5667 r5764  
    461461    def __new__(meta, class_name, bases, class_dict): 
    462462        declared_widgets = [] 
     463        for base in bases: 
     464            declared_widgets.extend(getattr(base, 'declared_widgets', [])) 
    463465        for name, value in class_dict.items(): 
    464466            if isinstance(value, Widget): 
     
    483485 
    484486    def __init__(self, *args): 
     487        super(WidgetsList, self).__init__(self.declared_widgets) 
    485488        if args: 
    486             if len(args) > 1: 
    487                 args = [args] 
    488             elif isinstance(args[0], Widget): 
    489                 args = [[args[0]]] 
    490         super(WidgetsList, self).__init__(*args) 
    491         self.extend(self.declared_widgets) 
     489            if len(args) == 1: 
     490                args = args[0] 
     491                if isinstance(args, Widget): 
     492                    args = [args] 
     493            self.extend(args) 
    492494        if not self: 
    493495            warnings.warn("You have declared an empty WidgetsList") 
  • branches/1.1/turbogears/widgets/tests/test_widgets.py

    r5685 r5764  
    187187    assert widgetlist[0] == w 
    188188    assert widgetlist[1] == w2 
     189    w3, w4 = widgets.Widget(), widgets.Widget() 
     190    widgetlist = W([w3, w4]) 
     191    assert len(widgetlist) == 4 
     192    assert widgetlist[0] == w 
     193    assert widgetlist[1] == w2 
     194    assert widgetlist[2] == w3 
     195    assert widgetlist[3] == w4 
     196 
     197def test_widgetslist_inheritance(): 
     198    """Widget lists can inherit fields.""" 
     199    w = widgets.Widget(name="foo") 
     200    class W(widgets.WidgetsList): 
     201        foo = w 
     202    w2 = widgets.Widget(name="bar") 
     203    class W2(W): 
     204        bar = w2 
     205    widgetlist = W2() 
     206    assert len(widgetlist) == 2 
     207    assert widgetlist[0] == w 
     208    assert widgetlist[1] == w2 
     209    w3, w4 = widgets.Widget(), widgets.Widget() 
     210    widgetlist = W2([w3, w4]) 
     211    assert len(widgetlist) == 4 
     212    assert widgetlist[0] == w 
     213    assert widgetlist[1] == w2 
     214    assert widgetlist[2] == w3 
     215    assert widgetlist[3] == w4 
    189216 
    190217def test_widget_url(): 
  • branches/1.5/turbogears/widgets/base.py

    r5508 r5764  
    461461    def __new__(meta, class_name, bases, class_dict): 
    462462        declared_widgets = [] 
     463        for base in bases: 
     464            declared_widgets.extend(getattr(base, 'declared_widgets', [])) 
    463465        for name, value in class_dict.items(): 
    464466            if isinstance(value, Widget): 
     
    483485 
    484486    def __init__(self, *args): 
     487        super(WidgetsList, self).__init__(self.declared_widgets) 
    485488        if args: 
    486             if len(args) > 1: 
    487                 args = [args] 
    488             elif isinstance(args[0], Widget): 
    489                 args = [[args[0]]] 
    490         super(WidgetsList, self).__init__(*args) 
    491         self.extend(self.declared_widgets) 
     489            if len(args) == 1: 
     490                args = args[0] 
     491                if isinstance(args, Widget): 
     492                    args = [args] 
     493            self.extend(args) 
    492494        if not self: 
    493495            warnings.warn("You have declared an empty WidgetsList") 
  • branches/1.5/turbogears/widgets/tests/test_widgets.py

    r5190 r5764  
    187187    assert widgetlist[0] == w 
    188188    assert widgetlist[1] == w2 
     189    w3, w4 = widgets.Widget(), widgets.Widget() 
     190    widgetlist = W([w3, w4]) 
     191    assert len(widgetlist) == 4 
     192    assert widgetlist[0] == w 
     193    assert widgetlist[1] == w2 
     194    assert widgetlist[2] == w3 
     195    assert widgetlist[3] == w4 
     196 
     197def test_widgetslist_inheritance(): 
     198    """Widget lists can inherit fields.""" 
     199    w = widgets.Widget(name="foo") 
     200    class W(widgets.WidgetsList): 
     201        foo = w 
     202    w2 = widgets.Widget(name="bar") 
     203    class W2(W): 
     204        bar = w2 
     205    widgetlist = W2() 
     206    assert len(widgetlist) == 2 
     207    assert widgetlist[0] == w 
     208    assert widgetlist[1] == w2 
     209    w3, w4 = widgets.Widget(), widgets.Widget() 
     210    widgetlist = W2([w3, w4]) 
     211    assert len(widgetlist) == 4 
     212    assert widgetlist[0] == w 
     213    assert widgetlist[1] == w2 
     214    assert widgetlist[2] == w3 
     215    assert widgetlist[3] == w4 
    189216 
    190217def test_widget_url():