diff --git a/apps/core/models.py b/apps/core/models.py
index dd19bf8..9ff8c7a 100644
--- a/apps/core/models.py
+++ b/apps/core/models.py
@@ -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
diff --git a/apps/pg/admin.py b/apps/pg/admin.py
index 906e450..7188deb 100644
--- a/apps/pg/admin.py
+++ b/apps/pg/admin.py
@@ -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(
'بررسی دوباره موفقیت',
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('/check_success_again/', self.admin_site.admin_view(self.check_success_again_view))
+ 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):
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)
\ No newline at end of file
+admin.site.register(ApplicationGatewayPolicy, ApplicationGatewayPolicyAdmin)
diff --git a/apps/pg/models.py b/apps/pg/models.py
index e8a146f..595ad18 100644
--- a/apps/pg/models.py
+++ b/apps/pg/models.py
@@ -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):