from ftplib import FTP
from django.conf import settings
import os


def ensure_ftp_dirs(ftp, path):
    parts = path.split("/")
    current = ""

    for part in parts:
        if not part:
            continue

        current += f"/{part}"

        try:
            ftp.mkd(current)
        except Exception:

            pass


# def get_category_path(category):
#     parts = []

#     while category is not None:
#         parts.append(category.name)
#         category = category.parent

#     return "/".join(reversed(parts))


# def ceremony_upload_path(instance, filename):
#     category_path = get_category_path(instance.ceremony.category)
#     year = instance.ceremony.date.year

#     return f"{category_path}/{year}/{filename}"


def upload_to_ftp(file_obj, full_path):
    ftp = FTP(settings.FTP_HOST)
    ftp.login(settings.FTP_USER, settings.FTP_PASS)
    directory = 'main'
    filename = os.path.basename(full_path)

    ensure_ftp_dirs(ftp, directory)

    ftp.cwd(directory)

    ftp.storbinary(f"STOR {filename}", file_obj)

    ftp.quit()

    return full_path


from ftplib import FTP
from django.conf import settings

from ftplib import FTP
from urllib.parse import urlparse
from django.conf import settings

from ftplib import FTP
from urllib.parse import urlparse
from django.conf import settings


def delete_ftp_file(file_url):
    if not file_url:
        return

 
    ftp = FTP(settings.FTP_HOST)
    ftp.login(settings.FTP_USER, settings.FTP_PASS)
    path = urlparse(file_url).path  # /main/file.jpg
    # اگر دامنه هم بود فقط path رو بگیر
    if path.startswith("/"):
        full_path = path.lstrip("/")   # main/file.jpg
    else:
        full_path = path

    ftp.delete(full_path)
    ftp.quit()

 