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