def test_send_all(self): subscriber = Subscriber.objects.create(sms_number="2096223425") subscriber.save() texter = Texter() ret = texter.send_todays_texts() assert ret[0]["action"] == "showertext" assert TextSend.objects.count() == 1
def test_send_all(self): subscriber = Subscriber.objects.create(sms_number='2096223425') subscriber.save() texter = Texter() ret = texter.send_todays_texts() assert ret[0]['action'] == 'showertext' assert TextSend.objects.count() == 1
def subscribe(sms_number): if not sms_number: return 'You sent nothing yo.' sms_number = filter(str.isdigit, str(sms_number)) subscriber, created = Subscriber.objects.get_or_create( sms_number=sms_number) texter = Texter() if not created: if subscriber.expired: # yay! a renewal subscriber.renew() subscriber.save() thought = get_todays_thought() try: texter.send_text(subscriber, thought.thought_text, thought.post_id) except TwilioRestException as e: subscriber.active = False subscriber.save() logging.error('Exception sending number to: ' + subscriber.sms_number + ' - ' + str(e)) return 'I couldn\'t send a text to that number! (' + str( e.msg) + ')' except DuplicateTextException: # no prob, they already got todays message pass return 'Welcome back! Check your phone!' elif not subscriber.active: # technically they could be blacklisted, but i can't do anything about that return 'Did you reply STOP? Reply START and try again.' else: return 'You\'re already subscribed, yo.' try: message = "Cool! Welcome to ShowerTexts.com! You'll start receiving Shower Texts daily. " \ "Reply STOP at any time if you get sick of them. " \ "Your first one will follow..." texter.send_text(subscriber, message, 'initial') except TwilioRestException as e: logging.error('Exception sending number to: ' + subscriber.sms_number + ' - ' + str(e)) return 'I couldn\'t send a text to that number! (' + str(e.msg) + ')' except DuplicateTextException: logging.warning('Duplicate welcome text.') thought = get_todays_thought() try: texter.send_text(subscriber, thought.thought_text, thought.post_id) except TwilioRestException as e: logging.error('Exception sending number to: ' + subscriber.sms_number + ' - ' + str(e)) return 'I couldn\'t send a text to that number! (' + str(e.msg) + ')' except DuplicateTextException: logging.error('Duplicate initial thought. Shouldn\'t happen - odd.') return 'Cool! Check your phone!'
def test_expired_subscription(self): subscriber = Subscriber.objects.create(sms_number="2096223425") expired_date = timezone.now() - datetime.timedelta(days=settings.EXPIRATION_DAYS + 5) subscriber.date_created = expired_date subscriber.date_renewed = expired_date subscriber.save() texter = Texter() ret = texter.send_todays_texts() assert subscriber.expired assert ret[0]["action"] == "expiration" assert len(ret) == 1 assert TextSend.objects.count() == 1 welcome_message = subscribe("2096223425") assert "Welcome back!" in welcome_message subscriber = Subscriber.objects.get(sms_number="2096223425") assert not subscriber.expired assert TextSend.objects.count() == 2
def test_expired_subscription(self): subscriber = Subscriber.objects.create(sms_number='2096223425') expired_date = timezone.now() - datetime.timedelta( days=settings.EXPIRATION_DAYS + 5) subscriber.date_created = expired_date subscriber.date_renewed = expired_date subscriber.save() texter = Texter() ret = texter.send_todays_texts() assert subscriber.expired assert ret[0]['action'] == 'expiration' assert len(ret) == 1 assert TextSend.objects.count() == 1 welcome_message = subscribe('2096223425') assert 'Welcome back!' in welcome_message subscriber = Subscriber.objects.get(sms_number='2096223425') assert not subscriber.expired assert TextSend.objects.count() == 2
def subscribe(sms_number): if not sms_number: return 'You sent nothing yo.' sms_number = filter(str.isdigit, str(sms_number)) subscriber, created = Subscriber.objects.get_or_create(sms_number=sms_number) texter = Texter() if not created: if subscriber.expired: # yay! a renewal subscriber.renew() subscriber.save() thought = get_todays_thought() try: texter.send_text(subscriber, thought.thought_text, thought.post_id) except TwilioRestException as e: subscriber.active = False subscriber.save() logging.error('Exception sending number to: ' + subscriber.sms_number + ' - ' + str(e)) return 'I couldn\'t send a text to that number! (' + str(e.msg) + ')' except DuplicateTextException: # no prob, they already got todays message pass return 'Welcome back! Check your phone!' elif not subscriber.active: # technically they could be blacklisted, but i can't do anything about that return 'Did you reply STOP? Reply START and try again.' else: return 'You\'re already subscribed, yo.' try: message = "Cool! Welcome to ShowerTexts.com! You'll start receiving Shower Texts daily. " \ "Reply STOP at any time if you get sick of them. " \ "Your first one will follow..." texter.send_text(subscriber, message, 'initial') except TwilioRestException as e: logging.error('Exception sending number to: ' + subscriber.sms_number + ' - ' + str(e)) return 'I couldn\'t send a text to that number! (' + str(e.msg) + ')' except DuplicateTextException: logging.warning('Duplicate welcome text.') thought = get_todays_thought() try: texter.send_text(subscriber, thought.thought_text, thought.post_id) except TwilioRestException as e: logging.error('Exception sending number to: ' + subscriber.sms_number + ' - ' + str(e)) return 'I couldn\'t send a text to that number! (' + str(e.msg) + ')' except DuplicateTextException: logging.error('Duplicate initial thought. Shouldn\'t happen - odd.') return 'Cool! Check your phone!'
def trigger(request): """ A URL which invokes a trigger to send out today's texts. """ texter = Texter() ret = texter.send_todays_texts() return HttpResponse(ret, 'text/plain')
def handle(self, *args, **options): texter = Texter() texter.send_todays_texts()