from django.db.models.signals import post_save
from django.dispatch import receiver
from django.db import transaction
import logging

from organization.models import Organization, SyncLog

logger = logging.getLogger(__name__)


@receiver(post_save, sender=SyncLog)
def on_sync_log_created(sender, instance, created, **kwargs):
    """
    Signal handler when SyncLog is created.
    
    Note: Extend this to send notifications, webhooks, etc.
    """
    if created:
        logger.info(f"New sync log created: {instance.sync_id}")

    # Send notification on completion
    if instance.status == SyncLog.SyncStatus.COMPLETED and not created:
        logger.info(f"Sync {instance.sync_id} completed successfully")
        # TODO: Send email notification, Slack message, etc.

    # Alert on failure
    if instance.status == SyncLog.SyncStatus.FAILED:
        logger.error(f"Sync {instance.sync_id} failed: {instance.error_message}")
        # TODO: Send alert notification


@receiver(post_save, sender=Organization)
def on_organization_saved(sender, instance, created, **kwargs):
    """
    Signal handler when Organization is created or updated.
    
    Note: Extend this for post-processing, validation, etc.
    """
    if created:
        logger.info(f"New organization created: {instance.name}")
        # TODO: Create default resources (classrooms, departments, etc.)
    else:
        logger.debug(f"Organization updated: {instance.name}")
