Return all renditions when no filters are provided to the prefetch_renditions method

pull/8008/head
Tidiane Dia 2022-05-30 19:29:25 +01:00 zatwierdzone przez jacobtoppm
rodzic 52ace9eae7
commit 6dd02460a8
1 zmienionych plików z 11 dodań i 6 usunięć

Wyświetl plik

@ -62,18 +62,23 @@ class ImageQuerySet(SearchableQuerySetMixin, models.QuerySet):
def prefetch_renditions(self, *filters):
"""
Prefetches generated renditions for the given filters.
Returns all renditions when no filters are provided.
"""
# Get a list of filter spec strings. The given value could contain Filter objects
filter_specs = [
filter.spec if isinstance(filter, Filter) else filter for filter in filters
]
rendition_model = self.model.get_rendition_model()
queryset = rendition_model.objects.all()
if filters:
# Get a list of filter spec strings. The given value could contain Filter objects
filter_specs = [
filter.spec if isinstance(filter, Filter) else filter
for filter in filters
]
queryset = queryset.filter(filter_spec__in=filter_specs)
return self.prefetch_related(
models.Prefetch(
"renditions",
queryset=rendition_model.objects.filter(filter_spec__in=filter_specs),
queryset=queryset,
to_attr="prefetched_renditions",
)
)