From 64368eb18811853562fa881b1e170b4d61156da9 Mon Sep 17 00:00:00 2001 From: hgh Date: Wed, 15 Oct 2025 17:53:22 +0330 Subject: [PATCH] FEATURE(pg):check success again check success again --- apps/pg/admin.py | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/apps/pg/admin.py b/apps/pg/admin.py index 00a1d9d..650555c 100644 --- a/apps/pg/admin.py +++ b/apps/pg/admin.py @@ -2,10 +2,14 @@ import io import jdatetime import xlsxwriter -from django.contrib import admin +from django.contrib import admin, messages from django.db.models import Sum from django.http import HttpResponse from django.utils import timezone +from django.utils.html import format_html +from django.shortcuts import redirect +from django.urls import path +from utils.wallet_client import deposit_to_user_wallet_verify from .constans import StateChoices from .models import PaymentRequest, PNA, Fake @@ -61,7 +65,7 @@ def change_to_failed(model_admin, request, queryset): class PaymentRequestAdmin(admin.ModelAdmin): - list_display = ['state', 'uuid', 'splited_amount', 'user_id', 'jajali_datetime', 'created_at', 'application', 'gateway'] + list_display = ['state', 'check_success_again', 'uuid', 'splited_amount', 'user_id', 'jajali_datetime', 'created_at', 'application', 'gateway'] search_fields = ['application__uuid','application__client_id', 'amount', 'user__uuid'] list_filter = ['application', 'state', 'gateway'] actions = [export_exel, change_to_success, change_to_failed] @@ -78,6 +82,43 @@ class PaymentRequestAdmin(admin.ModelAdmin): extra_context['totals'] = totals return super().changelist_view(request, extra_context=extra_context) + def check_success_again(self, obj): + if obj.state == StateChoices.WALLET_SUBMIT_SUCCESS: + return format_html( + 'بررسی دوباره موفقیت', + f'{obj.uuid}/check_success_again/' + ) + return '' + + def get_urls(self): + urls = super().get_urls() + custom_urls = [ + path('/check_success_again/', self.admin_site.admin_view(self.check_success_again_view)) + ] + return custom_urls + urls + + def check_success_again_view(self, request, payment_request_uuid): + verify_response = deposit_to_user_wallet_verify(payment_request_uuid) + if not verify_response: + self.message_user(request, "خطای استعلام", level=messages.ERROR) + else: + if not verify_response.uuid or verify_response.state != 5: + to_pay_failed = PaymentRequest.objects.filter( + pk=payment_request_uuid, + state=StateChoices.WALLET_SUBMIT_SUCCESS.value + ).update( + state=StateChoices.FAILED.value, + ) + else: + to_pay_success = PaymentRequest.objects.filter( + pk=payment_request_uuid, + state=StateChoices.WALLET_SUBMIT_SUCCESS.value + ).update( + state=StateChoices.SUCCESS.value, + ) + self.message_user(request, f"درخواست {payment_request_uuid} بررسی شد ✅") + return redirect(request.META.get("HTTP_REFERER", "..")) + class FakeAdmin(admin.ModelAdmin): list_display = [ 'created_at']