Exemplo n.º 1
0
    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        if text_data_json['method'] == 'ADD_MESSAGE':

            text_data_json['user'] = self.user.id  # добовляем данные
            text_data_json['chat_room'] = self.chat.id
            serializer = MessageSerializer(data=text_data_json)

            if serializer.is_valid():
                print('добовляю сообщение')
                serializer.save()
                async_to_sync(self.channel_layer.group_send)(
                    self.room_group_name, {
                        'data': serializer.data,
                        'type': 'chat_message',
                        'method': 'ADD_MESSAGE',
                    })
        if text_data_json['method'] == 'REDACT_MESSAGE':

            text_data_json['user'] = self.user.id  # добовляем данные
            text_data_json['chat_room'] = self.chat.id

            message = Message_chat.objects.filter(id=text_data_json['pk'],
                                                  user=self.user)
            if message.exists() == False:
                raise DenyConnection("Нет доступа")  # нет доступа
            else:
                message = message.get()

            serializer = MessageSerializer(message, data=text_data_json)
            if serializer.is_valid():
                serializer.save()
                async_to_sync(self.channel_layer.group_send)(
                    self.room_group_name, {
                        'data': serializer.data,
                        'type': 'chat_message',
                        'method': 'REDACT_MESSAGE',
                    })
        if text_data_json['method'] == 'DELETE_MESSAGE':

            message = Message_chat.objects.filter(id=text_data_json['pk'],
                                                  user=self.user)
            if message.exists() == False:
                raise DenyConnection("Нет доступа")  # нет доступа
            else:
                message = message.get()

            message.delete()
            async_to_sync(self.channel_layer.group_send)(
                self.room_group_name, {
                    'data': {
                        'id': text_data_json['pk']
                    },
                    'type': 'chat_message',
                    'method': 'DELETE_MESSAGE',
                })
Exemplo n.º 2
0
def add_message(request):
    phone_number = request.POST.get("phone_number", "")
    if not check_token(request.POST.get("token", ""), phone_number):
        return Response(data={"detail": "unauthorized"}, status=status.HTTP_401_UNAUTHORIZED)
    serializer = MessageSerializer(data=request.data)
    if serializer.is_valid():
        person = Person.objects.get(phone_number=phone_number)
        serializer.save(commit_person_id=phone_number, commit_location=person.location)
        return Response(status=status.HTTP_204_NO_CONTENT)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 3
0
def add_message(request):
    phone_number = request.POST.get("phone_number", '')
    if not check_token(request.POST.get("token", ""), phone_number):
        return Response(data={'detail': 'unauthorized'},
                        status=status.HTTP_401_UNAUTHORIZED)
    serializer = MessageSerializer(data=request.data)
    if serializer.is_valid():
        person = Person.objects.get(phone_number=phone_number)
        serializer.save(commit_person_id=phone_number,
                        commit_location=person.location)
        return Response(status=status.HTTP_204_NO_CONTENT)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 4
0
 def publish(self, request, data, *args, **kwargs):
     if "user" in request.channel_session:
         band_id = kwargs.get("band_id")
         serializer = MessageSerializer(data=data)
         serializer.is_valid(raise_exception=True)
         serializer.save(
             author=User.objects.get(pk=request.channel_session["user"]), band=Band.objects.get(pk=band_id)
         )
         group = Group(self.CHAT_GROUP_TEMPLATE % band_id)
         self.route_send(group, serializer.data)
     else:
         raise PermissionDenied
Exemplo n.º 5
0
    def post(self, request, **kwargs):

        # Check correct arguments provided
        if not 'requestedDeviceRegistrationID' in kwargs:
            return errors.incorrect_arguments
        if not (hasattr(request, "data") & isinstance(request.data, object)):
            return errors.incorrect_arguments
        if not (("recipient" in request.data) & isinstance(request.data["recipient"], str)):
            return errors.incorrect_arguments
        if not (("message" in request.data) & isinstance(request.data["message"], str)):
            return errors.incorrect_arguments

        ownUser = self.request.user
        recipientUsername = request.data["recipient"]
        try:
            messageData = request.data["message"]
        except:
            return errors.incorrect_arguments
        
        # Check device exists and owned by user
        if not hasattr(ownUser, "device"):
            return errors.no_device

        # Check device ID has not changed
        if int(kwargs['requestedDeviceRegistrationID']) != ownUser.device.registrationId:
            return errors.device_changed

        # Check repipient user exists
        try:
            recipientUser = User.objects.get(username=recipientUsername)
        except:
            return errors.no_recipient

        # Check recipient device exists
        if not hasattr(recipientUser, "device"):
            return errors.no_recipient_device
        recipientDevice = recipientUser.device

        # Check recipient device registrationId matches that sent in message
        print(recipientUser.device.registrationId)
        print(json.loads(messageData)['registrationId'])
        if not (recipientUser.device.registrationId == int(json.loads(messageData)['registrationId'])):
            return errors.recipient_identity_changed

        serializer = MessageSerializer(data={'content': messageData}, context={'senderDevice': ownUser.device, 'recipientDevice': recipientDevice})
        if not serializer.is_valid():
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        else: 
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
Exemplo n.º 6
0
def send_message_view(request):
    contacts = request.query_params.get('contacts')
    name = request.query_params.get('name')
    message = request.query_params.get('message')
    if (contacts is None) or (name is None) or (message is None):
        return Response({"error": "contacts, name or message are missing."},
                        status=status.HTTP_400_BAD_REQUEST)
    serializer = MessageSerializer(data={
        "contacts": contacts,
        "name": name,
        "message": message
    })
    if not serializer.is_valid():
        return Response({"error": "Incorrect fields."},
                        status=status.HTTP_400_BAD_REQUEST)
    # return Response(None, status=status.HTTP_404_NOT_FOUND)
    serializer.save()
    return Response(1, status=status.HTTP_201_CREATED)
Exemplo n.º 7
0
def message_list(request):
    """
    Return a user's messages, or post a message from one user to another
    """
    if request.method == 'GET':
        messages = request.user.messages_received
        serializer = MessageSerializer(messages, many=True)
        return Response(serializer.data)

    if request.method == 'POST':
        serializer = MessageSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(sender=request.user)
            message = serializer.data['message']
            receiver_id = serializer.data['receiver']
            reciever = User.objects.filter(id=receiver_id).first()
            sendMessage(message, request.user.phone_number, reciever.phone_number)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 8
0
 def post(self, request):
     serializer = MessageSerializer(data=request.data)
     if serializer.is_valid():
         mes = serializer.save()
         server = smtplib.SMTP('smtp.gmail.com', 587)
         server.ehlo()
         server.starttls()
         server.ehlo()
         server.login(mes.sender, mes.password)
         server.sendmail(mes.sender, mes.dest, mes.text)
         print(mes.text)
         server.quit()
         print(serializer.data.get('sender'))
         if mes:
             return Response(serializer.data,
                             status=status.HTTP_201_CREATED)
     return Response(serializer.errors)