import os
import re
from datetime import datetime, timedelta
from celery import shared_task
from django.conf import settings
import logging

logger = logging.getLogger(__name__)


@shared_task
def delete_old_import_error_files():
    """
    Удаляет файлы с ошибками импорта, которые не были скачаны пользователем в течение 24 часов.
    """
    temp_imports_dir = os.path.join(settings.MEDIA_ROOT, 'temp_imports')
    if not os.path.exists(temp_imports_dir):
        logger.info(f"Директория {temp_imports_dir} не существует. Задача завершена.")
        return

    current_time = datetime.now()
    files_deleted = 0

    for filename in os.listdir(temp_imports_dir):
        file_path = os.path.join(temp_imports_dir, filename)
        if os.path.isfile(file_path):
            # Извлекаем дату и время из имени файла
            match = re.search(r'customer_import_errors_(\d{8})_(\d{6})\.xlsx', filename)
            if match:
                file_date_str = match.group(1)
                file_time_str = match.group(2)
                file_datetime = datetime.strptime(f"{file_date_str} {file_time_str}", "%Y%m%d %H%M%S")

                # Проверяем, прошло ли 24 часа с момента создания файла
                if current_time - file_datetime > timedelta(hours=24):
                    try:
                        os.remove(file_path)
                        files_deleted += 1
                        logger.info(f"Удален файл: {file_path}")
                    except Exception as e:
                        logger.error(f"Ошибка при удалении файла {file_path}: {e}")

    logger.info(f"Удалено {files_deleted} устаревших файлов.")
    return files_deleted