diff --git a/mayan/apps/sources/apps.py b/mayan/apps/sources/apps.py index 3f19abcab9..738fd79ebc 100644 --- a/mayan/apps/sources/apps.py +++ b/mayan/apps/sources/apps.py @@ -1,5 +1,7 @@ from __future__ import absolute_import, unicode_literals +from django.apps import apps +from django.db.models.signals import pre_delete from django.utils.translation import ugettext_lazy as _ from mayan.apps.common.apps import MayanAppConfig @@ -17,7 +19,9 @@ from mayan.apps.navigation.classes import SourceColumn from .classes import StagingFile from .handlers import ( handler_copy_transformations_to_version, - handler_create_default_document_source, handler_initialize_periodic_tasks + handler_create_default_document_source, + handler_delete_interval_source_periodic_task, + handler_initialize_periodic_tasks ) from .links import ( link_document_create_multiple, link_setup_sources, @@ -41,6 +45,9 @@ class SourcesApp(MayanAppConfig): def ready(self): super(SourcesApp, self).ready() + DocumentType = apps.get_model( + app_label='documents', model_name='DocumentType' + ) POP3Email = self.get_model(model_name='POP3Email') IMAPEmail = self.get_model(model_name='IMAPEmail') @@ -162,3 +169,8 @@ class SourcesApp(MayanAppConfig): receiver=handler_copy_transformations_to_version, dispatch_uid='sources_handler_copy_transformations_to_version' ) + pre_delete.connect( + receiver=handler_delete_interval_source_periodic_task, + sender=DocumentType, + dispatch_uid='sources_handler_delete_interval_source_periodic_task' + ) diff --git a/mayan/apps/sources/handlers.py b/mayan/apps/sources/handlers.py index a83d841c13..06ed67195e 100644 --- a/mayan/apps/sources/handlers.py +++ b/mayan/apps/sources/handlers.py @@ -28,6 +28,11 @@ def handler_create_default_document_source(sender, **kwargs): ) +def handler_delete_interval_source_periodic_task(sender, instance, **kwargs): + for interval_source in instance.interval_sources.all(): + interval_source._delete_periodic_task() + + def handler_initialize_periodic_tasks(sender, **kwargs): POP3Email = apps.get_model(app_label='sources', model_name='POP3Email') IMAPEmail = apps.get_model(app_label='sources', model_name='IMAPEmail') diff --git a/mayan/apps/sources/models/base.py b/mayan/apps/sources/models/base.py index a313c10d44..1f1fefc2bf 100644 --- a/mayan/apps/sources/models/base.py +++ b/mayan/apps/sources/models/base.py @@ -176,11 +176,10 @@ class IntervalBaseModel(OutOfProcessSource): verbose_name=_('Interval') ) document_type = models.ForeignKey( - DocumentType, help_text=_( 'Assign a document type to documents uploaded from this source.' - ), on_delete=models.CASCADE, - verbose_name=_('Document type') + ), on_delete=models.CASCADE, to=DocumentType, + related_name='interval_sources', verbose_name=_('Document type') ) uncompress = models.CharField( choices=SOURCE_UNCOMPRESS_CHOICES,