admin
This commit is contained in:
parent
82c35ffc4a
commit
a318185147
3 changed files with 52 additions and 39 deletions
|
|
@ -43,6 +43,17 @@ class BasePGModel(models.Model):
|
|||
def reverse_request(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def jajali_datetime(self):
|
||||
def to_jalali(value):
|
||||
if value:
|
||||
import jdatetime
|
||||
return jdatetime.datetime.fromgregorian(date=value, locale='fa_IR').strftime("%Y/%m/%d-%H:%M:%S")
|
||||
else:
|
||||
return value
|
||||
|
||||
return to_jalali(self.created_at)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
|
|
|||
|
|
@ -13,16 +13,23 @@ from django.urls import path
|
|||
|
||||
from .constans import StateChoices
|
||||
from .forms import ApplicationGatewayPolicyForm
|
||||
from .models import PaymentRequest, PNA, Fake, ApplicationGatewayPolicy
|
||||
from .models import PaymentRequest, PNA, Fake, ApplicationGatewayPolicy, SEP
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class PNAAdmin(admin.ModelAdmin):
|
||||
list_display = ['pna_status_code', 'pna_status_message', 'jajali_datetime', 'payment_request']
|
||||
list_filter = ['pna_status']
|
||||
search_fields = ['pna_status_code', 'pna_status_message']
|
||||
|
||||
|
||||
class SEPAdmin(admin.ModelAdmin):
|
||||
list_display = ['sep_status_code', 'sep_status_message', 'jajali_datetime', 'payment_request']
|
||||
list_filter = ['sep_status']
|
||||
search_fields = ['sep_status_code', 'sep_status_message']
|
||||
|
||||
|
||||
@admin.action(description="export exel")
|
||||
def export_exel(modeladmin, request, queryset):
|
||||
output = io.BytesIO()
|
||||
|
|
@ -55,6 +62,7 @@ def export_exel(modeladmin, request, queryset):
|
|||
# return the response
|
||||
return response
|
||||
|
||||
|
||||
@admin.action(description="mark as registered")
|
||||
def mark_as_registered(model_admin, request, queryset):
|
||||
for obj in queryset:
|
||||
|
|
@ -63,12 +71,12 @@ def mark_as_registered(model_admin, request, queryset):
|
|||
|
||||
|
||||
class PaymentRequestAdmin(admin.ModelAdmin):
|
||||
list_display = ['state', 'check_success_again', 'uuid', 'splited_amount', 'user_id', 'jajali_datetime', 'is_registered', 'created_at', 'application', 'gateway']
|
||||
search_fields = ['application__uuid','application__client_id', 'amount', 'user__uuid']
|
||||
list_display = ['state', 'check_success_again', 'uuid', 'splited_amount', 'user_id', 'jajali_datetime',
|
||||
'is_registered', 'created_at', 'application', 'gateway']
|
||||
search_fields = ['application__uuid', 'application__client_id', 'amount', 'user__uuid']
|
||||
list_filter = ['application', 'state', 'gateway']
|
||||
actions = [export_exel, mark_as_registered]
|
||||
|
||||
|
||||
def changelist_view(self, request, extra_context=None):
|
||||
extra_context = extra_context or {}
|
||||
|
||||
|
|
@ -81,7 +89,8 @@ class PaymentRequestAdmin(admin.ModelAdmin):
|
|||
return super().changelist_view(request, extra_context=extra_context)
|
||||
|
||||
def check_success_again(self, obj):
|
||||
if obj.state in [StateChoices.IPG_SUCCESS, StateChoices.WALLET_SUBMIT_PENDING, StateChoices.WALLET_SUBMIT_SUCCESS]:
|
||||
if obj.state in [StateChoices.IPG_SUCCESS, StateChoices.WALLET_SUBMIT_PENDING,
|
||||
StateChoices.WALLET_SUBMIT_SUCCESS]:
|
||||
return format_html(
|
||||
'<a class="button" href="{}">بررسی دوباره موفقیت</a>',
|
||||
f'{obj.uuid}/check_success_again/'
|
||||
|
|
@ -91,9 +100,11 @@ class PaymentRequestAdmin(admin.ModelAdmin):
|
|||
def get_urls(self):
|
||||
urls = super().get_urls()
|
||||
custom_urls = [
|
||||
path('<uuid:payment_request_uuid>/check_success_again/', self.admin_site.admin_view(self.check_success_again_view))
|
||||
path('<uuid:payment_request_uuid>/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):
|
||||
logger.info(f"[Admin panel] Check success again for payment_request_uuid={payment_request_uuid}")
|
||||
payment_request: PaymentRequest = get_object_or_404(PaymentRequest, uuid=payment_request_uuid)
|
||||
|
|
@ -111,7 +122,7 @@ class PaymentRequestAdmin(admin.ModelAdmin):
|
|||
|
||||
|
||||
class FakeAdmin(admin.ModelAdmin):
|
||||
list_display = [ 'created_at']
|
||||
list_display = ['created_at']
|
||||
|
||||
|
||||
class ApplicationGatewayPolicyAdmin(admin.ModelAdmin):
|
||||
|
|
@ -120,5 +131,6 @@ class ApplicationGatewayPolicyAdmin(admin.ModelAdmin):
|
|||
|
||||
admin.site.register(PaymentRequest, PaymentRequestAdmin)
|
||||
admin.site.register(PNA, PNAAdmin)
|
||||
admin.site.register(SEP, SEPAdmin)
|
||||
admin.site.register(Fake, FakeAdmin)
|
||||
admin.site.register(ApplicationGatewayPolicy, ApplicationGatewayPolicyAdmin)
|
||||
|
|
@ -243,16 +243,6 @@ class PNA(BasePGModel):
|
|||
|
||||
client = PNAClient()
|
||||
|
||||
@property
|
||||
def jajali_datetime(self):
|
||||
def to_jalali(value):
|
||||
if value:
|
||||
return jdatetime.datetime.fromgregorian(date=value, locale='fa_IR').strftime("%Y/%m/%d-%H:%M:%S")
|
||||
else:
|
||||
return value
|
||||
|
||||
return to_jalali(self.created_at)
|
||||
|
||||
def make_request(self):
|
||||
self.payment_request.change_state(StateChoices.CREATED, StateChoices.IPG_PENDING, 'can not change state')
|
||||
amount = self.payment_request.amount + self.payment_request.commission
|
||||
|
|
@ -428,27 +418,27 @@ class SEP(BasePGModel):
|
|||
raise NotImplementedError()
|
||||
|
||||
|
||||
# class Fake(BasePGModel):
|
||||
# label = GatewayChoise.FAKE.value
|
||||
# image = f'image/{GatewayChoise.FAKE.value}.png'
|
||||
#
|
||||
# payment_request = models.OneToOneField(PaymentRequest, on_delete=models.PROTECT, related_name='+')
|
||||
#
|
||||
# def make_request(self):
|
||||
# self.payment_request.change_state(StateChoices.CREATED, StateChoices.IPG_PENDING, 'can not change state')
|
||||
#
|
||||
# def get_pg_page_url(self):
|
||||
# return reverse('pg:payment-confirm-view', kwargs={'uuid': self.payment_request.uuid})
|
||||
#
|
||||
# def confirm_request(self, request=None):
|
||||
# self.payment_request.change_state(StateChoices.IPG_PENDING, StateChoices.IPG_SUCCESS, 'can not change state')
|
||||
#
|
||||
# self.payment_request.charge_wallet_balance()
|
||||
# messages.success(request, 'شارژ انجام شد')
|
||||
# self.save()
|
||||
#
|
||||
# def reverse_request(self):
|
||||
# raise NotImplementedError()
|
||||
class Fake(BasePGModel):
|
||||
# label = GatewayChoise.FAKE.value
|
||||
# image = f'image/{GatewayChoise.FAKE.value}.png'
|
||||
|
||||
payment_request = models.OneToOneField(PaymentRequest, on_delete=models.PROTECT, related_name='+')
|
||||
|
||||
def make_request(self):
|
||||
self.payment_request.change_state(StateChoices.CREATED, StateChoices.IPG_PENDING, 'can not change state')
|
||||
|
||||
def get_pg_page_url(self):
|
||||
return reverse('pg:payment-confirm-view', kwargs={'uuid': self.payment_request.uuid})
|
||||
|
||||
def confirm_request(self, request=None):
|
||||
self.payment_request.change_state(StateChoices.IPG_PENDING, StateChoices.IPG_SUCCESS, 'can not change state')
|
||||
|
||||
self.payment_request.charge_wallet_balance()
|
||||
messages.success(request, 'شارژ انجام شد')
|
||||
self.save()
|
||||
|
||||
def reverse_request(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
class ApplicationGatewayPolicy(BaseModel):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue