mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-19 05:58:53 -04:00
Merge pull request #2965 from alphagov/send-polygons-to-api
Persist simple polygons in the db.
This commit is contained in:
@@ -14,6 +14,7 @@ create_broadcast_message_schema = {
|
||||
'starts_at': {'type': 'string', 'format': 'datetime'},
|
||||
'finishes_at': {'type': 'string', 'format': 'datetime'},
|
||||
'areas': {"type": "array", "items": {"type": "string"}},
|
||||
'simple_polygons': {"type": "array", "items": {"type": "array"}},
|
||||
},
|
||||
'required': ['template_id', 'service_id', 'created_by'],
|
||||
'additionalProperties': False
|
||||
@@ -29,6 +30,7 @@ update_broadcast_message_schema = {
|
||||
'starts_at': {'type': 'string', 'format': 'datetime'},
|
||||
'finishes_at': {'type': 'string', 'format': 'datetime'},
|
||||
'areas': {"type": "array", "items": {"type": "string"}},
|
||||
'simple_polygons': {"type": "array", "items": {"type": "array"}},
|
||||
},
|
||||
'required': [],
|
||||
'additionalProperties': False
|
||||
|
||||
@@ -59,6 +59,11 @@ def _update_broadcast_message(broadcast_message, new_status, updating_user):
|
||||
f'User {updating_user.id} cannot approve their own broadcast_message {broadcast_message.id}',
|
||||
status_code=400
|
||||
)
|
||||
elif not broadcast_message.areas:
|
||||
raise InvalidRequest(
|
||||
f'broadcast_message {broadcast_message.id} has no selected areas and so cannot be broadcasted.',
|
||||
status_code=400
|
||||
)
|
||||
else:
|
||||
broadcast_message.approved_at = datetime.utcnow()
|
||||
broadcast_message.approved_by = updating_user
|
||||
@@ -101,7 +106,7 @@ def create_broadcast_message(service_id):
|
||||
template_id=template.id,
|
||||
template_version=template.version,
|
||||
personalisation=data.get('personalisation', {}),
|
||||
areas=data.get('areas', []),
|
||||
areas={"areas": data.get("areas", []), "simple_polygons": data.get("simple_polygons", [])},
|
||||
status=BroadcastStatusType.DRAFT,
|
||||
starts_at=_parse_nullable_datetime(data.get('starts_at')),
|
||||
finishes_at=_parse_nullable_datetime(data.get('finishes_at')),
|
||||
@@ -127,14 +132,20 @@ def update_broadcast_message(service_id, broadcast_message_id):
|
||||
status_code=400
|
||||
)
|
||||
|
||||
if ('areas' in data and 'simple_polygons' not in data) or ('areas' not in data and 'simple_polygons' in data):
|
||||
raise InvalidRequest(
|
||||
f'Cannot update broadcast_message {broadcast_message.id}, areas or polygons are missing.',
|
||||
status_code=400
|
||||
)
|
||||
|
||||
if 'personalisation' in data:
|
||||
broadcast_message.personalisation = data['personalisation']
|
||||
if 'starts_at' in data:
|
||||
broadcast_message.starts_at = _parse_nullable_datetime(data['starts_at'])
|
||||
if 'finishes_at' in data:
|
||||
broadcast_message.finishes_at = _parse_nullable_datetime(data['finishes_at'])
|
||||
if 'areas' in data:
|
||||
broadcast_message.areas = data['areas']
|
||||
if 'areas' in data and 'simple_polygons' in data:
|
||||
broadcast_message.areas = {"areas": data["areas"], "simple_polygons": data["simple_polygons"]}
|
||||
|
||||
dao_save_object(broadcast_message)
|
||||
|
||||
|
||||
@@ -2263,7 +2263,8 @@ class BroadcastMessage(db.Model):
|
||||
'template_name': self.template.name,
|
||||
|
||||
'personalisation': self.personalisation,
|
||||
'areas': self.areas,
|
||||
'areas': self.areas.get("areas", []),
|
||||
'simple_polygons': self.areas.get("simple_polygons", []),
|
||||
|
||||
'status': self.status,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user