Changeset 4184

Show
Ignore:
Timestamp:
03/01/08 06:11:25 (9 months ago)
Author:
chrisz
Message:

Inherited template params and member_widgets got mixed up (#1718).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/1.0/CHANGELOG.txt

    r4158 r4184  
    2323~~~~~ 
    2424 
    25 * FieldStorage can now be optional (#1705) 
    2625* Toolbox did not run on projects using Genshi (#1494). 
    27 * FieldStorageUploadConverter didn't support ``not_empty`` option (#1705). 
     26* FieldStorageUploadConverter didn't support ``not_empty=False`` (#1705). 
     27* Template params now always keep their given order (#1718). 
    2828* Compatibility with SQLAlchemy 0.4.3 (#1721). 
    2929* Better handling of external redirects. 
  • branches/1.0/turbogears/widgets/meta.py

    r3366 r4184  
    66from itertools import ifilter, count 
    77from turbogears import validators 
     8from turbogears.util import setlike 
    89from formencode.schema import Schema 
    910 
    1011try: 
    1112    set 
    12 except NameError: 
     13except NameError: # Python 2.3 
    1314    from sets import Set as set 
    1415 
     
    2930        # Makes sure we get the union of params and member_widgets 
    3031        # from all our bases. 
    31         params_set = set(dct.get('params', [])) 
     32        params = setlike(dct.get('params', [])) 
    3233        # template_vars has been deprecated 
    3334        if 'template_vars' in dct: 
    34             params_set.update(dct['template_vars']) 
     35            params.add_all(dct['template_vars']) 
    3536            warnings.warn( 
    3637                "Use of template_vars inside a widget is deprecated, " 
     
    3940                "released and your actual code will stop working.", 
    4041                DeprecationWarning, 2) 
    41         member_widgets_set = set(dct.get('member_widgets', [])) 
     42        member_widgets = setlike(dct.get('member_widgets', [])) 
    4243        compound = False 
    4344        for base in bases: 
    44             params_set.update(getattr(base, 'params', [])) 
     45            params.add_all(getattr(base, 'params', [])) 
    4546            if getattr(base, 'compound', False): 
    46                 member_widgets_set.update(getattr(base, 'member_widgets', [])) 
     47                member_widgets.add_all(getattr(base, 'member_widgets', [])) 
    4748                compound = True 
    48         for param in params_set
     49        for param in params
    4950            # Swap all params listed at 'params' with a ParamDescriptor 
    5051            try: 
     
    5455                # declared in a superclass, skip it... 
    5556                pass 
    56         dct['params'] = list(params_set) 
     57        params = list(params) 
     58        dct['params'] = params 
    5759        #XXX: Remove when deprecation is effective 
    58         dct['template_vars'] = dct['params'] 
     60        dct['template_vars'] = params 
    5961        if compound: 
    60             dct['member_widgets'] = list(member_widgets_set
     62            dct['member_widgets'] = list(member_widgets
    6163        # Pick params_doc from all bases giving priority to the widget's own 
    6264        params_doc = {} 
  • branches/1.1/turbogears/widgets/base.py

    r4179 r4184  
    1010from cherrypy.config import configs 
    1111import tgmochikit 
    12  
    13 try: 
    14     set 
    15 except NameError: 
    16     from sets import Set as set 
    1712 
    1813__all__ = ["load_widgets", "all_widgets", "Widget", "CompoundWidget", 
     
    225220    # directly or indirectly from Widget. 
    226221 
    227     # update_data has been deprecated 
    228     update_data = update_params 
    229  
    230222    def __call__(self, *args, **params): 
    231223        """ 
     
    270262        params["value"] = to_unicode(self.adjust_value(value, **params)) 
    271263        self.update_params(params) 
    272         # update_data has been deprecated 
    273         self.update_data(params) 
    274264        try: 
    275265            transform = view.engines['kid'].transform 
  • branches/1.1/turbogears/widgets/meta.py

    r3367 r4184  
    66from itertools import ifilter, count 
    77from turbogears import validators 
     8from turbogears.util import setlike 
    89from formencode.schema import Schema 
    9  
    10 try: 
    11     set 
    12 except NameError: 
    13     from sets import Set as set 
    1410 
    1511__all__ = ["MetaWidget", "load_kid_template"] 
     
    1915class MetaWidget(type): 
    2016    def __new__(cls, name, bases, dct): 
    21         # update_data has been deprecated 
    22         if 'update_data' in dct and name != "Widget": 
    23             warnings.warn( 
    24                 "update_data has been renamed update_params, please " 
    25                 "rename your method. " 
    26                 "Note: this warning will be removed once 1.0 is " 
    27                 "released and your actual code will stop working.", 
    28                 DeprecationWarning, 2) 
    2917        # Makes sure we get the union of params and member_widgets 
    3018        # from all our bases. 
    31         params_set = set(dct.get('params', [])) 
    32         # template_vars has been deprecated 
    33         if 'template_vars' in dct: 
    34             params_set.update(dct['template_vars']) 
    35             warnings.warn( 
    36                 "Use of template_vars inside a widget is deprecated, " 
    37                 "use params instead. " 
    38                 "Note: this warning will be removed once 1.0 is " 
    39                 "released and your actual code will stop working.", 
    40                 DeprecationWarning, 2) 
    41         member_widgets_set = set(dct.get('member_widgets', [])) 
     19        params = setlike(dct.get('params', [])) 
     20        member_widgets = setlike(dct.get('member_widgets', [])) 
    4221        compound = False 
    4322        for base in bases: 
    44             params_set.update(getattr(base, 'params', [])) 
     23            params.add_all(getattr(base, 'params', [])) 
    4524            if getattr(base, 'compound', False): 
    46                 member_widgets_set.update(getattr(base, 'member_widgets', [])) 
     25                member_widgets.add_all(getattr(base, 'member_widgets', [])) 
    4726                compound = True 
    48         for param in params_set
     27        for param in params
    4928            # Swap all params listed at 'params' with a ParamDescriptor 
    5029            try: 
     
    5433                # declared in a superclass, skip it... 
    5534                pass 
    56         dct['params'] = list(params_set) 
    57         #XXX: Remove when deprecation is effective 
    58         dct['template_vars'] = dct['params'] 
     35        params = list(params) 
     36        dct['params'] = params 
    5937        if compound: 
    60             dct['member_widgets'] = list(member_widgets_set
     38            dct['member_widgets'] = list(member_widgets
    6139        # Pick params_doc from all bases giving priority to the widget's own 
    6240        params_doc = {}