예제 #1
0
    def test_get_filtered_devices_queryset_on_user(self):
        for i in range(0, 3):
            get_user_model().objects.create_user(
                username='******' % i,
                email='*****@*****.**' % i,
                password=i
            )

        user1 = get_user_model().objects.get(pk=1)
        user2 = get_user_model().objects.get(pk=2)

        # Add 5 devices to user2
        for i in range(0, 5):
            Device.objects.create(
                key='TEST_DEVICE_KEY_{}'.format(i),
                type=Device.DEVICE_TYPE_ANDROID,
                user=user2
            )

        # Check that user2 has 5 devices
        notification = PushNotification.objects.create(
            title='test',
            payload=self.payload,
            active=PushNotification.PUSH_ACTIVE,
            sent=PushNotification.PUSH_NOT_SENT,
            filter_user=user2.id
        )

        devices = get_filtered_devices_queryset(notification.to_dict())

        self.assertEqual(devices.count(), 5)

        # Check that user 1 has no devices
        notification = PushNotification.objects.create(
            title='test',
            payload=self.payload,
            active=PushNotification.PUSH_ACTIVE,
            sent=PushNotification.PUSH_NOT_SENT,
            filter_user=user1.id
        )

        devices = get_filtered_devices_queryset(notification.to_dict())

        self.assertEqual(devices.count(), 0)
예제 #2
0
    def test_get_filtered_devices_queryset_on_user(self):
        for i in range(0, 3):
            get_user_model().objects.create_user(
                username='******' % i,
                email='*****@*****.**' % i,
                password=i)

        user1 = get_user_model().objects.get(pk=1)
        user2 = get_user_model().objects.get(pk=2)

        # Add 5 devices to user2
        for _ in range(0, 5):
            Device.objects.create(key='TEST_DEVICE_KEY',
                                  type=Device.DEVICE_TYPE_ANDROID,
                                  user=user2)

        # Check that user2 has 5 devices
        notification = PushNotification.objects.create(
            title='test',
            payload=self.payload,
            active=PushNotification.PUSH_ACTIVE,
            sent=PushNotification.PUSH_NOT_SENT,
            filter_user=user2.id)

        devices = get_filtered_devices_queryset(notification)

        self.assertEqual(devices.count(), 5)

        # Check that user 1 has no devices
        notification = PushNotification.objects.create(
            title='test',
            payload=self.payload,
            active=PushNotification.PUSH_ACTIVE,
            sent=PushNotification.PUSH_NOT_SENT,
            filter_user=user1.id)

        devices = get_filtered_devices_queryset(notification)

        self.assertEqual(devices.count(), 0)
예제 #3
0
def send_push_notification_group(notification_id, offset=0, limit=1000):
    try:
        notification = PushNotification.objects.get(pk=notification_id)
    except PushNotification.DoesNotExist:
        return False

    devices = get_filtered_devices_queryset(notification)

    devices = devices[offset:offset + limit]

    for device in devices:
        send_single_push_notification(device, notification.payload)

    return True
예제 #4
0
def create_push_notification_groups(notification_id):
    try:
        notification = PushNotification.objects.get(pk=notification_id)
    except PushNotification.DoesNotExist:
        return False

    devices = get_filtered_devices_queryset(notification)

    if devices.count() > 0:
        count = devices.count()
        limit = getattr(settings, 'PUSHY_DEVICE_KEY_LIMIT', 1000)
        group(
            send_push_notification_group.s(notification_id, offset, limit)
            for offset in range(0, count, limit)).delay()
예제 #5
0
def send_push_notification_group(notification_id, offset=0, limit=1000):
    try:
        notification = PushNotification.objects.get(pk=notification_id)
    except PushNotification.DoesNotExist:
        return False

    devices = get_filtered_devices_queryset(notification)

    devices = devices[offset:offset+limit]

    for device in devices:
        send_single_push_notification(device, notification.payload)

    return True
예제 #6
0
def create_push_notification_groups(notification_id):
    try:
        notification = PushNotification.objects.get(pk=notification_id)
    except PushNotification.DoesNotExist:
        return False

    devices = get_filtered_devices_queryset(notification)

    if devices.count() > 0:
        count = devices.count()
        limit = getattr(settings, 'PUSHY_DEVICE_KEY_LIMIT', 1000)
        celery.group(send_push_notification_group.s(
            notification_id, offset, limit)
            for offset in range(0, count, limit)).delay()
예제 #7
0
    def test_get_filtered_devices_queryset_on_type(self):
        notification = PushNotification.objects.create(
            title='test',
            payload=self.payload,
            active=PushNotification.PUSH_ACTIVE,
            sent=PushNotification.PUSH_NOT_SENT,
            filter_type=Device.DEVICE_TYPE_IOS)

        for _ in range(0, 3):
            Device.objects.create(key='TEST_DEVICE_KEY',
                                  type=Device.DEVICE_TYPE_IOS)

        for _ in range(0, 10):
            Device.objects.create(key='TEST_DEVICE_KEY',
                                  type=Device.DEVICE_TYPE_ANDROID)

        devices = get_filtered_devices_queryset(notification)
        self.assertEqual(devices.count(), 3)
예제 #8
0
    def test_get_filtered_devices_queryset_on_type(self):
        notification = PushNotification.objects.create(
            title='test',
            payload=self.payload,
            active=PushNotification.PUSH_ACTIVE,
            sent=PushNotification.PUSH_NOT_SENT,
            filter_type=Device.DEVICE_TYPE_IOS
        )

        for i in range(0, 3):
            Device.objects.create(
                key='TEST_DEVICE_KEY_{}'.format(i),
                type=Device.DEVICE_TYPE_IOS
            )

        for i in range(0, 10):
            Device.objects.create(
                key='TEST_DEVICE_KEY_{}'.format(i),
                type=Device.DEVICE_TYPE_ANDROID
            )

        devices = get_filtered_devices_queryset(notification.to_dict())
        self.assertEqual(devices.count(), 3)