Switch "areas" field to "areas_2" format

The Admin app is now temporarily using the "areas_2" field while
we migrate "areas" to the new format [1].

[1]: https://github.com/alphagov/notifications-admin/pull/4004
This commit is contained in:
Ben Thorner
2021-08-27 13:22:54 +01:00
parent a7d92b9058
commit ec1171f85c
8 changed files with 49 additions and 66 deletions

View File

@@ -13,7 +13,7 @@ create_broadcast_message_schema = {
'personalisation': {'type': 'object'},
'starts_at': {'type': 'string', 'format': 'datetime'},
'finishes_at': {'type': 'string', 'format': 'datetime'},
'areas': {"type": "array", "items": {"type": "string"}},
'areas': {'type': 'object'},
'areas_2': {'type': 'object'},
'simple_polygons': {"type": "array", "items": {"type": "array"}},
'content': {'type': 'string', 'minLength': 1},
@@ -42,7 +42,7 @@ update_broadcast_message_schema = {
'personalisation': {'type': 'object'},
'starts_at': {'type': 'string', 'format': 'datetime'},
'finishes_at': {'type': 'string', 'format': 'datetime'},
'areas': {"type": "array", "items": {"type": "string"}},
'areas': {'type': 'object'},
'areas_2': {'type': 'object'},
'simple_polygons': {"type": "array", "items": {"type": "array"}},
},

View File

@@ -133,27 +133,12 @@ def create_broadcast_message(service_id):
content = str(temporary_template)
reference = data['reference']
# TEMPORARY: while we repurpose "areas"
areas = {}
areas_2 = data.get("areas_2", {})
if "areas" in data:
areas["areas"] = data["areas"]
areas["ids"] = data["areas"]
if "simple_polygons" in data:
areas["simple_polygons"] = data["simple_polygons"]
if "ids" in areas_2:
areas["areas"] = areas_2["ids"]
areas["ids"] = areas_2["ids"]
if "simple_polygons" in areas_2:
areas["simple_polygons"] = areas_2["simple_polygons"]
broadcast_message = BroadcastMessage(
service_id=service.id,
template_id=template_id,
template_version=template.version if template else None,
personalisation=personalisation,
areas=areas,
areas=data.get("areas", data.get("areas_2", {})), # TEMPORARY: while we repurpose "areas"
status=BroadcastStatusType.DRAFT,
starts_at=_parse_nullable_datetime(data.get('starts_at')),
finishes_at=_parse_nullable_datetime(data.get('finishes_at')),
@@ -186,19 +171,7 @@ def update_broadcast_message(service_id, broadcast_message_id):
)
# TEMPORARY: while we repurpose "areas"
areas = {}
areas_2 = data.get("areas_2", {})
if "areas" in data:
areas["areas"] = data["areas"]
areas["ids"] = data["areas"]
if "simple_polygons" in data:
areas["simple_polygons"] = data["simple_polygons"]
if "ids" in areas_2:
areas["areas"] = areas_2["ids"]
areas["ids"] = areas_2["ids"]
if "simple_polygons" in areas_2:
areas["simple_polygons"] = areas_2["simple_polygons"]
areas = data.get("areas", data.get("areas_2", {}))
if ('ids' in areas and 'simple_polygons' not in areas) or ('ids' not in areas and 'simple_polygons' in areas):
raise InvalidRequest(

View File

@@ -2337,9 +2337,9 @@ class BroadcastMessage(db.Model):
def serialize(self):
# TEMPORARY: while we repurpose "areas"
areas_2 = dict(self.areas)
areas_2["simple_polygons"] = areas_2.get("simple_polygons", [])
areas_2["ids"] = areas_2.pop("areas", areas_2.get("ids", []))
areas = dict(self.areas)
areas["simple_polygons"] = areas.get("simple_polygons", [])
areas["ids"] = areas.pop("areas", areas.get("ids", []))
return {
'id': str(self.id),
@@ -2354,9 +2354,8 @@ class BroadcastMessage(db.Model):
'content': self.content,
# TEMPORARY: switch to this so we can repurpose "areas"
'areas_2': areas_2,
'areas': areas_2["ids"],
'simple_polygons': areas_2["simple_polygons"],
'areas_2': areas,
'areas': areas,
'status': self.status,

View File

@@ -67,9 +67,6 @@ def create_broadcast():
content=broadcast_json['content'],
reference=broadcast_json['reference'],
areas={
'areas': [
area['name'] for area in broadcast_json['areas']
],
'names': [
area['name'] for area in broadcast_json['areas']
],