diff --git a/restoran_max_bot/restoran_max_bot/command_handlers.py b/restoran_max_bot/restoran_max_bot/command_handlers.py index 286c452..cd95a71 100644 --- a/restoran_max_bot/restoran_max_bot/command_handlers.py +++ b/restoran_max_bot/restoran_max_bot/command_handlers.py @@ -1,12 +1,13 @@ # command_handlers.py import json import qrcode +import os from max_bot.models import Client, Contact from restoran_max_bot.common import common_get_data, common_get_integration from restoran_max_bot.iiko_api import customer_info, customer_create, customer_wallet from restoran_max_bot.rkiper_api import rkiper_customer_info, rkiper_customer_create from restoran_max_bot.message_sender import send_text, send_image, send_menu, send_feedback_buttons, send_booking_people_buttons, send_link_button -from restoran_max_bot.settings import STATICFILES_DIRS, BASE_URL +from restoran_max_bot.settings import BASE_URL, MEDIA_ROOT, MEDIA_URL from restoran_max_bot.utils import is_json from restoran_max_bot.bot_started import check_registration from restoran_max_bot.promo_handlers import bot_promo @@ -108,8 +109,11 @@ def _handle_bonus(client: Client, chat_id: str, token: str, contact: Contact) -> """Обработка команды бонусов: генерация QR и запрос баланса.""" # Генерируем QR-код img = qrcode.make(contact.phone) - img.save(f"{STATICFILES_DIRS[0]}/client_qr/{contact.phone}.png") - qr_url = f"https://maxbot.telefon-ip.ru/static/client_qr/{contact.phone}.png" + file_name = f"{contact.phone}.png" + client_qr_dir = os.path.join(MEDIA_ROOT, 'client_qr') + os.makedirs(client_qr_dir, exist_ok=True) + img.save(os.path.join(client_qr_dir, file_name)) + qr_url = f"{BASE_URL}{MEDIA_URL}client_qr/{file_name}" send_image(chat_id, token, qr_url, 'QR-код для начисления, списания бонусов.') # Получаем баланс diff --git a/restoran_max_bot/restoran_max_bot/promo_handlers.py b/restoran_max_bot/restoran_max_bot/promo_handlers.py index 1a5cd79..16a801c 100644 --- a/restoran_max_bot/restoran_max_bot/promo_handlers.py +++ b/restoran_max_bot/restoran_max_bot/promo_handlers.py @@ -1,9 +1,10 @@ # promo_handlers.py import qrcode +import os from max_bot.models import Client, PromoCode from restoran_max_bot.common import common_get_data from restoran_max_bot.message_sender import send_text, send_image -from restoran_max_bot.settings import STATICFILES_DIRS, BASE_URL +from restoran_max_bot.settings import BASE_URL, MEDIA_ROOT, MEDIA_URL from restoran_max_bot.user_logger import log_user_action @@ -68,8 +69,13 @@ def bot_promo(client: Client, message: dict, settings_max: dict) -> bool: url_promo = f"{base_url}{promo}/{chat_id}/{client_id}" img = qrcode.make(url_promo) file_name = f"{promo}-{chat_id}-{client_id}.png" - img.save(f"{STATICFILES_DIRS[0]}/client_qr/{file_name}") - qr_url = f"{BASE_URL}/static/client_qr/{file_name}" + + # Сохраняем в медиа-папку + client_qr_dir = os.path.join(MEDIA_ROOT, 'client_qr') + os.makedirs(client_qr_dir, exist_ok=True) + img.save(os.path.join(client_qr_dir, file_name)) + + qr_url = f"{BASE_URL}{MEDIA_URL}client_qr/{file_name}" # Выводим ссылки в консоль для отладки print(f"🔍 PROMO DEBUG: статус-ссылка = {url_promo}") diff --git a/restoran_max_bot/restoran_max_bot/urls.py b/restoran_max_bot/restoran_max_bot/urls.py index f71d750..7ed6966 100644 --- a/restoran_max_bot/restoran_max_bot/urls.py +++ b/restoran_max_bot/restoran_max_bot/urls.py @@ -1,5 +1,7 @@ from django.contrib import admin from django.urls import path, include +from django.conf import settings +from django.conf.urls.static import static from max_bot.views import promo_status, promo_activate @@ -10,3 +12,7 @@ urlpatterns = [ path('promo/status///', promo_status), path('promo/activate///', promo_activate), ] + +# Обслуживание медиафайлов в режиме разработки +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)