コード例 #1
0
    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()
コード例 #2
0
 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