Merge pull request #4014 from alphagov/support-custom-broadcasts-178986763

Fix areas not showing for custom broadcasts
This commit is contained in:
Ben Thorner
2021-09-08 09:40:42 +01:00
committed by GitHub
6 changed files with 60 additions and 35 deletions

View File

@@ -203,8 +203,8 @@ class CustomBroadcastArea(BaseBroadcastArea):
class CustomBroadcastAreas(SerialisedModelCollection):
model = CustomBroadcastArea
def __init__(self, *, area_ids, polygons):
self.items = area_ids
def __init__(self, *, names, polygons):
self.items = names
self._polygons = polygons
def __getitem__(self, index):

View File

@@ -89,10 +89,9 @@ class BroadcastMessage(JSONModel):
@property
def areas(self):
polygons = self._dict['areas']['simple_polygons']
library_areas = self.get_areas(self.area_ids)
if 'ids' in self._dict['areas']:
library_areas = self.get_areas(self.area_ids)
if library_areas:
if len(library_areas) != len(self.area_ids):
raise RuntimeError(
f'BroadcastMessage has {len(self.area_ids)} areas '
@@ -100,14 +99,19 @@ class BroadcastMessage(JSONModel):
)
return library_areas
return CustomBroadcastAreas(
area_ids=self.area_ids,
polygons=polygons,
)
polygons = self._dict['areas'].get('simple_polygons', [])
if polygons:
return CustomBroadcastAreas(
names=self._dict['areas']['names'],
polygons=polygons,
)
return []
@property
def area_ids(self):
return self._dict['areas']['ids']
return self._dict['areas'].get('ids', [])
@area_ids.setter
def area_ids(self, value):