Skip to main content

Utilities for working with CSVs in Django

Project description

Contains helpers for CSV interaction.

There are two primary uses:

  • Running an import command with a list of importers

  • Exporting a streaming CSV response export

Example import:

from django_csv_utils import CSVImportException, ImportCommand, Importer
from users.models import User


class UserImporter(Importer):
    """Imports User objects from a CSV."""
    header = [
        "first_name",
        "last_name",
        "email",
    ]

    def import_row(self, row):
        errors = []
        first_name = row.get("first_name", "")
        last_name = row.get("last_name", "")
        email = self.get_str_errblank(row, "email", errors).lower()
        if User.objects.filter(email=email).exists():
            errors.append("The email {} is already in use".format(email))
        if errors:
            raise CSVImportException(', '.join([str(e) for e in errors]))
        new_user = User.objects.create(
            email=email, first_name=first_name, last_name=last_name)
        return "Imported {0}".format(new_user.get_full_name())


class Command(ImportCommand):
    imports = {'users': UserImporter}

Example StreamingHTTPResponse:

from django_csv_utils import StreamingCSVView
from users.models import User


class UserCSVView(StreamingCSVView):
    """Give the list of users."""
    header = [
        'fist_name',
        'last_name',
        'email',
    ]

    def get_queryset(self):
        """Return the right list of users."""
        return User.objects.filter(is_active=True, is_superuser=False)

    def get_row(self, item):
        return (
            item.first_name,
            item.last_name,
            item.email,
        )

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-csv-utils-1.0.2.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

django_csv_utils-1.0.2-py2.py3-none-any.whl (8.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-csv-utils-1.0.2.tar.gz.

File metadata

File hashes

Hashes for django-csv-utils-1.0.2.tar.gz
Algorithm Hash digest
SHA256 db5f71be39ac863de8735848dd8e0e37a974e19f6c5ee70a824a1f33960d8645
MD5 cec20c1dfcc34861d0a3504b54ab2531
BLAKE2b-256 157faf938dc85f149faa818749c6bc13982e15dc3013cb8482eccfc2918993aa

See more details on using hashes here.

File details

Details for the file django_csv_utils-1.0.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_csv_utils-1.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b417b377e442c5ff9e28d9c658feb43c1d26743e719f096e188e95f34e99a04d
MD5 87c0ee3582ca390678af50166f29ec15
BLAKE2b-256 a85614170511e7703754cacbdd7cc4dbabfae8498999ea910d6579b54536bd7a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page