mjumbewu / django-rest-framework-csv

CSV Tools for Django REST Framework
BSD 2-Clause "Simplified" License
364 stars 89 forks source link

Generator objects cannot be passed into CSVStreamingRenderer #69

Open jrzerr opened 6 years ago

jrzerr commented 6 years ago

CSVStreamingRenderer is great, it works as a generator along with tabelize which also works as a generator. However, you cannot pass a Generator object in as your data to be rendered. This code in CSVStreamingRenderer causes the issue:

        if not isinstance(data, list):
            data = [data]

A generator object is not a type list, so the if statement evaluates to true so this code breaks the renderer for a Generator object.

I have successfully used this with a generator as the data source by changing that to:

        if not isinstance(data, GeneratorType) and not isinstance(data, list):
            data = [data]

PR on it's way...