import os 
from django.utils import timezone


def jingle_upload_path(instance, filename):
    """
    Generate upload path for jingle files.
    
    Structure: jingles/{channel_name}/{YYYY-MM-DD}/{filename}
    """
    # Get channel name, fallback to 'unknown' if no channel
    channel_name = instance.channel.channel_name if instance.channel else 'unknown'
    
    # Clean channel name for filesystem
    channel_name = "".join(c for c in channel_name if c.isalnum() or c in (' ', '-', '_')).rstrip()
    channel_name = channel_name.replace(' ', '_').lower()
    
    # Get current date
    date_folder = timezone.now().strftime('%Y-%m-%d')
    
    # Clean filename
    filename = os.path.basename(filename)
    
    return f'jingles/{channel_name}/{date_folder}/{filename}'


def md5_upload_path(instance, filename):
    """
    Generate upload path for MD5 checksum files.
    
    Structure: jingles/{channel_name}/{YYYY-MM-DD}/checksums/{filename}.md5
    """
    # Get channel name, fallback to 'unknown' if no channel
    channel_name = instance.channel.channel_name if instance.channel else 'unknown'
    
    # Clean channel name for filesystem
    channel_name = "".join(c for c in channel_name if c.isalnum() or c in (' ', '-', '_')).rstrip()
    channel_name = channel_name.replace(' ', '_').lower()
    
    # Get current date
    date_folder = timezone.now().strftime('%Y-%m-%d')
    
    # Clean filename and add .md5 extension
    base_filename = os.path.splitext(os.path.basename(filename))[0]
    
    return f'jingles/{channel_name}/{date_folder}/checksums/{base_filename}.md5'


