Changelog

2.8.0 (2022-03-31)

  • Updated import.css to support dark mode (#1318)
  • Fix crash when import_data() called with empty Dataset and collect_failed_rows=True (#1381)
  • Improve Korean translation (#1402)
  • Update example subclass widget code (#1407)
  • Drop support for python3.6, django 2.2, 3.0, 3.1 (#1408)
  • Add get_export_form() to ExportMixin (#1409)

2.7.1 (2021-12-23)

  • Removed django_extensions from example app settings (#1356)
  • Added support for Django 4.0 (#1357)

2.7.0 (2021-12-07)

  • Big integer support for Integer widget (#788)
  • Run compilemessages command to keep .mo files in sync (#1299)
  • Added skip_html_diff meta attribute (#1329)
  • Added python3.10 to tox and CI environment list (#1336)
  • Add ability to rollback the import on validation error (#1339)
  • Fix missing migration on example app (#1346)
  • Fix crash when deleting via admin site (#1347)
  • Use Github secret in CI script instead of hard-coded password (#1348)
  • Documentation: correct error in example application which leads to crash (#1353)

2.6.1 (2021-09-30)

  • Revert ‘dark mode’ css: causes issues in django2.2 (#1330)

2.6.0 (2021-09-15)

  • Added guard for null ‘options’ to fix crash (#1325)
  • Updated import.css to support dark mode (#1323)
  • Fixed regression where overridden mixin methods are not called (#1315)
  • Fix xls/xlsx import of Time fields (#1314)
  • Added support for ‘to_encoding’ attribute (#1311)
  • Removed travis and replaced with github actions for CI (#1307)
  • Increased test coverage (#1286)
  • Fix minor date formatting issue for date with years < 1000 (#1285)
  • Translate the zh_Hans missing part (#1279)
  • Remove code duplication from mixins.py and admin.py (#1277)
  • Fix example in BooleanWidget docs (#1276)
  • Better support for Django main (#1272)
  • don’t test Django main branch with python36,37 (#1269)
  • Support Django 3.2 (#1265)
  • Correct typo in Readme (#1258)
  • Rephrase logical clauses in docstrings (#1255)
  • Support multiple databases (#1254)
  • Update django master to django main (#1251)
  • Add Farsi translated messages in the locale (#1249)
  • Update Russian translations (#1244)
  • Append export admin action using ModelAdmin.get_actions (#1241)
  • Fix minor mistake in makemigrations command (#1233)
  • Remove EOL Python 3.5 from CI (#1228)
  • CachedInstanceLoader defaults to empty when import_id is missing (#1225)
  • Add kwargs to import_row, import_object and import_field (#1190)
  • Call load_workbook() with data_only flag (#1095)

2.5.0 (2020-12-30)

  • Changed the default value for IMPORT_EXPORT_CHUNK_SIZE to 100. (#1196)
  • Add translation for Korean (#1218)
  • Update linting, CI, and docs.

2.4.0 (2020-10-05)

  • Fix deprecated Django 3.1 Signal(providing_args=...) usage.
  • Fix deprecated Django 3.1 django.conf.urls.url() usage.

2.3.0 (2020-07-12)

  • Add missing translation keys for all languages (#1144)
  • Added missing Portuguese translations (#1145)
  • Add kazakh translations (#1161)
  • Add bulk operations (#1149)

2.2.0 (2020-06-01)

  • Deal with importing a BooleanField that actually has True, False, and None values. (#1071)
  • Add row_number parameter to before_import_row, after_import_row and after_import_instance (#1040)
  • Paginate queryset if Queryset.prefetch_related is used (#1050)

2.1.0 (2020-05-02)

  • Fix DurationWidget handling of zero value (#1117)
  • Make import diff view only show headers for user visible fields (#1109)
  • Make confirm_form accessible in get_import_resource_kwargs and get_import_data_kwargs (#994, #1108)
  • Initialize Decimal with text value, fix #1035 (#1039)
  • Adds meta flag ‘skip_diff’ to enable skipping of diff operations (#1045)
  • Update docs (#1097, #1114, #1122, #969, #1083, #1093)

2.0.2 (2020-02-16)

  • Add support for tablib >= 1.0 (#1061)
  • Add ability to install a subset of tablib supported formats and save some automatic dependency installations (needs tablib >= 1.0)
  • Use column_name when checking row for fields (#1056)

2.0.1 (2020-01-15)

  • Fix deprecated Django 3.0 function usage (#1054)
  • Pin tablib version to not use new major version (#1063)
  • Format field is always shown on Django 2.2 (#1007)

2.0 (2019-12-03)

  • Removed support for Django < 2.0
  • Removed support for Python < 3.5
  • feat: Support for Postgres JSONb Field (#904)

1.2.0 (2019-01-10)

  • feat: Better surfacing of validation errors in UI / optional model instance validation (#852)
  • chore: Use modern setuptools in setup.py (#862)
  • chore: Update URLs to use https:// (#863)
  • chore: remove outdated workarounds
  • chore: Run SQLite tests with in-memory database
  • fix: Change logging level (#832)
  • fix: Changed get_instance() return val (#842)

1.1.0 (2018-10-02)

  • fix: Django2.1 ImportExportModelAdmin export (#797) (#819)
  • setup: add django2.1 to test matrix
  • JSONWidget for jsonb fields (#803)
  • Add ExportActionMixin (#809)
  • Add Import Export Permissioning #608 (#804)
  • write_to_tmp_storage() for import_action() (#781)
  • follow relationships on ForeignKeyWidget #798
  • Update all pypi.python.org URLs to pypi.org
  • added test for tsv import
  • added unicode support for TSV for python 2
  • Added ExportViewMixin (#692)

1.0.1 (2018-05-17)

  • Make deep copy of fileds from class attr to instance attr (#550)
  • Fix #612: NumberWidget.is_empty() should strip the value if string type (#613)
  • Fix #713: last day isn’t included in results qs (#779)
  • use Python3 compatible MySql driver in development (#706)
  • fix: warning U mode is deprecated in python 3 (#776)
  • refactor: easier overridding widgets and default field (#769)
  • Updated documentation regardign declaring fields (#735)
  • custom js for action form also handles grappelli (#719)
  • Use ‘verbose_name’ in breadcrumbs to match Django default (#732)
  • Add Resource.get_diff_class() (#745)
  • Fix and add polish translation (#747)
  • Restore raise_errors to before_import (#749)

1.0.0 (2018-02-13)

  • Switch to semver versioning (#687)
  • Require Django>=1.8 (#685)
  • upgrade tox configuration (#737)

0.7.0 (2018-01-17)

  • skip_row override example (#702)
  • Testing against Django 2.0 should not fail (#709)
  • Refactor transaction handling (#690)
  • Resolves #703 fields shadowed (#703)
  • discourage installation as a zipped egg (#548)
  • Fixed middleware settings in test app for Django 2.x (#696)

0.6.1 (2017-12-04)

  • Refactors and optimizations (#686, #632, #684, #636, #631, #629, #635, #683)
  • Travis tests for Django 2.0.x (#691)

0.6.0 (2017-11-23)

  • Refactor import_row call by using keyword arguments (#585)
  • Added {{ block.super }} call in block bodyclass in admin/base_site.html (#582)
  • Add support for the Django DurationField with DurationWidget (#575)
  • GitHub bmihelac -> django-import-export Account Update (#574)
  • Add intersphinx links to documentation (#572)
  • Add Resource.get_import_fields() (#569)
  • Fixed readme mistake (#568)
  • Bugfix/fix m2m widget clean (#515)
  • Allow injection of context data for template rendered by import_action() and export_action() (#544)
  • Bugfix/fix exception in generate_log_entries() (#543)
  • Process import dataset and result in separate methods (#542)
  • Bugfix/fix error in converting exceptions to strings (#526)
  • Fix admin integration tests for the new “Import finished…” message, update Czech translations to 100% coverage. (#596)
  • Make import form type easier to override (#604)
  • Add saves_null_values attribute to Field to control whether null values are saved on the object (#611)
  • Add Bulgarian translations (#656)
  • Add django 1.11 to TravisCI (#621)
  • Make Signals code example format correctly in documentation (#553)
  • Add Django as requirement to setup.py (#634)
  • Update import of reverse for django 2.x (#620)
  • Add Django-version classifiers to setup.py’s CLASSIFIERS (#616)
  • Some fixes for Django 2.0 (#672)
  • Strip whitespace when looking up ManyToMany fields (#668)
  • Fix all ResourceWarnings during tests in Python 3.x (#637)
  • Remove downloads count badge from README since shields.io no longer supports it for PyPi (#677)
  • Add coveralls support and README badge (#678)

0.5.1 (2016-09-29)

  • French locale not in pypi (#524)
  • Bugfix/fix undefined template variables (#519)

0.5.0 (2016-09-01)

  • Hide default value in diff when importing a new instance (#458)
  • Append rows to Result object via function call to allow overriding (#462)
  • Add get_resource_kwargs to allow passing request to resource (#457)
  • Expose Django user to get_export_data() and export() (#447)
  • Add before_export and after_export hooks (#449)
  • fire events post_import, post_export events (#440)
  • add **kwargs to export_data / create_dataset
  • Add before_import_row() and after_import_row() (#452)
  • Add get_export_fields() to Resource to control what fields are exported (#461)
  • Control user-visible fields (#466)
  • Fix diff for models using ManyRelatedManager
  • Handle already cleaned objects (#484)
  • Add after_import_instance hook (#489)
  • Use optimized xlsx reader (#482)
  • Adds resource_class of BookResource (re-adds) in admin docs (#481)
  • Require POST method for process_import() (#478)
  • Add SimpleArrayWidget to support use of django.contrib.postgres.fields.ArrayField (#472)
  • Add new Diff class (#477)
  • Fix #375: add row to widget.clean(), obj to widget.render() (#479)
  • Restore transactions for data import (#480)
  • Refactor the import-export templates (#496)
  • Update doc links to the stable version, update rtfd to .io (#507)
  • Fixed typo in the Czech translation (#495)

0.4.5 (2016-04-06)

  • Add FloatWidget, use with model fields models.FloatField (#433)

  • Fix default values in fields (#431, #364)

    Field constructor default argument is NOT_PROVIDED instead of None Field clean method checks value against Field.empty_values [None, ‘’]

0.4.4 (2016-03-22)

  • FIX: No static/ when installed via pip #427
  • Add total # of imports and total # of updates to import success msg

0.4.3 (2016-03-08)

  • fix MediaStorage does not respect the read_mode parameter (#416)
  • Reset SQL sequences when new objects are imported (#59)
  • Let Resource rollback if import throws exception (#377)
  • Fixes error when a single value is stored in m2m relation field (#177)
  • Add support for django.db.models.TimeField (#381)

0.4.2 (2015-12-18)

  • add xlsx import support

0.4.1 (2015-12-11)

  • fix for fields with a dyanmic default callable (#360)

0.4.0 (2015-12-02)

  • Add Django 1.9 support
  • Django 1.4 is not supported (#348)

0.3.1 (2015-11-20)

  • FIX: importing csv in python 3

0.3 (2015-11-20)

  • FIX: importing csv UnicodeEncodeError introduced in 0.2.9 (#347)

0.2.9 (2015-11-12)

  • Allow Field.save() relation following (#344)
  • Support default values on fields (and models) (#345)
  • m2m widget: allow trailing comma (#343)
  • Open csv files as text and not binary (#127)

0.2.8 (2015-07-29)

  • use the IntegerWidget for database-fields of type BigIntegerField (#302)
  • make datetime timezone aware if USE_TZ is True (#283).
  • Fix 0 is interpreted as None in number widgets (#274)
  • add possibility to override tmp storage class (#133, #251)
  • better error reporting (#259)

0.2.7 (2015-05-04)

  • Django 1.8 compatibility
  • add attribute inheritance to Resource (#140)
  • make the filename and user available to import_data (#237)
  • Add to_encoding functionality (#244)
  • Call before_import before creating the instance_loader - fixes #193

0.2.6 (2014-10-09)

  • added use of get_diff_headers method into import.html template (#158)
  • Try to use OrderedDict instead of SortedDict, which is deprecated in Django 1.7 (#157)
  • fixed #105 unicode import
  • remove invalid form action “form_url” #154

0.2.5 (2014-10-04)

  • Do not convert numeric types to string (#149)
  • implement export as an admin action (#124)

0.2.4 (2014-09-18)

  • fix: get_value raised attribute error on model method call
  • Fixed XLS import on python 3. Optimized loop
  • Fixed properly skipping row marked as skipped when importing data from the admin interface.
  • Allow Resource.export to accept iterables as well as querysets
  • Improve error messages
  • FIX: Properly handle NullBoleanField (#115) - Backward Incompatible Change previously None values were handled as false

0.2.3 (2014-07-01)

  • Add separator and field keyword arguments to ManyToManyWidget
  • FIX: No support for dates before 1900 (#93)

0.2.2 (2014-04-18)

  • RowResult now stores exception object rather than it’s repr
  • Admin integration - add EntryLog object for each added/updated/deleted instance

0.2.1 (2014-02-20)

  • FIX import_file_name form field can be use to access the filesystem (#65)

0.2.0 (2014-01-30)

  • Python 3 support

0.1.6 (2014-01-21)

  • Additional hooks for customizing the workflow (#61)

0.1.5 (2013-11-29)

  • Prevent queryset caching when exporting (#44)
  • Allow unchanged rows to be skipped when importing (#30)
  • Update tests for Django 1.6 (#57)
  • Allow different ResourceClass to be used in ImportExportModelAdmin (#49)

0.1.4

  • Use field_name instead of column_name for field dehydration, FIX #36
  • Handle OneToOneField, FIX #17 - Exception when attempting access something on the related_name.
  • FIX #23 - export filter not working

0.1.3

  • Fix packaging
  • DB transactions support for importing data

0.1.2

  • support for deleting objects during import
  • bug fixes
  • Allowing a field to be ‘dehydrated’ with a custom method
  • added documentation

0.1.1

  • added ExportForm to admin integration for choosing export file format
  • refactor admin integration to allow better handling of specific formats supported features and better handling of reading text files
  • include all available formats in Admin integration
  • bugfixes

0.1.0

  • Refactor api