From a98fcd0feb131e10295483b6b5dd091aeeedb262 Mon Sep 17 00:00:00 2001 From: dddennnisss Date: Fri, 14 Aug 2026 14:41:30 +0700 Subject: [PATCH] =?UTF-8?q?photo=5Fprocessor.py:=20=D0=B8=D0=B7=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D0=B0=D0=B5=D0=BC=20=D0=BB=D0=BE=D0=B3=D0=B8?= =?UTF-8?q?=D0=BD=20=D0=B8=D0=B7=20email?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- photo_bot/photo_processor.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/photo_bot/photo_processor.py b/photo_bot/photo_processor.py index b8db84a..1e92ec7 100644 --- a/photo_bot/photo_processor.py +++ b/photo_bot/photo_processor.py @@ -81,6 +81,30 @@ def get_crop_coordinates(image_bytes: bytes) -> tuple | None: return None +def _check_moderation_status(user_id: str) -> dict: + """ + Проверяет текущий статус модерации пользователя. + Возвращает {'status': 'ok', 'moderation_status': 'pending'|'published'|'none', ...} + """ + # Извлекаем логин из email (user_id@tcs.sibcem.ru -> user_id) + login = user_id.split('@')[0] + + status_url = API_URL.replace("/upload/", "/status/") + try: + response = requests.get( + status_url, + params={"user_id": login}, + headers={"X-API-Key": API_KEY}, + timeout=30, + verify=False + ) + response.raise_for_status() + return response.json() + except Exception as e: + logger.error(f"Ошибка проверки статуса модерации: {e}") + return {"status": "error", "reason": f"Ошибка проверки статуса: {str(e)}"} + + def _upload_to_api(image_bytes: bytes, user_id: str, coords: tuple) -> dict: """ Отправляет фото и координаты в Django API. @@ -122,6 +146,15 @@ def prepare_ad_photo(input_path: str, user_id: str, output_path: str = None, tar output_path и target_size больше не используются (оставлены для обратной совместимости). """ try: + # Проверяем статус модерации перед отправкой + status = _check_moderation_status(user_id) + if status.get("status") == "ok" and status.get("moderation_status") == "pending": + photo_id = status.get("photo_id", "???") + return { + "success": False, + "error": f"У вас уже есть фото на модерации (ID: {photo_id}). Дождитесь решения модератора." + } + # 1. Читаем байты if isinstance(input_path, bytes): image_bytes = input_path