Skip to content

Commit 85d719c

Browse files
committed
Allow to process only specific selected webhook payloads
1 parent 494de6d commit 85d719c

File tree

2 files changed

+47
-15
lines changed

2 files changed

+47
-15
lines changed

thebook/webhooks/admin.py

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,14 @@
1-
from django.contrib import admin
1+
from django.contrib import admin, messages
2+
from django.utils.translation import gettext as _
3+
from django.utils.translation import ngettext
24

35
from thebook.webhooks.models import OpenPixWebhookPayload, PaypalWebhookPayload
46

57

6-
@admin.action(description="Process OpenPix Webhook Payload")
7-
def process_openpix_payload(modeladmin, request, queryset):
8-
OpenPixWebhookPayload.objects.process_received_payloads()
9-
10-
11-
@admin.action(description="Process PayPal Webhook Payload")
12-
def process_paypal_payload(modeladmin, request, queryset):
13-
PaypalWebhookPayload.objects.process_received_payloads()
14-
15-
168
@admin.register(OpenPixWebhookPayload)
179
class OpenPixWebhookPayloadAdmin(admin.ModelAdmin):
1810
actions = [
19-
process_openpix_payload,
11+
"process_payload",
2012
]
2113
list_display = [
2214
"status",
@@ -26,11 +18,27 @@ class OpenPixWebhookPayloadAdmin(admin.ModelAdmin):
2618
"status",
2719
]
2820

21+
@admin.action(description=_("Process selected webhook payloads"))
22+
def process_payload(self, request, queryset):
23+
for processed, payload in enumerate(queryset, start=1):
24+
payload.process()
25+
26+
self.message_user(
27+
request,
28+
ngettext(
29+
"%(processed)d webhook payload processed.",
30+
"%(processed)d webhook payloads processed.",
31+
processed,
32+
)
33+
% {"processed": processed},
34+
messages.SUCCESS,
35+
)
36+
2937

3038
@admin.register(PaypalWebhookPayload)
3139
class PaypalWebhookPayloadAdmin(admin.ModelAdmin):
3240
actions = [
33-
process_paypal_payload,
41+
"process_payload",
3442
]
3543
list_display = [
3644
"status",
@@ -39,3 +47,19 @@ class PaypalWebhookPayloadAdmin(admin.ModelAdmin):
3947
list_filter = [
4048
"status",
4149
]
50+
51+
@admin.action(description=_("Process selected webhook payloads"))
52+
def process_payload(self, request, queryset):
53+
for processed, payload in enumerate(queryset, start=1):
54+
payload.process()
55+
56+
self.message_user(
57+
request,
58+
ngettext(
59+
"%(processed)d webhook payload processed.",
60+
"%(processed)d webhook payloads processed.",
61+
processed,
62+
)
63+
% {"processed": processed},
64+
messages.SUCCESS,
65+
)

thebook/webhooks/managers.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,26 @@ class OpenPixWebhookPayloadManager(models.Manager):
99
def process_received_payloads(self):
1010
from thebook.webhooks.models import ProcessingStatus
1111

12-
for payload in self.filter(status=ProcessingStatus.RECEIVED):
12+
for processed, payload in enumerate(
13+
self.filter(status=ProcessingStatus.RECEIVED), start=1
14+
):
1315
payload.process()
1416

17+
return processed
18+
1519

1620
class PayPalWebhookPayloadManager(models.Manager):
1721

1822
def process_received_payloads(self):
1923
from thebook.webhooks.models import ProcessingStatus
2024

21-
for payload in self.filter(status=ProcessingStatus.RECEIVED):
25+
for processed, payload in enumerate(
26+
self.filter(status=ProcessingStatus.RECEIVED), start=1
27+
):
2228
payload.process()
2329

30+
return processed
31+
2432

2533
def fetch_transactions(start_date: datetime.date, end_date: datetime.date):
2634
bank_account, _ = BankAccount.objects.get_or_create(name="PayPal")

0 commit comments

Comments
 (0)