Esempio n. 1
0
def sender():
    """Render show senders/ add sender page."""

    add_sender_form = forms.AddSenderForm()

    if add_sender_form.validate_on_submit():
        number = utils.normalize_number(add_sender_form.sender_number.data)
        try:
            sender_repo.create_one(number=number)

            # check for numbers with no sender_id
            sender = sender_repo.get_min_sender()
            numbers = number_repo.get_many_by_kwargs(sender_id=None)
            for number in numbers:
                number.sender_id = sender.id
                db.session.add(number)
            db.session.commit()

            flash('Sender added!', 'success')
        except DuplicateError as e:
            flash('Sender already exists!', 'error')
            print e
            pass

        # reset form
        add_sender_form.sender_number.data = None

    senders = sender_repo.get_all()

    return render_template('sender.html',
                           senders=senders,
                           add_sender_form=add_sender_form)
Esempio n. 2
0
def subscription_view(sub_id):
    """Render all numbers in given subscription."""
    subscription = subscription_repo.get_by_id(sub_id)
    if subscription == None:
        flash('Subscription does not exist!', 'error')
        return redirect('/')

    numbers = number_repo.get_many_by_kwargs(subscription_id=sub_id)

    return render_template('subscription_views.html', numbers=numbers)
Esempio n. 3
0
def sender_views(sender_id):
    """Render all numbers associated with given sender."""
    sender = sender_repo.get_by_id(sender_id)
    if sender == None:
        flash('Sender does not exist!', 'error')
        return redirect('/')

    numbers = number_repo.get_many_by_kwargs(sender_id=sender_id)

    return render_template('sender_views.html', numbers=numbers)
Esempio n. 4
0
def subscription_view(sub_id):
	"""Render all numbers in given subscription."""
	subscription = subscription_repo.get_by_id(sub_id)
	if subscription == None:
		flash('Subscription does not exist!', 'error')
		return redirect('/')

	numbers = number_repo.get_many_by_kwargs(
		subscription_id=sub_id
	)

	return render_template(
		'subscription_views.html',
		numbers=numbers
	)
Esempio n. 5
0
def sender_views(sender_id):
	"""Render all numbers associated with given sender."""
	sender = sender_repo.get_by_id(sender_id)
	if sender == None:
		flash('Sender does not exist!', 'error')
		return redirect('/')

	numbers = number_repo.get_many_by_kwargs(
		sender_id=sender_id
	)

	return render_template(
		'sender_views.html',
		numbers=numbers
	)
Esempio n. 6
0
def send_to_subscription_async(message_id, subscription_id, message_text):
    """Schedules a message to be sent at a later time by a Celery task."""
    senders = sender_repo.get_all()
    twilio_dispatcher = TwilioDispatcher()

    for sender in senders:

        numbers = number_repo.get_many_by_kwargs(
            subscription_id=subscription_id,
            sender_id=sender.id
        )

        for number in numbers:
            try:
                twilio_dispatcher.send_to_number(number.number, message_text)

            except (TwilioRestException, NotFoundError) as e:
                pass

    # update message entity's sent_at
    message_repo.update_by_id(message_id, sent_at=datetime.utcnow())
Esempio n. 7
0
    def send_to_subscription(self, message):
        """Send one message to every number in a subscription."""
        senders = sender_repo.get_all()
        failed = {}

        for sender in senders:
            # get numbers associated with each sender
            # and has given subscription_id
            numbers = number_repo.get_many_by_kwargs(
                subscription_id=message.subscription_id,
                sender_id=sender.id
            )

            for number in numbers:
                try:
                    self.send_to_number(number.number, message.text)

                except (TwilioRestException, NotFoundError) as e:
                    failed[number.number] = str(e)
                    pass

        return failed
Esempio n. 8
0
def sender():
	"""Render show senders/ add sender page."""

	add_sender_form = forms.AddSenderForm()

	if add_sender_form.validate_on_submit():
		number = utils.normalize_number(add_sender_form.sender_number.data)
		try:
			sender_repo.create_one(
				number=number
			)

			# check for numbers with no sender_id
			sender = sender_repo.get_min_sender()
			numbers = number_repo.get_many_by_kwargs(
				sender_id=None
			)
			for number in numbers:
				number.sender_id = sender.id
				db.session.add(number)
			db.session.commit()

			flash('Sender added!', 'success')
		except DuplicateError as e:
			flash('Sender already exists!', 'error')
			print e
			pass

		# reset form
		add_sender_form.sender_number.data = None

	senders = sender_repo.get_all()

	return render_template(
		'sender.html',
		senders=senders,
		add_sender_form=add_sender_form
	)