From 09d785f5bba5102e31703b0a54aedd0a61298faa Mon Sep 17 00:00:00 2001 From: Diederik van der Boor Date: Wed, 26 Apr 2017 16:38:26 +0200 Subject: [PATCH] Fix infinite recursion on github editing of pr #279 Fixes: 89632483a7123b28e7577a318489d83a93450e16 --- polymorphic/query.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/polymorphic/query.py b/polymorphic/query.py index 209d7a2..aaae4bd 100644 --- a/polymorphic/query.py +++ b/polymorphic/query.py @@ -35,27 +35,26 @@ def _polymorhic_iterator(queryset, base_iter): but it requests the objects in chunks from the database, with Polymorphic_QuerySet_objects_per_request per chunk """ - while True: + # Make sure the base iterator is read in chunks instead of + # reading it completely, in case our caller read only a few objects. + for i in range(Polymorphic_QuerySet_objects_per_request): base_result_objects = [] reached_end = False - # Make sure the base iterator is read in chunks instead of - # reading it completely, in case our caller read only a few objects. - for i in range(Polymorphic_QuerySet_objects_per_request): - try: - o = next(base_iter) - base_result_objects.append(o) - except StopIteration: - reached_end = True - break + try: + o = next(base_iter) + base_result_objects.append(o) + except StopIteration: + reached_end = True + break - real_results = queryset._get_real_instances(base_result_objects) + real_results = queryset._get_real_instances(base_result_objects) - for o in real_results: - yield o + for o in real_results: + yield o - if reached_end: - return + if reached_end: + return if django.VERSION >= (1, 9):