def schedule(): """Render schedule message view.""" schedule_message_form = forms.ScheduleMessageForm() if schedule_message_form.validate_on_submit(): message_text = schedule_message_form.message_text.data subscription_id = int(schedule_message_form.subscription.data) send_time = schedule_message_form.send_time.data # fail if given send_time is already passed if send_time < datetime.utcnow(): flash('DateTime is already passed!', 'error') return redirect('/schedule') # create message entity with None as sent_at message = message_repo.create_one( text=message_text, subscription_id=subscription_id, sent_at=None ) try: send_to_subscription_async.apply_async( args=[message.id, subscription_id, message_text], eta=send_time ) except ConnectionError: flash('Redis server not running at port 6379!', 'error') return redirect('/schedule') flash('Message scheduled!', 'success') # reset form schedule_message_form.message_text.data = None schedule_message_form.subscription.data = 1 schedule_message_form.send_time.data = None scheduled_messages = message_repo.get_scheduled_messages() return render_template( 'schedule.html', schedule_message_form=schedule_message_form, scheduled_messages=scheduled_messages )
def send(): """Render sms sending page.""" send_message_form = forms.SendMessageForm() if send_message_form.validate_on_submit(): # check if there are any active senders first senders = sender_repo.get_all() if len(senders) == 0: # fail early if no senders flash('No senders available!', 'error') return redirect('/send') subscription_id = int(send_message_form.subscription.data) message_text = send_message_form.message_text.data # create Message entity new_message = message_repo.create_one( text=message_text, sent_at=datetime.utcnow(), subscription_id=subscription_id ) twilio_dispatcher = TwilioDispatcher() failed = twilio_dispatcher.send_to_subscription(new_message) if len(failed) != 0: flash('Following numbers failed to be sent to:', 'error') for number, exception in failed.iteritems(): flash('{num} : {reason}'.format( num=number, reason=exception ), 'error') send_message_form.message_text.data = None send_message_form.subscription.data = None flash('Message sent!', 'success') messages = message_repo.get_sent_messages() return render_template( 'send.html', messages=messages, send_message_form=send_message_form )
def schedule(): """Render schedule message view.""" schedule_message_form = forms.ScheduleMessageForm() if schedule_message_form.validate_on_submit(): message_text = schedule_message_form.message_text.data subscription_id = int(schedule_message_form.subscription.data) send_time = schedule_message_form.send_time.data # fail if given send_time is already passed if send_time < datetime.utcnow(): flash('DateTime is already passed!', 'error') return redirect('/schedule') # create message entity with None as sent_at message = message_repo.create_one(text=message_text, subscription_id=subscription_id, sent_at=None) try: send_to_subscription_async.apply_async( args=[message.id, subscription_id, message_text], eta=send_time) except ConnectionError: flash('Redis server not running at port 6379!', 'error') return redirect('/schedule') flash('Message scheduled!', 'success') # reset form schedule_message_form.message_text.data = None schedule_message_form.subscription.data = 1 schedule_message_form.send_time.data = None scheduled_messages = message_repo.get_scheduled_messages() return render_template('schedule.html', schedule_message_form=schedule_message_form, scheduled_messages=scheduled_messages)
def send(): """Render sms sending page.""" send_message_form = forms.SendMessageForm() if send_message_form.validate_on_submit(): # check if there are any active senders first senders = sender_repo.get_all() if len(senders) == 0: # fail early if no senders flash('No senders available!', 'error') return redirect('/send') subscription_id = int(send_message_form.subscription.data) message_text = send_message_form.message_text.data # create Message entity new_message = message_repo.create_one(text=message_text, sent_at=datetime.utcnow(), subscription_id=subscription_id) twilio_dispatcher = TwilioDispatcher() failed = twilio_dispatcher.send_to_subscription(new_message) if len(failed) != 0: flash('Following numbers failed to be sent to:', 'error') for number, exception in failed.iteritems(): flash('{num} : {reason}'.format(num=number, reason=exception), 'error') send_message_form.message_text.data = None send_message_form.subscription.data = None flash('Message sent!', 'success') messages = message_repo.get_sent_messages() return render_template('send.html', messages=messages, send_message_form=send_message_form)