Example #1
0
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
	)
Example #2
0
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
	)
Example #3
0
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)
Example #4
0
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)