When an inbound number is allocated insert or update a row in service_sms_senders.

This commit is contained in:
Rebecca Law
2017-09-12 12:09:32 +01:00
parent f624f4f033
commit 5439b01a6e
4 changed files with 37 additions and 11 deletions

View File

@@ -4,23 +4,29 @@ from app.models import ServiceSmsSender
@transactional @transactional
def insert_or_update_service_sms_sender(service, sms_sender): def insert_or_update_service_sms_sender(service, sms_sender, inbound_number_id=None):
result = db.session.query( result = db.session.query(
ServiceSmsSender ServiceSmsSender
).filter( ).filter(
ServiceSmsSender.service_id == service.id ServiceSmsSender.service_id == service.id
).update( ).update(
{'sms_sender': sms_sender} {'sms_sender': sms_sender,
'inbound_number_id': inbound_number_id
}
) )
if result == 0: if result == 0:
new_sms_sender = ServiceSmsSender(sms_sender=sms_sender, new_sms_sender = ServiceSmsSender(sms_sender=sms_sender,
service=service, service=service,
is_default=True is_default=True,
inbound_number_id=inbound_number_id
) )
db.session.add(new_sms_sender) db.session.add(new_sms_sender)
def insert_service_sms_sender(service, sms_sender): def insert_service_sms_sender(service, sms_sender):
"""
This method is called from create_service which is wrapped in a transaction.
"""
new_sms_sender = ServiceSmsSender(sms_sender=sms_sender, new_sms_sender = ServiceSmsSender(sms_sender=sms_sender,
service=service, service=service,
is_default=True is_default=True

View File

@@ -7,6 +7,8 @@ from app.dao.inbound_numbers_dao import (
dao_set_inbound_number_to_service, dao_set_inbound_number_to_service,
dao_set_inbound_number_active_flag dao_set_inbound_number_active_flag
) )
from app.dao.service_sms_sender_dao import insert_or_update_service_sms_sender
from app.dao.services_dao import dao_fetch_service_by_id
from app.errors import InvalidRequest, register_errors from app.errors import InvalidRequest, register_errors
inbound_number_blueprint = Blueprint('inbound_number', __name__, url_prefix='/inbound-number') inbound_number_blueprint = Blueprint('inbound_number', __name__, url_prefix='/inbound-number')
@@ -42,6 +44,8 @@ def post_allocate_inbound_number(service_id):
if len(available_numbers) > 0: if len(available_numbers) > 0:
dao_set_inbound_number_to_service(service_id, available_numbers[0]) dao_set_inbound_number_to_service(service_id, available_numbers[0])
service = dao_fetch_service_by_id(service_id)
insert_or_update_service_sms_sender(service, available_numbers[0].number, available_numbers[0].id)
return jsonify(), 204 return jsonify(), 204
else: else:
raise InvalidRequest('No available inbound numbers', status_code=400) raise InvalidRequest('No available inbound numbers', status_code=400)

View File

@@ -202,7 +202,8 @@ class ServiceSchema(BaseSchema):
'template_statistics', 'template_statistics',
'service_provider_stats', 'service_provider_stats',
'service_notification_stats', 'service_notification_stats',
'service_sms_senders' 'service_sms_senders',
'monthly_billing'
) )
strict = True strict = True
@@ -254,7 +255,8 @@ class DetailedServiceSchema(BaseSchema):
'service_provider_stats', 'service_provider_stats',
'service_notification_stats', 'service_notification_stats',
'organisation', 'organisation',
'service_sms_senders' 'service_sms_senders',
'monthly_billing'
) )

View File

@@ -1,10 +1,5 @@
import pytest
from flask import url_for
import json
from app.models import InboundNumber
from app.dao.inbound_numbers_dao import dao_get_inbound_number_for_service from app.dao.inbound_numbers_dao import dao_get_inbound_number_for_service
from app.models import ServiceSmsSender
from tests.app.db import create_service, create_inbound_number from tests.app.db import create_service, create_inbound_number
@@ -115,3 +110,22 @@ def test_rest_set_inbound_number_active_flag_off(
inbound_number_from_db = dao_get_inbound_number_for_service(service.id) inbound_number_from_db = dao_get_inbound_number_for_service(service.id)
assert not inbound_number_from_db.active assert not inbound_number_from_db.active
def test_allocate_inbound_number_insert_update_service_sms_sender(
admin_request, notify_db_session
):
service = create_service()
inbound_number = create_inbound_number(number='123')
admin_request.post(
'inbound_number.post_allocate_inbound_number',
_expected_status=204,
service_id=service.id
)
service_sms_senders = ServiceSmsSender.query.all()
assert len(service_sms_senders) == 1
assert service_sms_senders[0].sms_sender == inbound_number.number
assert service_sms_senders[0].inbound_number_id == inbound_number.id
assert service_sms_senders[0].is_default