def delete(self, request, name=None, sub_type=None, device_id=None): """ Unsubscribe from a channel """ channels = Channel.objects.filter(name=name) if not channels: return Response(status=status.HTTP_404_NOT_FOUND) if not name is None and not device_id is None: result = status.HTTP_200_OK channel = channels[0] subManager = SubscriberManager() sub_token = subManager.get_subscription(channel.name, sub_type, device_id) if not sub_token is None: subManager.unsubscribe(channel.name, device_id, sub_type) # Dec num subscriptions channel.subscriptions = channel.subscriptions - 1 channel.save() else: # Verifica che non si tratti di una subscription reqs = ChannelSubscribeRequest.objects.filter( device_id=device_id).filter(channel=channel) if reqs.count() > 0: reqs[0].delete() else: result = status.HTTP_404_NOT_FOUND return Response(status=result) else: return Response(status=status.HTTP_400_BAD_REQUEST)
def unsubscribe_channel(channel, device_id): """ Unsubscribe a device from a channel :param channel: :param device_id: """ subscriber = Subscriber.objects.get(device_id=device_id) result = False if not channel is None and not device_id is None: result = True subManager = SubscriberManager() sub_token = subManager.get_subscription(channel.name, subscriber.sub_type, subscriber.device_id) if not sub_token is None: subManager.unsubscribe(channel.name, subscriber.device_id, subscriber.sub_type) # Dec num subscriptions channel.subscriptions = channel.subscriptions - 1 channel.save() else: # Verifica che non si tratti di una subscription nel caso la cancella reqs = ChannelSubscribeRequest.objects.filter(device_id=subscriber.device_id).filter(channel=channel) if reqs.count() > 0: reqs[0].delete() else: result = False return result
def unsubscribe_channel(channel, device_id): """ Unsubscribe a device from a channel :param channel: :param device_id: """ subscriber = Subscriber.objects.get(device_id=device_id) result = False if not channel is None and not device_id is None: result = True subManager = SubscriberManager() sub_token = subManager.get_subscription(channel.name, subscriber.sub_type, subscriber.device_id) if not sub_token is None: subManager.unsubscribe(channel.name, subscriber.device_id, subscriber.sub_type) # Dec num subscriptions channel.subscriptions = channel.subscriptions - 1 channel.save() else: # Verifica che non si tratti di una subscription nel caso la cancella reqs = ChannelSubscribeRequest.objects.filter( device_id=subscriber.device_id).filter(channel=channel) if reqs.count() > 0: reqs[0].delete() else: result = False return result
def delete(self, request, name=None, sub_type=None, device_id=None): """ Unsubscribe from a channel """ channels = Channel.objects.filter(name=name) if not channels: return Response(status=status.HTTP_404_NOT_FOUND) if not name is None and not device_id is None: result = status.HTTP_200_OK channel = channels[0] subManager = SubscriberManager() sub_token = subManager.get_subscription(channel.name, sub_type, device_id) if not sub_token is None: subManager.unsubscribe(channel.name, device_id, sub_type) # Dec num subscriptions channel.subscriptions = channel.subscriptions - 1 channel.save() else: # Verifica che non si tratti di una subscription reqs = ChannelSubscribeRequest.objects.filter(device_id=device_id).filter(channel=channel) if reqs.count() > 0: reqs[0].delete() else: result = status.HTTP_404_NOT_FOUND return Response(status=result) else: return Response(status=status.HTTP_400_BAD_REQUEST)