Commit 2542b94f authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

Fixed #6465 -- Tweaked MergeDict.getlist() to work with Django's...

Fixed #6465 -- Tweaked MergeDict.getlist() to work with Django's MultiValueDict class. Thanks, Matt McClanahan.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7062 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent f467c8cb
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@ class MergeDict(object):
    """
    A simple class for creating new "virtual" dictionaries that actually look
    up values in more than one dictionary, passed in the constructor.

    If a key appears in more than one of the passed in dictionaries, only the
    first occurrence will be used.
    """
    def __init__(self, *dicts):
        self.dicts = dicts
@@ -25,11 +28,9 @@ class MergeDict(object):

    def getlist(self, key):
        for dict_ in self.dicts:
            try:
            if key in dict_.keys():
                return dict_.getlist(key)
            except KeyError:
                pass
        raise KeyError
        return []

    def items(self):
        item_list = []
+13 −0
Original line number Diff line number Diff line
@@ -20,6 +20,19 @@
>>> md2['chris']
'cool'

MergeDict can merge MultiValueDicts
>>> multi1 = MultiValueDict({'key1': ['value1'], 'key2': ['value2', 'value3']})
>>> multi2 = MultiValueDict({'key2': ['value4'], 'key4': ['value5', 'value6']})
>>> mm = MergeDict(multi1, multi2)

# Although 'key2' appears in both dictionaries, only the first value is used.
>>> mm.getlist('key2')
['value2', 'value3']
>>> mm.getlist('key4')
['value5', 'value6']
>>> mm.getlist('undefined')
[]

### MultiValueDict ##########################################################

>>> d = MultiValueDict({'name': ['Adrian', 'Simon'], 'position': ['Developer']})