Skip to content

Commit 3a63527

Browse files
DataGreedAsif Saif Uddin
authored andcommitted
#567 Fixes crash on bulk_send test message operation from admin
1 parent 0a78aa8 commit 3a63527

File tree

1 file changed

+33
-15
lines changed

1 file changed

+33
-15
lines changed

push_notifications/admin.py

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,21 @@ def send_messages(self, request, queryset, bulk=False):
5757
if "error" in r["results"][0]:
5858
errors.append(r["results"][0]["error"])
5959
else:
60-
try:
61-
errors = [r["error"] for r in ret[0][0]["results"] if "error" in r]
62-
except TypeError:
63-
for entry in ret[0][0]:
64-
errors = errors + [r["error"] for r in entry["results"] if "error" in r]
65-
except IndexError:
66-
pass
60+
if "results" in ret[0][0]:
61+
try:
62+
errors = [r["error"] for r in ret[0][0]["results"] if "error" in r]
63+
except TypeError:
64+
for entry in ret[0][0]:
65+
errors = errors + [r["error"] for r in entry["results"] if "error" in r]
66+
except IndexError:
67+
pass
68+
else:
69+
# different format, e.g.:
70+
# [{'some_token1': 'Success',
71+
# 'some_token2': 'BadDeviceToken'}]
72+
for key, value in ret[0][0].items():
73+
if value.lower() != "success":
74+
errors.append(value)
6775
if errors:
6876
self.message_user(
6977
request, _("Some messages could not be processed: %r" % (", ".join(errors))),
@@ -73,14 +81,24 @@ def send_messages(self, request, queryset, bulk=False):
7381
if bulk:
7482
# When the queryset exceeds the max_recipients value, the
7583
# send_message method returns a list of dicts, one per chunk
76-
try:
77-
success = ret[0][0]["success"]
78-
except TypeError:
79-
success = 0
80-
for entry in ret[0][0]:
81-
success = success + entry["success"]
82-
if success == 0:
83-
return
84+
if "results" in ret[0][0]:
85+
try:
86+
success = ret[0][0]["success"]
87+
except TypeError:
88+
success = 0
89+
for entry in ret[0][0]:
90+
success = success + entry["success"]
91+
if success == 0:
92+
return
93+
else:
94+
# different format, e.g.:
95+
# [{'some_token1': 'Success',
96+
# 'some_token2': 'BadDeviceToken'}]
97+
success = []
98+
for key, value in ret[0][0].items():
99+
if value.lower() == "success":
100+
success.append(key)
101+
84102
elif len(errors) == len(ret):
85103
return
86104
if errors:

0 commit comments

Comments
 (0)