diff --git a/taiga/base/utils/iterators.py b/taiga/base/utils/iterators.py index b0359162..fff3a9de 100644 --- a/taiga/base/utils/iterators.py +++ b/taiga/base/utils/iterators.py @@ -16,6 +16,8 @@ # along with this program. If not, see . from functools import wraps, partial +from django.core.paginator import Paginator + def as_tuple(function=None, *, remove_nulls=False): if function is None: @@ -42,3 +44,15 @@ def split_by_n(seq:str, n:int): while seq: yield seq[:n] seq = seq[n:] + + +def iter_queryset(queryset, itersize:int=20): + """ + Util function for iterate in more efficient way + all queryset. + """ + paginator = Paginator(queryset, itersize) + for page_num in paginator.page_range: + page = paginator.page(page_num) + for element in page.object_list: + yield element