diff --git a/api/routes.py b/api/routes.py index d5c7da4..1b73188 100644 --- a/api/routes.py +++ b/api/routes.py @@ -112,13 +112,13 @@ def setup_routes(app: FastAPI) -> None: @app.post("/download_all", summary="Скачать все файлы за период") async def download_all(dates: DownloadRange, background_tasks: BackgroundTasks): - date_start = dates.data_start - date_finish = dates.data_finish + date_start_str = dates.data_start + date_finish_str = dates.data_finish field_name = getattr(dates, 'field_name', 'status') # Поле для фильтрации (по умолчанию 'status') try: - start_date = datetime.strptime(date_start, "%Y-%m-%d") - finish_date = datetime.strptime(date_finish, "%Y-%m-%d") + start_date = datetime.strptime(date_start_str, "%Y-%m-%d") + finish_date = datetime.strptime(date_finish_str, "%Y-%m-%d") + timedelta(days=1) except ValueError: return {"error": "Неверный формат даты. Используйте YYYY-MM-DD"} @@ -126,18 +126,21 @@ def setup_routes(app: FastAPI) -> None: return {"error": "Дата начала не может быть позже даты окончания"} # 1. Получаем список заголовков из БД + start_date_str = start_date.strftime("%Y-%m-%d") + finish_date_str = finish_date.strftime("%Y-%m-%d") try: - titles_from_db = wp.get_articles_by_filter(field_name, date_start, date_finish) + titles_from_db = wp.get_articles_by_filter(field_name, start_date_str, finish_date_str) except Exception as e: return {"error": f"Ошибка при получении данных из БД: {e}"} if not titles_from_db: return {"error": "Нет статей с выбранным фильтром за указанный период", "field_name": field_name} + # 2. Собираем все файлы .docx за период all_files = [] current_date = start_date - while current_date <= finish_date + timedelta(days=1): + while current_date <= finish_date : date_path = current_date.strftime("%Y/%m/%d") full_dir_path = os.path.join(DOCUMENTS_DIR, date_path) @@ -152,11 +155,11 @@ def setup_routes(app: FastAPI) -> None: if not all_files: return {"error": "Файлы не найдены за указанный период", - "date_start": date_start, - "date_finish": date_finish, + "date_start": date_start_str, + "date_finish": date_finish_str, "titles_found": len(titles_from_db)} - archive_name = f"documents_{date_start}_{date_finish}.zip" + archive_name = f"documents_{date_start_str}_{date_finish_str}.zip" archive_path = os.path.join(DOCUMENTS_DIR, archive_name) try: