Add DAO function and endpoint for archiving SMS senders

Added a new DAO function which archives SMS senders by setting
archived to True. This raises an ArchiveValidationError, if
trying to archive a default SMS sender or an inbound number.

Added a new endpoint for archiving SMS senders.
This commit is contained in:
Katie Smith
2018-04-26 09:05:17 +01:00
parent 5f43fe23a7
commit 472b86f3f4
4 changed files with 118 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ from sqlalchemy import desc
from app import db
from app.dao.dao_utils import transactional
from app.exceptions import ArchiveValidationError
from app.models import ServiceSmsSender
@@ -75,6 +76,24 @@ def update_existing_sms_sender_with_inbound_number(service_sms_sender, sms_sende
return service_sms_sender
@transactional
def archive_sms_sender(service_id, sms_sender_id):
sms_sender_to_archive = ServiceSmsSender.query.filter_by(
id=sms_sender_id,
service_id=service_id
).one()
if sms_sender_to_archive.inbound_number_id:
raise ArchiveValidationError("You cannot delete an inbound number")
if sms_sender_to_archive.is_default:
raise ArchiveValidationError("You cannot delete a default sms sender")
sms_sender_to_archive.archived = True
db.session.add(sms_sender_to_archive)
return sms_sender_to_archive
def _get_existing_default(service_id):
sms_senders = dao_get_sms_senders_by_service_id(service_id=service_id)
if sms_senders:

View File

@@ -20,6 +20,7 @@ from app.dao.api_key_dao import (
from app.dao.inbound_numbers_dao import dao_allocate_number_for_service
from app.dao.organisation_dao import dao_get_organisation_by_service_id
from app.dao.service_sms_sender_dao import (
archive_sms_sender,
dao_add_sms_sender_for_service,
dao_update_service_sms_sender,
dao_get_service_sms_senders_by_id,
@@ -685,6 +686,13 @@ def update_service_sms_sender(service_id, sms_sender_id):
return jsonify(new_sms_sender.serialize()), 200
@service_blueprint.route('/<uuid:service_id>/sms-sender/<uuid:sms_sender_id>/archive', methods=['POST'])
def delete_service_sms_sender(service_id, sms_sender_id):
sms_sender = archive_sms_sender(service_id, sms_sender_id)
return jsonify(data=sms_sender.serialize()), 200
@service_blueprint.route('/<uuid:service_id>/sms-sender/<uuid:sms_sender_id>', methods=['GET'])
def get_service_sms_sender_by_id(service_id, sms_sender_id):
sms_sender = dao_get_service_sms_senders_by_id(service_id=service_id,