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', })
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)
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)
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
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)
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)
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)
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)