from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.text import slugify


@receiver(post_save, sender='accounts.VendorProfile')
def update_live_session_slugs(sender, instance, **kwargs):
    """Regenerate slugs for non-ended LiveSessions when shop_name changes."""
    from live.models import LiveSession

    sessions = LiveSession.objects.filter(
        vendor=instance.user
    ).exclude(status='ended')

    for session in sessions:
        shop_name = slugify(instance.shop_name) if instance.shop_name else slugify(instance.user.full_name)
        title_slug = slugify(session.title)
        base_slug = f"{title_slug}-{shop_name}" if shop_name else title_slug
        slug = base_slug
        counter = 1
        while LiveSession.objects.filter(slug=slug).exclude(pk=session.pk).exists():
            slug = f"{base_slug}-{counter}"
            counter += 1
        if session.slug != slug:
            session.slug = slug
            session.save(update_fields=['slug'])
