Commit b9626530 authored by Thomas Chaumeny's avatar Thomas Chaumeny Committed by Baptiste Mispelon
Browse files

Fixed #23664 -- Provided a consistent definition for OrderedSet.__bool__

This also defines QuerySet.__bool__ for consistency though this should not have any consequence as bool(qs) used to fallback on QuerySet.__len__ in Py3.
parent 2e5b2c61
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -162,10 +162,13 @@ class QuerySet(object):
        self._fetch_all()
        return iter(self._result_cache)

    def __nonzero__(self):
    def __bool__(self):
        self._fetch_all()
        return bool(self._result_cache)

    def __nonzero__(self):      # Python 2 compatibility
        return type(self).__bool__(self)

    def __getitem__(self, k):
        """
        Retrieves an item or slice from the set of results.
+4 −1
Original line number Diff line number Diff line
@@ -271,9 +271,12 @@ class OrderedSet(object):
    def __contains__(self, item):
        return item in self.dict

    def __nonzero__(self):
    def __bool__(self):
        return bool(self.dict)

    def __nonzero__(self):      # Python 2 compatibility
        return type(self).__bool__(self)


class MultiValueDictKeyError(KeyError):
    pass
+11 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ import pickle
from django.test import SimpleTestCase
from django.test.utils import IgnoreDeprecationWarningsMixin
from django.utils.datastructures import (DictWrapper, ImmutableList,
    MultiValueDict, MultiValueDictKeyError, MergeDict, SortedDict)
    MultiValueDict, MultiValueDictKeyError, MergeDict, OrderedSet, SortedDict)
from django.utils import six


@@ -206,6 +206,16 @@ class MergeDictTests(IgnoreDeprecationWarningsMixin, SimpleTestCase):
            d1['key2']


class OrderedSetTests(SimpleTestCase):

    def test_bool(self):
        # Refs #23664
        s = OrderedSet()
        self.assertFalse(s)
        s.add(1)
        self.assertTrue(s)


class MultiValueDictTests(SimpleTestCase):

    def test_multivaluedict(self):