from wagtail.admin.mail import (
    GroupApprovalTaskStateSubmissionEmailNotifier, WorkflowStateApprovalEmailNotifier,
    WorkflowStateRejectionEmailNotifier, WorkflowStateSubmissionEmailNotifier)
from wagtail.core.models import TaskState, WorkflowState
from wagtail.core.signals import (
    task_submitted, workflow_approved, workflow_rejected, workflow_submitted)


task_submission_email_notifier = GroupApprovalTaskStateSubmissionEmailNotifier()
workflow_submission_email_notifier = WorkflowStateSubmissionEmailNotifier()
workflow_approval_email_notifier = WorkflowStateApprovalEmailNotifier()
workflow_rejection_email_notifier = WorkflowStateRejectionEmailNotifier()


def register_signal_handlers():
    task_submitted.connect(task_submission_email_notifier, sender=TaskState, dispatch_uid='group_approval_task_submitted_email_notification')

    workflow_submitted.connect(workflow_submission_email_notifier, sender=WorkflowState, dispatch_uid='workflow_state_submitted_email_notification')
    workflow_rejected.connect(workflow_rejection_email_notifier, sender=WorkflowState, dispatch_uid='workflow_state_rejected_email_notification')
    workflow_approved.connect(workflow_approval_email_notifier, sender=WorkflowState, dispatch_uid='workflow_state_approved_email_notification')
