def receive_message(self, incoming_sms: IncomingSms): phone_number = incoming_sms.from_number try: charity_user = CharityUser.objects.get(phone_number=phone_number) except: charity_user = CharityUser(phone_number=phone_number) charity_user.save() message = Message() message.status = MessageStatus.DELIVERED message.message = incoming_sms.body message.charity_user = charity_user message.save() # fix type here define __str__ message = str(message.message) match_object = re.search("^subscribe (.*)", message) if match_object: topic_name = match_object.group(1) topic = list(NewsletterTopic.objects.filter(name=topic_name))[0] charity_user.subscribed_newsletter_topics.add(topic) charity_user.save() return MessagingResponse() match_object = re.search("^unsubscribe (.*)", message) if match_object: topic_name = match_object.group(1) topic = list(NewsletterTopic.objects.filter(name=topic_name))[0] charity_user.subscribed_newsletter_topics.remove(topic) charity_user.save() return MessagingResponse() return MessagingResponse()
def create(self, validated_data): data = { k: v for k, v in validated_data.items() if k != "message_user_id" } message = Message(**data) message.charity_user = CharityUser.objects.get( pk=validated_data["message_user_id"]) return message