signal post_import, post_export

This commit is contained in:
yueyoum 2016-04-22 14:25:28 +08:00
parent 869d4857c4
commit 2e3ece0835
4 changed files with 29 additions and 0 deletions

View File

@ -69,3 +69,4 @@ The following is a list of much appreciated contributors:
* jbradberry (Jeff Bradberry)
* antoniablair
* kellerkind
* yueyoum (Johnnie Wang)

View File

@ -271,6 +271,25 @@ that have their column ``delete`` set to ``1``::
model = Book
Signals
=======
To hook in the import export workflow, you can connect to ``post_import``, ``post_export`` signals:
from django.dispatch import receiver
from import_export.signals import post_import, post_export
@receiver(post_import, dispatch_uid='balabala...')
def _post_import(model, **kwargs):
# model is the actual model instance which after import
pass
@receiver(post_export, dispatch_uid='balabala...')
def _post_export(model, **kwargs):
# model is the actual model instance which after export
pass
.. _admin-integration:
Admin integration

View File

@ -29,6 +29,7 @@ from .resources import (
from .formats import base_formats
from .results import RowResult
from .tmp_storages import TempFolderStorage
from .signals import post_export, post_import
try:
from django.utils.encoding import force_text
@ -190,6 +191,8 @@ class ImportMixin(ImportExportMixinBase):
messages.success(request, success_message)
tmp_storage.remove()
post_import.send(sender=None, model=self.model)
url = reverse('admin:%s_%s_changelist' % self.get_model_info(),
current_app=self.admin_site.name)
return HttpResponseRedirect(url)
@ -364,6 +367,8 @@ class ExportMixin(ImportExportMixinBase):
response['Content-Disposition'] = 'attachment; filename=%s' % (
self.get_export_filename(file_format),
)
post_export.send(sender=None, model=self.model)
return response
context = {}

4
import_export/signals.py Normal file
View File

@ -0,0 +1,4 @@
from django.dispatch import Signal
post_export = Signal(providing_args=["model"])
post_import = Signal(providing_args=["model"])