Skip to content

Commit

Permalink
gcm: Simplify device deactivation on error
Browse files Browse the repository at this point in the history
  • Loading branch information
jleclanche committed Jun 30, 2015
1 parent 1a0a8a5 commit d992d39
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions push_notifications/gcm.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
class GCMError(NotificationError):
pass

device_errors = ["NotRegistered", "InvalidRegistration"]


def _chunks(l, n):
"""
Expand Down Expand Up @@ -74,13 +72,16 @@ def _gcm_send_plain(registration_id, data, **kwargs):
data = urlencode(sorted(values.items())).encode("utf-8") # sorted items for tests

result = _gcm_send(data, "application/x-www-form-urlencoded;charset=UTF-8")

if result.startswith("Error="):
for error in device_errors:
if error in result:
device = GCMDevice.objects.filter(registration_id=values["registration_id"])
device.update(active=0)
return result
if result in ("Error=NotRegistered", "Error=InvalidRegistration"):
# Deactivate the problematic device
device = GCMDevice.objects.filter(registration_id=values["registration_id"])
device.update(active=0)
return result

raise GCMError(result)

return result


Expand Down

0 comments on commit d992d39

Please sign in to comment.