'Imports data from ``tablib.Dataset``. Refer to :doc:`import_workflow`
for a more complete description of the whole import process.
:param dataset: A ``tablib.Dataset``
:param raise_errors: Whether errors should be printed to the end user
or raised regularly.
:param use_transactions: If ``True`` the import process will be processed
inside a transaction.
:param collect_failed_rows: If ``True`` the import process will collect
failed rows.
:param dry_run: If ``dry_run`` is set, or an error occurs, if a transaction
is being used, it will be rolled back.'

def import_data(self, dataset, dry_run=False, raise_errors=False, use_transactions=None, collect_failed_rows=False, **kwargs):

    if (use_transactions is None):
        use_transactions = self.get_use_transactions()
    connection = connections[DEFAULT_DB_ALIAS]
    supports_transactions = getattr(connection.features, u'supports_transactions', False)
    if (use_transactions and (not supports_transactions)):
        raise ImproperlyConfigured
    using_transactions = ((use_transactions or dry_run) and supports_transactions)
    if using_transactions:
        with transaction.atomic():
            return self.import_data_inner(dataset, dry_run, raise_errors, using_transactions, collect_failed_rows, **kwargs)
    return self.import_data_inner(dataset, dry_run, raise_errors, using_transactions, collect_failed_rows, **kwargs)
