Only return active SMS senders

Updated the DAO methods which return a single SMS sender and all SMS senders
to only return the non-archived senders. Changed the error raised in the Admin
interface from a SQLAlchemyError to a BadRequestError.
This commit is contained in:
Katie Smith
2018-04-25 14:23:00 +01:00
parent f810daa3c5
commit 663021e494
7 changed files with 77 additions and 19 deletions

View File

@@ -19,12 +19,16 @@ def insert_service_sms_sender(service, sms_sender):
def dao_get_service_sms_senders_by_id(service_id, service_sms_sender_id):
return ServiceSmsSender.query.filter_by(
id=service_sms_sender_id,
service_id=service_id
service_id=service_id,
archived=False
).one()
def dao_get_sms_senders_by_service_id(service_id):
return ServiceSmsSender.query.filter_by(service_id=service_id).order_by(desc(ServiceSmsSender.is_default)).all()
return ServiceSmsSender.query.filter_by(
service_id=service_id,
archived=False
).order_by(desc(ServiceSmsSender.is_default)).all()
@transactional

View File

@@ -90,14 +90,15 @@ def send_one_off_notification(service_id, post_data):
def get_reply_to_text(notification_type, sender_id, service, template):
reply_to = None
if sender_id:
if notification_type == EMAIL_TYPE:
try:
reply_to = dao_get_reply_to_by_id(service.id, sender_id).email_address
except NoResultFound:
try:
if notification_type == EMAIL_TYPE:
message = 'Reply to email address not found'
raise BadRequestError(message=message)
elif notification_type == SMS_TYPE:
reply_to = dao_get_service_sms_senders_by_id(service.id, sender_id).get_reply_to_text()
reply_to = dao_get_reply_to_by_id(service.id, sender_id).email_address
elif notification_type == SMS_TYPE:
message = 'SMS sender not found'
reply_to = dao_get_service_sms_senders_by_id(service.id, sender_id).get_reply_to_text()
except NoResultFound:
raise BadRequestError(message=message)
else:
reply_to = template.get_reply_to_text()
return reply_to