From 656c8d9d9a06341d4c0eac0847acf84e3d273f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=91=D0=B0=D0=BD=D0=B4?= =?UTF-8?q?=D1=83=D1=80=D0=B8=D1=81=D1=82?= Date: Fri, 8 May 2026 14:35:42 +1000 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=B2=D1=8B=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=B7=D0=BA=D0=B5=20=D0=B7=D0=B0=20=D0=BF=D0=B5=D0=B8?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=BF=D1=80=D0=B8=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D1=8E=D1=89=D0=B5=D0=B5=20=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D1=8C=20=D0=BA=20=D1=84=D0=B8=D0=BD=D0=B8=D1=88?= =?UTF-8?q?=D1=83,=20=D1=8D=D1=82=D0=BE=20=D1=81=D0=B2=D1=8F=D0=B7=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=20=D0=BE=D1=81=D0=BE=D0=B1=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D1=8F=D0=BC=D0=B8=20sql=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/routes.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) 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: