63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
|
"""
|
||
|
This module contains the signal handlers of the :py:mod:`managemails` app.
|
||
|
|
||
|
The module starts Celery_ tasks.
|
||
|
|
||
|
.. _Celery: https://www.celeryproject.org/
|
||
|
|
||
|
"""
|
||
|
import logging
|
||
|
|
||
|
from django.db.models.signals import post_delete, post_save
|
||
|
from django.dispatch import receiver
|
||
|
|
||
|
from fileservertasks.tasks import create_file_mailbox, delete_file_mailbox
|
||
|
from managemails.models import Mailbox
|
||
|
from taskresults.models import TaskResult
|
||
|
|
||
|
_LOGGER = logging.getLogger(__name__)
|
||
|
|
||
|
|
||
|
@receiver(post_save, sender=Mailbox)
|
||
|
def handle_mailbox_created(sender, instance, created, **kwargs):
|
||
|
"""
|
||
|
Handles post creation actions on :py:class:`Mailbox <managemails.models.Mailbox>` instances.
|
||
|
|
||
|
:param sender: sender of the signal
|
||
|
:param instance: Mailbox instance
|
||
|
:param created: whether the instance has just been created
|
||
|
|
||
|
This signal handler starts a Celery_ task.
|
||
|
|
||
|
"""
|
||
|
if created:
|
||
|
taskresult = TaskResult.objects.create_task_result(
|
||
|
"handle_mailbox_created",
|
||
|
create_file_mailbox.s(instance.osuser.username, instance.username),
|
||
|
)
|
||
|
_LOGGER.info(
|
||
|
"Mailbox creation has been requested in task %s", taskresult.task_id
|
||
|
)
|
||
|
_LOGGER.debug("mailbox %s has been %s", instance, created and "created" or "updated")
|
||
|
|
||
|
|
||
|
@receiver(post_delete, sender=Mailbox)
|
||
|
def handle_mailbox_deleted(sender, instance, **kwargs):
|
||
|
"""
|
||
|
Handles cleanup actions to be done after deletion of a
|
||
|
:py:class:`Mailbox <managemails.models.Mailbox>` instance.
|
||
|
|
||
|
:param sender: sender of the signal
|
||
|
:param instance: Mailbox instance
|
||
|
|
||
|
This signal handler starts a Celery_ task.
|
||
|
|
||
|
"""
|
||
|
taskresult = TaskResult.objects.create_task_result(
|
||
|
"handle_mailbox_deleted",
|
||
|
delete_file_mailbox.s(instance.osuser.username, instance.username)
|
||
|
)
|
||
|
_LOGGER.info(
|
||
|
"Mailbox deletion has been requested in task %s", taskresult.task_id
|
||
|
)
|