Merge pull request 'fixed draw and draw-results notification logics' (#3) from dev into master

Reviewed-on: #3
This commit is contained in:
2025-07-21 20:10:30 +00:00
3 changed files with 14 additions and 4 deletions

View File

@@ -12,6 +12,7 @@ from .forms import AddParticipantsForm
from webapp.models import Invoice, Client, BindingRequest from webapp.models import Invoice, Client, BindingRequest
from bot.notifications import NotificationService from bot.notifications import NotificationService
from bot.utils import create_bot_instance from bot.utils import create_bot_instance
from .views import view_draw_results
# Настройка логгера # Настройка логгера
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -173,8 +174,6 @@ def confirm_draw_result(request, result_id):
# Получаем клиента по счету участника # Получаем клиента по счету участника
client = get_client_by_invoice(result.participant.invoice) client = get_client_by_invoice(result.participant.invoice)
# Если уведомление вызывает ошибки, можно временно его отключить,
# чтобы проверить базовую функциональность подтверждения.
if client: if client:
try: try:
# Можно попробовать запуск уведомления в отдельном потоке или отключить его временно: # Можно попробовать запуск уведомления в отдельном потоке или отключить его временно:
@@ -182,7 +181,7 @@ def confirm_draw_result(request, result_id):
except Exception as e: except Exception as e:
logger.error(f"Ошибка отправки уведомления о статусе приза пользователю {client.telegram_id}: {e}") logger.error(f"Ошибка отправки уведомления о статусе приза пользователю {client.telegram_id}: {e}")
return HttpResponseRedirect(reverse("admin:start_draw", args=[result.lottery.id])) return HttpResponseRedirect(reverse("admin:view_draw_results", args=[result.lottery.id]))
@admin.register(Lottery) @admin.register(Lottery)
@@ -195,6 +194,8 @@ class LotteryAdmin(admin.ModelAdmin):
custom_urls = [ custom_urls = [
path('<int:lottery_id>/start-draw/', self.admin_site.admin_view(start_draw), name='start_draw'), path('<int:lottery_id>/start-draw/', self.admin_site.admin_view(start_draw), name='start_draw'),
path('confirm-draw-result/<int:result_id>/', self.admin_site.admin_view(confirm_draw_result), name='confirm_draw_result'), path('confirm-draw-result/<int:result_id>/', self.admin_site.admin_view(confirm_draw_result), name='confirm_draw_result'),
path('<int:lottery_id>/view-draw-results/', self.admin_site.admin_view(view_draw_results), name='view_draw_results'),
] ]
return custom_urls + urls return custom_urls + urls

View File

@@ -1,3 +1,12 @@
from django.shortcuts import render from django.shortcuts import render
from django.shortcuts import get_object_or_404
from .models import Lottery, DrawResult
# Create your views here.
def view_draw_results(request, lottery_id):
lottery = get_object_or_404(Lottery, id=lottery_id)
draw_results = lottery.draw_results.all()
return render(request, "admin/draw_result.html", {
"lottery": lottery,
"draw_results": draw_results
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB