From 35430e9a9f4885fbf04d8377531a9dab100423f9 Mon Sep 17 00:00:00 2001 From: Ben Thorner Date: Wed, 8 Sep 2021 12:59:59 +0100 Subject: [PATCH] Refactor custom validation into own function This sets a pattern for adding another in the next commits. --- app/v2/broadcast/post_broadcast.py | 35 ++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/app/v2/broadcast/post_broadcast.py b/app/v2/broadcast/post_broadcast.py index ae5f0823d..0a04bd26d 100644 --- a/app/v2/broadcast/post_broadcast.py +++ b/app/v2/broadcast/post_broadcast.py @@ -41,27 +41,12 @@ def create_broadcast(): broadcast_json = cap_xml_to_dict(cap_xml) validate(broadcast_json, post_broadcast_schema) + _validate_template(broadcast_json) polygons = Polygons(list(chain.from_iterable(( area['polygons'] for area in broadcast_json['areas'] )))) - template = BroadcastMessageTemplate.from_content( - broadcast_json['content'] - ) - - if template.content_too_long: - raise ValidationError( - message=( - f'description must be {template.max_content_count:,.0f} ' - f'characters or fewer' - ) + ( - ' (because it could not be GSM7 encoded)' - if template.non_gsm_characters else '' - ), - status_code=400, - ) - broadcast_message = BroadcastMessage( service_id=authenticated_service.id, content=broadcast_json['content'], @@ -89,3 +74,21 @@ def create_broadcast(): ) return jsonify(broadcast_message.serialize()), 201 + + +def _validate_template(broadcast_json): + template = BroadcastMessageTemplate.from_content( + broadcast_json['content'] + ) + + if template.content_too_long: + raise ValidationError( + message=( + f'description must be {template.max_content_count:,.0f} ' + f'characters or fewer' + ) + ( + ' (because it could not be GSM7 encoded)' + if template.non_gsm_characters else '' + ), + status_code=400, + )