import os
import random
from django.utils import timezone


def subject_book_upload_path(instance, filename):
    """
    Generate upload path for subject books:
    subjects/books/{school_id}/{standard_id}/{subject_id}/{filename}
    """
    ext = filename.split(".")[-1] if "." in filename else ""
    timestamp = timezone.now().strftime("%Y%m%d_%H%M%S")

    # Get subject ID
    subject_id = getattr(instance, "id", None)

    # Get standard ID (which is the class/grade)
    standard_id = getattr(instance, "standard_id", None)

    new_filename = (
        f"book_{subject_id}_{timestamp}.{ext}"
        if ext
        else f"book_{subject_id}_{timestamp}"
    )

    # Get school info
    school_id = "default"

    try:
        # Assuming Standard model has a school relationship
        if hasattr(instance, "standard") and instance.standard:
            if hasattr(instance.standard, "school_id"):
                school_id = instance.standard.school_id
            # Alternative if Standard is related to AcademicYear which has school
            elif (
                hasattr(instance.standard, "academic_year")
                and instance.standard.academic_year
            ):
                if hasattr(instance.standard.academic_year, "school_id"):
                    school_id = instance.standard.academic_year.school_id
    except:
        pass

    return f"subjects/books/{school_id}/{standard_id}/{subject_id}/{new_filename}"
